Game Development Community

T2D Editors editors and more editors

by Justin DuJardin · in Torque Game Builder · 06/02/2005 (10:41 am) · 16 replies

Ok guys, here we go, it's time for me to reach out to the T2D developers and get my feelers a little more attuned to what you guys want in the way of editors for T2D.

I'd really like to hear about your experiences with creating games in T2D and what you guys think needs to be made simpler. I can't promise I'll be able to do everything you want, but I have been working on some editor stuff and would love to get some ideas on how I can try and make the game dev process simpler for you.

A small example being-custom collision poly's are a pain to create, so an editor that allows you to view your scene object and point and click around the image to create custom collision poly's is something I've been working on.

What else do you guys just *HAVE* to have?!

:)

-justin'

#1
06/02/2005 (11:20 am)
Collision poly's seem to be the biggest "annoyance", so that editor will surely help out a lot of us :)

Another one that might be usefull is a project generator, very simple I guess, just an editor that will generate a new project with a click of a button, ex: generating the default contents that was in T2D originally into a new folder you specify and automatically generating the .bat file to run it with. I guess a "fresh" project you could think of it as, or maybe a duplicate project function as well... this would be more of a convenience tool, but I think would help the newer users a lot, since most are used to thinking of folders and files as "reserved" and just copying and pasting seems less technical.

That packaging utitility that was mentioned will be usefull too, though I think it falls under the same category as my last paragraph, a convenience tool mainly for newer users to feel less threatened.

maybe an image datablock editor like Chazcross' (btw he did a great job on that), but a little more integrated... with buttons to generate new imagemap datablocks (full, cell, and key) with your new spiffy gui file tree (which looks awesome) so users can just branch out, pick a pic, choose the mode, maybe "preview" it and its frames, then save it... something like this could be used for a sprite creator and/or animatedSprite creator. Nothing groundbreaking here, but saves time and streamlines the workflow. (then I guess it could all be appended or compared to datablocks.cs, with very good structure too, maybe have ways to export datablocks to a new file, etc, so people can organize there files through it).

Just some peices towards a whole editor... a lot of that would seem to come down to the actual game editor, allowing you to place sprites, set collision, images, etc, all in one, that then would generate a script file for.

None of these fall under the need, just whats coming to mind :)
#2
06/02/2005 (11:29 am)
Add:

Another thing that would be helpful, in creating segmented tools like these, would be if they were very modular... for example an imagemap selection gui, like the tile editor one, if things like this were set up modular enough for people to call them in their own specific editors, that would be invaluable.
#3
06/02/2005 (11:44 am)
My current wishlist includes, in the Particle Editor, a "duplicate" button for emitters.

I spend ages getting one right, then want to use exactly the same one with a different cell from the imagemap.

Alternatively, Having an emitter able to select a random cell from an imagemap datablock would absolutely rock. Does T2D support this yet? If so, I couldn't find it.

Gary (-;
#4
06/02/2005 (12:27 pm)
You can kind of duplicate emitters.

Create the emitter you like, and save it as emitter1.emi (or whatever you fancy).
Create a new emitter, and then edit it.
Hit the load button and load up emitter1.emi.
Hey presto, duplicated emitter.

I used this loads to create mondo special effects. I then just set the visibility of each emitter via script so I don't bring the system to its knees everytime an effect goes off :)

Edit -> There's no reason why you can't set the frame randomly from script either.
%effect = new fxParticleEffect2D() { scenegraph = t2dSceneGraph; };
%effect.loadEffect("~/client/effects/myeffect.eff");
%emitter = %effect.findEmitterObject("EMITTER_NAME");
%emitter.setImageMap(graphic1ImageMap, (1+(getRandom()*6)));
In the last line, 'graphic1ImageMap' is obviously the name of the imagemap you want to use. You'll need to replace the 6 with the number of frames in the imagemap (or use more script to extract the number of frames). I haven't actually tested this code, but it should be pretty close to spot on ;)

One of the things people have been crying out for is a decent tool for stringing together loads of graphics images into one file ready to make into animated sprites.

