Wog Editor 0.5 is out

You are viewing a static copy of the old 2DBoy forum, which closed in 2010. It is preserved here for historical interest, but it is not possible to reply to topics. For more recent discussion about World of Goo, visit our new forum.
Wog Editor 0.5 is out zark9212/07/2008 - 16:29

Main info page: http://apps.sourceforge.net/mediawiki/wogedit/

This release brings a long awaited feature: level view interaction. It is now possible to move elements directly in the level view.

What's new in version 0.5.0:
* Level view selection is now a tool.
* Selection tool in level view can cycle through item under mouse if Alt key is pressed
* Added pan tool, also available in selection tool by middle clicking or holding left & right buttons
* Added move/rotate tool for most elements, and resize tool for circle.
* Geometry tag and levelExit filter now provides auto-completion
* All angles are now displayed in degrees
* 'scalex', 'scaley' attributes are now displayed as a single 'scale' attribute
* 'x', 'y' attributes are now displayed as a single 'pos' or 'center' attribute
* 'width', 'height' attributes are now displayed as a single 'size' attribute

Known bugs:
- rotating rectangle works incorrectly when it is inside a compositegeom.
- rectangle/circle on display either pixmap or geometry shape.

Roadmap for next version:
- Adds rotate to all elements
- Adds support for resizing/rescaling other element types

Makes sure that you check out the
level view documentation and echo's tutorial on the wiki.


Last modified Sun, 12/07/2008 - 17:14 by zark92
Re: Wog Editor 0.5 is out Nicosmos12/08/2008 - 14:38

ODE have a error when I try to launch my level (in attached files). I think it's a bug in my (very simple) level, but I don't know where it is.

Here my level if someone more experienced could view where is the problem. An other thing : I didn't manage to create pipes & exit.

:)

Attachment: ode-error.png (34.21 KB, 403 downloads)
Re: Wog Editor 0.5 is out Nicosmos12/09/2008 - 15:04

I have resolved my problem, and finished my first test level.
Thanks for your really useful editor, it is actually quite easy to use when you understood how it works !

Some suggestions : we could be able to ...
- edit (rotate & size) lines and vectors.
- resize rectangles.
- edit pipes & exit.
- move elements in list in the right panel. I often would like to move up or down my elements, or to move a direct child into a composite geom.
- display the level exit.

:D

PS : My test level is at the same path posted in my previous message.

Re: Wog Editor 0.5 is out zark9212/09/2008 - 16:01

[quote author=Nicosmos link=topic=987.msg6995#msg6995 date=1228765080]
ODE have a error when I try to launch my level (in attached files). I think it's a bug in my (very simple) level, but I don't know where it is.

From experience, this is usually caused by a non static geometry having no mass.

Makes sure that all your rectangle, circle, composite geometry have static = true. Otherwise, they are considered dynamic (e.g. can be moved) and the physic engine ODE requires that all movable objects have a mass.

Re: Wog Editor 0.5 is out davidc12/11/2008 - 19:42

Looking good so far. A few comments:

- It seems to have very hard coded ideas about what values are allowed for what attributes. It's fine to display things in red but it should at least allow you to enter whatever you want - at the moment, it just reverts to whatever value you had before. Specific examples: text attributes for new text I've defined in text.xml. Rectangle attribute tag "sticky" should be allowed.

- Geometry with embedded images don't display at all - not even the rectangle itself is shown. Example: YouHaveToExplodeTheHead, killWheel contains the robot head image but neither the image nor the rectangle display.

- Signposts are hard to position and rotate with no feedback, plus the SIGNPOST_BLAH text obscures half the level. Could you not just display the image in the <signpost> image attribute instead?

- Likewise, particle emitter text is huge and doesn't indicate the actual location. Perhaps a circle or X or something at that point.

- No way to add new elements if you don't have an existing instance to copy and paste - I assume you are already working on this.

- Can you make it able to work with unencrypted XML files? Or at least have a simple built-in textbox as a simple XML editor? At the moment you have to close down wogeditor, decrypt, edit XML, encrypt, and open it again, if you want to make changes that wogeditor doesn't support.

- It doesn't seem to pick up changes in the level file on disk if I close and reopen the level; I have to close down the program and restart it.

- Multiple-selection would be extremely useful, e.g. when I have to move a whole structure by a certain amount.

- Would it be possible to make the mouse wheel zoom in to the location where the mouse is? Currently it zooms to the centre of the image. Not a big priority.

- It should definitely NOT automatically save when you close the window. At least ask the user. Since there's no undo, and since it saves automatically on close, the only way to revert a huge mistake right now is to restore from backup.

-davidc

Re: Wog Editor 0.5 is out zark9212/13/2008 - 07:18

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]
Looking good so far. A few comments:

- It seems to have very hard coded ideas about what values are allowed for what attributes. It's fine to display things in red but it should at least allow you to enter whatever you want - at the moment, it just reverts to whatever value you had before. Specific examples: text attributes for new text I've defined in text.xml. Rectangle attribute tag "sticky" should be allowed.

All valid references are loaded on start up, and updated dynamically for those you can create with the editor (goo, level images...). Since it is not possible to edit text at the current time you must restart the editor. Guess a reload text button should be added in the mean-time.

To my knowledge, 'sticky' is not a valid tag value (it is a material). Correct me if I'm wrong. Valid tag values were extracted from existing levels.

I guess with the new warning system, it should be possible to allow invalid value to be input. Though, this can make things tricky: where to display an item at position 'abc' ?

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Geometry with embedded images don't display at all - not even the rectangle itself is shown. Example: YouHaveToExplodeTheHead, killWheel contains the robot head image but neither the image nor the rectangle display.


Hmm, it's trying to display the image:
Warning: invalid image reference: "('IMAGE_SCENE_YOUHAVETOEXPLODETHEHEAD_HEAD',)"

Seems there is a bug in the reference resolution for this one. Strange that this bug only trigger in this case.

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Signposts are hard to position and rotate with no feedback, plus the SIGNPOST_BLAH text obscures half the level. Could you not just display the image in the <signpost> image attribute instead?

Makes sense. It was nice for visualization but it is not for edition.

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Likewise, particle emitter text is huge and doesn't indicate the actual location. Perhaps a circle or X or something at that point.

Hmm, I don't find it that big. Even on "Going up" it is reasonnable. Actual position is top-left corner of the text, unless there is no position. In that case it is placed at an hard-coded position, which cause text to be overlapped if the level as multiple global particles.

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- No way to add new elements if you don't have an existing instance to copy and paste - I assume you are already working on this.

??? This is supported since 0.3: just right click an element in the tree view to add a child element. Only valid child elements are proposed, hence when adding a Goo Ball for example, you need to right-click on the root node.

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Can you make it able to work with unencrypted XML files? Or at least have a simple built-in textbox as a simple XML editor? At the moment you have to close down wogeditor, decrypt, edit XML, encrypt, and open it again, if you want to make changes that wogeditor doesn't support.

Just use copy and paste. Clipboard format is XML.

It was documented in 0.4 NEWS. I recommend that you read NEWS.txt. It's not very long, but contains interesting trick like this one.

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- It doesn't seem to pick up changes in the level file on disk if I close and reopen the level; I have to close down the program and restart it.

Added to the todo list, level are kept in memory regardless of what is displayed.

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Multiple-selection would be extremely useful, e.g. when I have to move a whole structure by a certain amount.

But also very complex to implement. There are plenty of corner cases to handle: selection could mix elements from different tree view, top-level element and element nested in composite... Very complex to handle all this correctly, and I'm not even talking about implementing the move tool ;-)

You should try using compositegeom it you have a pack of element that you move often.

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Would it be possible to make the mouse wheel zoom in to the location where the mouse is? Currently it zooms to the centre of the image. Not a big priority.

Hmm, I though I added the flag in Qt GraphicsView to do that... Guess I messed up. Added to todo...

[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- It should definitely NOT automatically save when you close the window. At least ask the user. Since there's no undo, and since it saves automatically on close, the only way to revert a huge mistake right now is to restore from backup.

At the current time, save occurs only when testing a levelor clicking the save button or pressing Ctrl+S.

I would have one hell of troubleshooting the rotate/scale tool if I couldn't get the same initial level for each test!

What is your sceneario to have save occurs automatically?

Thanks for you feedback !

Re: Wog Editor 0.5 is out davidc12/16/2008 - 15:24

Hey Zark,

First off apologies for not reading the NEWS file. As a developer I am ashamed :-)

[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688]
All valid references are loaded on start up, and updated dynamically for those you can create with the editor (goo, level images...). Since it is not possible to edit text at the current time you must restart the editor. Guess a reload text button should be added in the mean-time.

To my knowledge, 'sticky' is not a valid tag value (it is a material). Correct me if I'm wrong. Valid tag values were extracted from existing levels.


OK makes sense, I just rechecked and it is showing the text it as a valid value now.

