DevKit / Level Editor

Started by ToddMcF2002, May 19, 2007, 05:05:58 AM

Previous topic - Next topic

ToddMcF2002

OK so, I've got the basic mechanics complete.  Here is where I'm at:

- Multiple Object Selection and Visual indicator
- Apply change to multiple selection
- Delta tracking of changes from initial values
- Dynamic Object Loading (3DS single, multipart)
- Load from XML persistence
- Orbital camera with zoom, pan, etc
- Floating FengGui UI

To do's:
- Better camera tracking (it is still chasing Werdy).
- Marker placement for object spawning (see that Marker Toggle button? in marker mode you set a marker on the terrain and the load will occur there)
- Persistence to XML across the board
- custom property extentions per object for game content
- Texture Loader (right now I'm just using my XML texture loader for Werdy)

So what you are seeing in the pic: 
I selected 3 of the tree canopy sections and altered the transparency as a group - notice the ones not affected.  Also I detached Werdy's head and messed with the rotations and translations.  If you select the various objects on the screen you can see all the property delta's in the floater screen - and use the "Stepping" box to get back if necessary.  No undo feature yet.  Its hard to see in the pic but right above the "key" label there is a ComboBox which is always in the context of selected objects - so just the 3 canopy objects are in the list since they are highlighted.  You can lock object selections by using the "Select Toggle" which gives you a special cursor.  Turn it on, select some objects and turn it off and the objects will be locked highlighted.  A regular cursor does nothing but show terrain coords on mouse move. 








eye1

great work! Looks very nice.

Remo

That's really nice! you are doing a great job :D.

ToddMcF2002

Are people going to want the source when its done?

eye1

I would be very happy if you do so. Especialy the part, where you are combining the fenggui with jpct (lwjgl). And how you managed to do the mouse and key mapping. Hopefully in some near future i will also implement menu in my application and put it one the web via webstart. But at the moment my project is paused, because I must finish some stuff for school and some other things must be done at work before that.

ToddMcF2002

Send me a PM with your email and I'll send a zip over.

Hmmmm I was hoping this would generate some significant interest???

If you look at some of the other engines out there such as Ogre3D there are tons of plugins and productivity tools and a bunch are a collaborative effort.  Sure I'm building this for my two games (Werdy and my ToEE'esque game) but there won't be anything specific in the code for those games. 

I'm sure there are lots of cool things that could be incorporated into this that would make it really useful for everyone given a bit of thought.  Not to mention - make JPCT more popular?  If everyone sits around and writes there own tools that's not so productive.  Anyway, just my two cents.  If anyone is interested, wants to help out or has suggestions or whatever I'm all ears.




 






Remo

As far as I know most people will use this silently (would not contribute or tell you that they are using it) so probably there won't me a lot of collaboration to it.
Ill gladly give it a look and contribute to it in a couple of weeks when I have a little more time on my hands!

Melssj5

If you have no problems on sharing the code then you could publish it on the download section of jpct for everyone to download it.
Nada por ahora

ToddMcF2002

Fine. I can do that in a few days once I clean things up a bit so its more usable.  I would rather send it to folks like Remo initially so something more polished can be produced first - but if there is limited interest I'll just post the code and move on.




EgonOlsen

I'm sure that people would appreciate it if you release the sources. At least i would. I can host them if you like as i'm already doing it with Cyberkilla's skeletal animation API.

raft

nice and promising work  :)

Quote from: ToddMcF2002 on May 21, 2007, 02:02:52 AM..If you look at some of the other engines out there such as Ogre3D there are tons of plugins and productivity tools and a bunch are a collaborative effort...

...I'm sure there are lots of cool things that could be incorporated into this that would make it really useful for everyone given a bit of thought.  Not to mention - make JPCT more popular?  If everyone sits around and writes there own tools that's not so productive...

impossible to disagree with this

ToddMcF2002

#11
I got Werdy out of there last night and replaced him with a small 3DS model of a camera.  That is the focal point for the JPCT camera.  It will always look at it, pan and zoom around it using the arrow keys and F1 F2 for pitch.  If you go into "select mode" and select the camera like you would any other object in the kit, those arrow keys move the camera object around the level instead, with F1 and F2 controlling the Y-Axis.  That way you simply put it where you are working on the X, Y, Z plane, unselect it, and pan/zoom/pitch around the new location.

The class I wrote stubs out using multiple cameras with the idea being you could create a bunch and toggle around the level at will but I'm going to move on to XML persistence instead so I can get the code out as planned.  After I distribute the code I'll be using this thing pretty heavily myself for Werdy level design so I'll enhance as I go.

There are two additional things I want to add:

1.  PROXY OBJECTS
For example - Spawn Points and Portal Points and Trigger Point.  They will be colored cubes in the editor basically.  A Spawn Point would have a few name/value pairs to go with it like type=npc, name=my_game_specific_creature_name, file=/my/lame/model.3ds.  I will have an XML template that defines the names and you can just change it to suit.  When the XML persists they will save with it.
A Portal Point will define an area that triggers a terrain swap for the World.  You can use it for a hard unload/reload of a level or a simple transition from outdoor to indoor. 
A Trigger Point is just an object to define an area that is intended to cause some effect - such as automatically opening a door as something approaches.

2.  LIGHTING PROXY OBJECTS Like the old UnrealEd.  Place a torch in the world as a proxy for a light, specify the RGB etc.




ToddMcF2002

OK - got it all done.  Just got the XML Save / Load working.  Lights, proxy objects, regular objects all in there.

Documentation and packaging is all that is left.  You really will have to read the doc to make use of this thing.  Not that it is overly complicated or anything - just that there are a few behaviors that might seem odd (or outright rediculous) at first.

Reminder though - I havent used this thing in practice yet.  I'm sure I'll find annoyances too and fix them as I go.

I'll try to post doc during the day tommorrow in this thread and the package in the next day or two.  I want to make sure it runs out of the box with some test models so you can follow with the document.  Yes the source code will be with the package.


ToddMcF2002

Here is some real basic user guide stuff.  I'll going to do a separate install doc.








EgonOlsen

Very cool! I've added the Editor as an extra project to the projects page.