The couple I've found have been woefully inadequate and/or don't support PNGs. Given that T2D reads and writes PNGs, with a bit of wizardry it should be possible to make a tool like this almost entirely in script so it's cross platform.

If only I had the script-fu to do it myself.
#5
06/02/2005 (2:19 pm)
Ah, neat. And your second thing,
%emitter.setImageMap(graphicImageMap, getRandom(1,6))

Would be fine, except I want a randomly chosen image, each particle, rather than per-emitter-instance.

Gary (-;
#6
06/02/2005 (4:23 pm)
Hey guys thanks for the great input thus far, it's helped me out with my diagramming and whatnots alot.

Alot of the particle editor stuff is on my todo, but unfortunately it will probably have to take back seat to the scene object editing stuff because that's my #1 right now. However, it should be transparent to most of you because you'll likely get a lump sum of all of this when the next release candidate is available (don't know when that is.)

I have just recently upgraded the file browsing dialogs and have a image viewing control ready to go (for image browsing) it just hasn't been implemented yet, but it's a definate addition to the set of stuff you'll have to work with in the future. Hopefully the changes to the browsing should make locating resources (imagemaps, sceneobjects, textures, sounds, and all the rest) much easier. As it stands there are utility functions accesible via script that allow you to browse for these resources which offer the ability to only return info upon selection and also an optional callback when a resource is selected in the dialog (so your script can react to selections before they are finalized).

All of that aside, I'd really like to see if we can focus this a tiny bit more. The editor I have in the works is really aiming at being able to simplify the 'level' creation process, ultimately I'd like to see it be able to do a few things. Of course these need to be fleshed out and are only being prototyped right now.

Firstly, I'd like it to be able to load up a current scene that you're working in and be able to customize anything in it, I'm thinking about something along the lines of the worldeditor that is currently implemented in TGE. I would like to group all assets of a given 'scene' or 'level' into one file, perhaps a .mis which I'm thinking will simply be a simset with some special simgroups for certain aspects of it, which can then be saved to a file and loaded like a mission.

In this I'd like you to be able to dynamically select and modify the attributes of objects inside it for example you may want to add an enemy to the scene. to do so you'd drop a scene object onto the scene and specify an imagemap, once the image map is specified you could then double click the object and it would bring up the collision poly editor. From there you could point and click the different poly points and it would generate the custom collision poly data for you. storing this in a file is still something I'm mulling over in my mind, and to go into any more specifics would more than likely just lead to dissapointment when i realize that i have to change this design further down the road.

Hopefully this gives you a better idea of what I'm looking at creating. Any ideas pertaining to that would be most helpful. What would you like to be able to do in a scenario such as that? What would be just dang'd cool to be able to visually do? What script do you just LOATH having to write to make your 'levels' work?

Thanks again guys, keep comin' with the ideas!

-justin'
#7
06/02/2005 (4:41 pm)
Layer groups, collision groups, mask groups for both of those, those can get pretty tedious =/ a tool that watches it all and can set those for all objects created would be great.

btw your overall goal sounds great
#8
06/02/2005 (5:11 pm)
Oh, King Tut Bob reminds me; I'd love a CollisionPoly Editor ;-)

Gary (-;
#9
06/03/2005 (2:52 pm)
Sup Justin. I agree w/ King Tut Bob's request.

-I'd like a more integrated IDE. Maybe the IDE could have the following layout: File Menu at the top, Quick buttons below the File Menu at the top, the body of the IDE would be split into to sections: A project explorer and property explorer on the left side and a content window taking up the rest (and bulk) of the space.
-Project Explorer: The project explorer would be a tree view of all the game objects: DataBlocks (this would be a pool of datablocks for reuse, more later), Sprites, TileMaps, Sounds, Levels/Rooms (sprites + tilemaps/layers + ...), etc...
-Content Window: The user could click a game object in the Project Explorer and bring up the editor for that game object in the Content Window. Maybe the Content Window could be tabbed to allow quickly switching between editors.
-Property Explorer: When each editor is opened a Property Explorer would show up off to the side below the Project Explorer. The Property Explorer would allow you to change the static properties on the game object that's being edited and even allow adding new properties.

-Also it would be cool if you could flip between GUI and code editing (i.e. you could edit the code that the editor generates (where possible) and have the GUI editor reflect those changes).

-The IDE could allow you to create a separate/independent pool of DataBlocks by clicking Add DataBlock in the Project Explorer. When you set a DataBlock on a sprite, the IDE could allow you to select one from the pool or select a standard one (including a blank one ?). The IDE could also allow you to override the properties of the DataBlock you've selected for that instance without overriding the original DataBlock.

-IDE could allow overlaying sprites for mounting.

-Add help files to menu

Phew...I'm done (don't know what made me write all that)

:)
#10
06/03/2005 (4:31 pm)
@Matt : That's what I was looking for! Great stuff there, I'll be sure to solve those problems in this editor system for sure!

@Dannon : I was actually considering doing something along those lines, great minds and all that ehh? :)