You're right about sticky, I can't remember what it was that I was trying to set now, it was something I'd seen on a compositegeom but wasn't on any existing game rectangle I think. In general though for "tag" you should allow any value, since you can combine them with commas.

[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688]
I guess with the new warning system, it should be possible to allow invalid value to be input. Though, this can make things tricky: where to display an item at position 'abc' ?


I think it's OK to still prevent invalid values for things that are known to absolutely have a certain type, e.g. points, colours, booleans, doubles.

The rest should be free-form.

But for all attributes (including points etc) it should be possible to enter an empty value. For example I can't currently delete the "pos" attribute from a "particles" element.

[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688]
Hmm, I don't find it that big. Even on "Going up" it is reasonnable. Actual position is top-left corner of the text, unless there is no position. In that case it is placed at an hard-coded position, which cause text to be overlapped if the level as multiple global particles.


Maybe just my level design then, but still I think better to show the actual position, perhaps with a circle with an X inside it, so you can see the actual point. Top left is a bit hard to judge sometimes.

[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688]
??? This is supported since 0.3: just right click an element in the tree view to add a child element. Only valid child elements are proposed, hence when adding a Goo Ball for example, you need to right-click on the root node.


OK yes I'm an idiot, sorry. I was right clicking on the elements in case it was on the context menu there, but I didn't think to right click on the root itself.

Along these lines, it's really important to be able to re-order elements. Or even, as 2dboy did, just have all the elements in a fixed order. e.g. balls before strands. In early design I found myself copying and pasting large numbers of elements just to order them as I wanted.

[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688]
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- It doesn't seem to pick up changes in the level file on disk if I close and reopen the level; I have to close down the program and restart it.

Added to the todo list, level are kept in memory regardless of what is displayed.

---snip---

At the current time, save occurs only when testing a levelor clicking the save button or pressing Ctrl+S.

I would have one hell of troubleshooting the rotate/scale tool if I couldn't get the same initial level for each test!


I think this is the same problem, keeping it in memory after the window is closed. I'll let you know if I reproduce the problem.

