Jump to content

SceneNavi - A simple Ocarina of Time level editor


xdaniel
 Share

Recommended Posts

SceneNavi v1.0 Beta 3

 

Changes since Beta 2:

  • Support for ROMs with z64tables hack
  • ROM loader error handling changed; now allows access to exception details for reporting
  • Human-readable actor names now read from ActorNames.xml instead of individual actor definitions
  • XML data files rearranged; removed AddressTranslations.xml and address translator class, added more versatile hashtable reader class, also used by actor names
  • Object names are now version-independant, using the hashtable reader class mentioned above
  • Added collsion rendering with two different highlighting modes (all white, or approximately by ground type)
  • Actor definitions changed to use hexadecimal values for rotation

Collision editing as shown above will be in Beta 4; it's still not very well tested and missing a lot of GUI features, so it's not available in this build.

 

Link to comment
Share on other sites

I was gonna post a short progress report, but first...

 

So, uh, no other feedback? Airikita, Antidote, !Tommy, do you still get the errors you've been getting, and if so, what do the details say? Anyone else with any bug reports, ideas, etc.?

 

...now for the progress. Dunno if it's dedication or foolishness, but I've worked through the night - literally, it's 7:45 am here - to get mouse-based actor and waypoint movement working. And yeah, I did get it to work. Holding the right button down on such an object allows dragging left/right/up/down (or on X and Y axis with neutral camera), while holding the middle button allows dragging forward/backward (Z axis neutral). The left mouse button is purely for camera purposes. Also rewrote parts of the picking code, added a VSync option to limit the FPS, and did some tiny changes and fixes to the GUI.

Link to comment
Share on other sites

What? No clickable scroll wheel or anything? How old is that mouse? Uhm, I guess I'll add a modifier key that, when pressed, changes the right-click function into the middle-click one... like, hold down ex. Ctrl and the right button drags the object forward/backward, instead of up/down/left/right.

 

EDIT: WIP, more details about the changes later:

 

Posted Image

Edited by xdaniel
  • Like 1
Link to comment
Share on other sites

Hm, the only Path.Combine calls in the ROMHandler's constructor are for creating the paths to the XML files, thus the actor definitions, name tables, etc. "Illegal characters" can occur if you try to load a ROM with the wrong byte order, as the program ends up reading the game ID incorrectly, which is needed as part of the path.

 

Can you read the ROM header if you open the ROM in a hex editor; the title "THE LEGEND OF ZELDA", etc.? If not, try byteswapping and opening it in SceneNavi again. Gotta add some exception handling for that kinda situation...

 

Link to comment
Share on other sites

Well, i can confirm that I've fixed it on my end, it seems that my file has each WORD in little endian.

There may be files where each DWORD is little so check for that as well.

 

Also it's in desperate need of a frame limit, zooming around at 300+ FPS is kinda odd and difficult XD

Link to comment
Share on other sites

The next version will allow switching the OGL control's VSync on and off, so unless your monitor does a 300 Hz refresh rate, it should be much easier to navigate scenes with that enabled :P  In the meantime, try holding down Shift while you move around, that slows the camera's speed down somewhat while Space speeds it up.

Link to comment
Share on other sites

Progress report time; turned out a bit long but might be interesting to read:

 

As I've said before, mouse-based movement of actors and waypoints is now implemented, although I've since changed how it works. There's now three mouse modes, similar to UoT and SayakaGL: camera mode (only allows camera movement, no selection or movement of "things"), moveable objects mode (allows selection and movement of actors and waypoints) and static objects mode (allows selection of, so far, collision polygons). You can switch through the modes either by using the menu ("Tools" -> "Mouse Mode") or by clicking on the mode label on the (now actually used!) status bar, in the lower left corner.

 

Moving things is done via the left and/or middle mouse button: hold the left button to move the thing up, down, left and right (meaning, X and Y axis with neutral camera position), hold the middle button OR hold Ctrl on the keyboard plus the left button to move the thing forward or backward (Z axis w/ neutral camera). Also, moveable objects have a context menu that's displayed when you right-click them. The menu allows you to rotate the thing by 45 degrees in both directions on any of the three axis. This function is only enabled for things that actually have rotation values, so waypoints cannot be rotated, and only the axes that are supported by the thing can be changed, so ex. treasure chests can only be rotated on the X and Y axis.

 

The status bar, as mentioned, now actually does something. Besides the mouse mode, it now displays the camera position, as well as some information about the currently loaded scene or room, like its name and actor counts. Minor addition, but might be useful. The menus have changed a bit, too: the collision highlight option has moved to the new "Tools" menu, which also contains the aforementioned mouse mode option, as well as one to reset the camera position. There's also a new VSync toggle in the Options menu to limit the FPS - the FPS is now also only shown when VSync is disabled, as otherwise it'll mostly be around whatever your monitor's refresh rate is anyway.

 

Speaking of FPS, one thing that really destroyed the performance previously was the collision rendering. I've added some caching via OpenGL display lists, so the collision overlay is now only re-rendered if it changes, ex. when you select a collision polygon, or when you change something in a polygon type. Once something changes, the collilsion overlay is flagged as dirty, then deleted and recreated on the next frame and cached again until another change occures. What does that mean for performance? Screenshots in the spoiler, showing the Fire Temple, which is one of the more demanding ones to render (along with ex. Water and Spirit, I believe).

 

 

Before, Beta 3:

Posted Image

 

After, Beta 4:

Posted Image

 

 

EDIT: Oh, and before I forget, I added some more housekeeping stuff regarding OpenGL extensions, texturing and combiner emulation. This'll meant that, hopefully, people with not-so-good graphics cards, that do not support the extensions required for ex. the combiner, will at least be able to use the program, albeit without textures.

Edited by xdaniel
  • Like 2
Link to comment
Share on other sites

UoT's certainly been an inspiration for a lot of things in SceneNavi (and SayakaGL, and OZMAV2, and "Old OZMAV"). It has a solid UI, although I feel like it's rather messy - or maybe it's gotten messy over time, can't remember its original incarnations very well. I guess I'm trying to take what I feel is good about its interface - ex. the mouse controls -, while at the same time making it cleaner and more... adhering to design conventions, I suppose? Like not having colored, underlined text and silder/trackbar controls in the status bar. It's those tiny things that look out of place, that I hate about UoT. And that some older version of it killed my Forest Temple by ruining the transition actors...

 

Link to comment
Share on other sites

So, I hate to sound like a broken record, but working with individual map files would be really helpful to me. I mean, due to the way that I've been working with my hack, not having individual file support largely prevents me from using your tool.

Link to comment
Share on other sites

petrie911: Trying to implement it right now. The way I'm planning it, you'll still need to open a compatible ROM beforehand - as a lot of data will still be loaded from it, and I really don't want to change this - but afterwards you can open a separate pair of scene and room files to sort of "override" the ROM. They will stay active until you close the scene/room pair from the menu. Not sure if this'll be in the next build, but it's looking good, I guess. Hope this'll work for you.

 

In other news, I came across the update-checking-sample-demo thingy I posted in one of haddockd's Master GUI threads again and decided to add such a function to SceneNavi. Starting with the next release, you'll be able to check for updates to SceneNavi by using the "Check for Update" function in the "Help" menu. It'll either tell you that you already have the most recent version, or be able to direct you to a download of the newer one.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.