I'll try to get some screen grabs of the current layout I have planned by next monday for you guys to offer some more input on! I've got the mockup going right now, but I'm having to customize some of the existing controls to work better to suit that kind of layout, stay tuned!@

-justin'
#11
06/04/2005 (9:33 am)
@Justin: Outstanding!! :) Btw, I just looked at JEdit/TIDE (still new to the whole Torque/T2D). Are there any thoughts of using JEdit/TIDE as the IDE (although still using T2D for the editors)?

@Matt: About the editors being modular - Is T2D modular? Is there a way for another language to host a T2D app and manipulate it dynamically outside of the T2D environment, sorta like a Windows DLL/Java jar? (not an attack on T2D, but questions out of ignorance :)

You guys are the greatest!!!
#12
06/04/2005 (9:54 am)
Honestly I want something similar to the editors built into TGE. Where you can place some sort of spawn entity (optimally with an entity specific bitmap) and have it spawn on mission load. I know there is the script property on tile blocks, but that isn't very visual. I already have something like this working in my own version of the engine, and its completely scripted. It even includes a simple to use entity system that auto registers entities using a special datablock property. If you want a copy of it, I can send it over. I didn't have a chance to really clean up the code, or I would have posted it as a resource.
#13
06/04/2005 (9:59 am)
@Dannon Gruver: T2D is pretty modular. If you want to link in new functionality, just link to the DLL's of your choice, and create some script bindings for TorqueScript. Chunky_KS has done this with his OdeScript bindings he is working on.

http://www.garagegames.com/blogs/20342/7908

He also has a forum thread for it too, where he posts updates for it every so often, but I forget the exact link for it.
#14
06/04/2005 (10:27 am)
Hey Ray, thx for the response!
I see what you're saying but I guess I didn't explain myself very well (or maybe I'm missing it :).
I understand that T2D can call on outside DLLs and that's a way to extend the engine. But what I was wondering is if the T2D engine could be made into a DLL/JAR and be called by other applications (sort of the reverse of what Chunky_KS is doing). Instead of T2D calling a DLL, an app calling T2D as if it were a DLL.

That way another app/IDE could manipulate the objects inside the T2D engine dynamically. For example, an IDE could host the T2D engine, make changes to the script code, and the changes would automatically be reflected in the GUI editor (actual T2D engine). Or if the app already had debugging support you could interface it with T2D and it could hook right up. (EDIT: Didn't think about this, but if T2D exposes its objects(sprites,tilemapps) to the DLL that its calling, then maybe thats the way to expose T2D to another app? hmmm...hehe, maybe thats crazy talk!)

I.e., the main reason I was going this route at all was to reuse the GUI,etc. functionality of another language w/o having to rewrite all things in TorqueScript. And that way you could also leverage existing tools/libraries/skills.

Maybe I'm going down the wrong path (i.e. all the GUI controls have already been written in TGE) and if so I apologize. Dont want to start any arguments :)
#15
06/04/2005 (10:34 am)
Well you could just code it in T2D and just import functionality in other languages, like I stated. This would make it way easier to make the tools cross platform.
#16
06/04/2005 (6:21 pm)
My vote would be to work on the map editor. If you want to know what I want, download Mappy :) Alternatively, you could fix up the Mappy import code so that we can use raw FMP files (including user defined variables, animations etc).