[quote author=zark92 link=topic=987.msg7233#msg7233 date=1229170688]
[quote author=davidc link=topic=987.msg7177#msg7177 date=1229042548]- Multiple-selection would be extremely useful, e.g. when I have to move a whole structure by a certain amount.

But also very complex to implement. There are plenty of corner cases to handle: selection could mix elements from different tree view, top-level element and element nested in composite... Very complex to handle all this correctly, and I'm not even talking about implementing the move tool ;-)

You should try using compositegeom it you have a pack of element that you move often.


In this particular instance it was a set of balls. I have a bunch of balls in a pre-built structure that I had to move by hand. Eventually I just centred my ball structure around (0,0) and moved everything else instead :-) but I still think it would be very useful.

One more:

New reproducable bug: I open my JingleBalls level, press T, move an element, close the level, then Ctrl+L and open it again. Here is the console output:

<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br />  File "levelview.pyc", line 1004, in timerEvent<br />  File "metaworld.pyc", line 172, in set_native<br />  File "metaworld.pyc", line 90, in set<br />  File "metaworld.pyc", line 1798, in set<br />  File "louie\dispatcher.pyc", line 352, in send<br />  File "louie\robustapply.pyc", line 56, in robust_apply<br />  File "levelview.pyc", line 1144, in __on_element_updated<br />  File "levelview.pyc", line 1182, in refreshFromModel<br />  File "levelview.pyc", line 1135, in _on_selection_change<br />  File "levelview.pyc", line 988, in _update_tools_handle<br />  File "levelview.pyc", line 681, in create_tools<br />  File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br />  File "levelview.pyc", line 1004, in timerEvent<br />  File "metaworld.pyc", line 172, in set_native<br />  File "metaworld.pyc", line 90, in set<br />  File "metaworld.pyc", line 1798, in set<br />  File "louie\dispatcher.pyc", line 352, in send<br />  File "louie\robustapply.pyc", line 56, in robust_apply<br />  File "levelview.pyc", line 1144, in __on_element_updated<br />  File "levelview.pyc", line 1182, in refreshFromModel<br />  File "levelview.pyc", line 1135, in _on_selection_change<br />  File "levelview.pyc", line 988, in _update_tools_handle<br />  File "levelview.pyc", line 681, in create_tools<br />  File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br />  File "levelview.pyc", line 1004, in timerEvent<br />  File "metaworld.pyc", line 172, in set_native<br />  File "metaworld.pyc", line 90, in set<br />  File "metaworld.pyc", line 1798, in set<br />  File "louie\dispatcher.pyc", line 352, in send<br />  File "louie\robustapply.pyc", line 56, in robust_apply<br />  File "levelview.pyc", line 1144, in __on_element_updated<br />  File "levelview.pyc", line 1182, in refreshFromModel<br />  File "levelview.pyc", line 1135, in _on_selection_change<br />  File "levelview.pyc", line 988, in _update_tools_handle<br />  File "levelview.pyc", line 681, in create_tools<br />  File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br />  File "levelview.pyc", line 1004, in timerEvent<br />  File "metaworld.pyc", line 172, in set_native<br />  File "metaworld.pyc", line 90, in set<br />  File "metaworld.pyc", line 1798, in set<br />  File "louie\dispatcher.pyc", line 352, in send<br />  File "louie\robustapply.pyc", line 56, in robust_apply<br />  File "levelview.pyc", line 1144, in __on_element_updated<br />  File "levelview.pyc", line 1182, in refreshFromModel<br />  File "levelview.pyc", line 1135, in _on_selection_change<br />  File "levelview.pyc", line 988, in _update_tools_handle<br />  File "levelview.pyc", line 681, in create_tools<br />  File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"<br />Traceback (most recent call last):<br />  File "wogeditor.py", line 498, in editLevel<br />  File "wogeditor.py", line 502, in open_level_view_by_name<br />  File "wogeditor.py", line 273, in selectLevel<br />  File "louie\dispatcher.pyc", line 352, in send<br />  File "louie\robustapply.pyc", line 56, in robust_apply<br />  File "levelview.pyc", line 1153, in _on_active_world_change<br />  File "levelview.pyc", line 1182, in refreshFromModel<br />  File "levelview.pyc", line 1135, in _on_selection_change<br />  File "levelview.pyc", line 988, in _update_tools_handle<br />  File "levelview.pyc", line 681, in create_tools<br />  File "levelview.pyc", line 661, in get_pixel_length<br />RuntimeError: underlying C/C++ object has been deleted<br />

And finally, a suggestion for further discussion. Be able to work on unencrypted XML files. At the moment it's a bit of a chore to go back and forth between wogeditor and gootool for deployment, particularly if you're using gootool for other resources. e.g. right now if I want to edit my custom ball, I have to save wogeditor, close, decrypt, copy unencrypted XML back to my goomod source directory, edit my ball, recompile my goomod, install with gootool, reload wogeditor. I think we can make the whole process easier for level authors and I'd like to discuss better possibilities for integration here. Do you have AIM/MSN/YahooIM/MyspaceIM/GoogleTalk? hit me up by PM.

best,

-davidc

Re: Wog Editor 0.5 is out davidc12/16/2008 - 15:46

Also, might be worth having a concept of "required". e.g. my most common error (and that of others, from what I've seen) is not putting "static" on geometry.

In fact in that specific case it might even be worth defaulting static="true" on new geometry.

Also on the toolbar I would suggest adding buttoms to add new circle/rectangle/scenelayer/etc/etc to avoid my mistake of not figuring out how to add new items (it's not particularly obvious).

And drag-and-drop in the elements list to be able to reorder elements, or to move elements inside each other (e.g. to move a rectangle into a compositegeom)

-davidc

Re: Wog Editor 0.5 is out xsonicx01/07/2009 - 04:26

what is wrong with my editor 0.5 ??
see this swf video
[flash=200,200]http://sonicrevolution2.no.sapo.pt/wogeditor.swf.html[/flash]


Last modified Thu, 01/08/2009 - 17:24 by xsonicx
Attachment: editor.PNG (68.55 KB, 314 downloads)
Re: Wog Editor 0.5 is out kurosame01/20/2009 - 22:11

hi, zark92

i started to play with wogeditor yesterday
very impressed with it <3

only over a night, soon  i will complete my own level



Here is my quick comment:
- Able to enter empty value like davidc stated, critical!
- Manual Save : don't save for level testing, please do a copy for that in case to revert
- Rearrange toolbar : make a new one that contain level editing tools like ms paint, give an easier access to add elements, move it to left for better cursor round trip
- Copy element sometime doesn't completely copy every attributes, it is quite annoy buggy
- Undo feature : I'm not forte in python programming but i can suggest a way
- Build-in text/XML editor would be nice, and should be open as fallback if main editor failed to do


And here I notice something look buggy

Warning: invalid image reference: "('IMAGE_SCENE_JINGLEBALLS_GIFTBOX',)"


that is all for quick one :P