TorqueIDE Wishlist, since someone asked.

Foreward: Eric Forhan asked in this Dev Snapshot if I had a wishlist for TorqueIDE, the new script editor I wrote and that people have started kicking in help on. Here it is….
Wishlist? That’s asking for trouble. I’ll make the assumption that you are just asking about stuff for TorqueIDE, right? 😉 Let’s see… keep in mind the some of the stuff I’ll throw in here are really long term “this SEEMS like a cool idea” type stuff. So if it sounds like I’m blue skying in a couple of places – I am. I like to shoot for the moon, then scale back to reality.
(Gee, I wonder what the limit on the size of a post in the GG forums is? 😉
File Functions. I like having one interface for everything. However, having file functions (IE – copy, move, DELETE) in a end-user’s hands is BAD. A moder can easily screw things up, and it also becomes the begining of the concept of a game-specific worm. (Infact, I’ve already explored that. One of my ‘real world’ jobs was information security.)
Finish my ‘Save As…’ and ‘New File’ functions 😉
Find In Files, all nice and linked. Basically it presents an output dialog with where a term showed up, what context it was used in (IE, show the line from the file) and be linked to the file – click it, and it opens the file at the right line. It’s the only reason I open TribalIDE at the moment.
Right Mouse Button popup context menu. If someone gives me this, I’ll give you some neat features in exchange. 🙂 I thought there WAS one in Torque, but I can’t find it. May just be an old age issue at work here – remembering things that weren’t there, or missplacing things that are there. Anyway, then I can do things like a ‘Cut – Paste – Copy’ menu. And I can do one o’ my favorites from VC++ – right click on a highlighted function, and Goto Definition. It’s a little thing, but sometimes little things make me very happy 🙂 (Side note: one of the flexibility things about Torque is also a downfall working with something like an IDE. I can have the same function definied in multiple places, and the engine has zeror problem with this – whatever the last loaded function was is what it uses. I make use of this extensively in TZ, but, that also means ‘Goto Definition’ will probably have to show ALL the possible definitions when a function has been definined multiple times, and let me pick the right one. This is already an issue with the Function Browser.)
A working Tab key. Tab doesn’t do anything for me. No one else has mentioned it, but, I use it alot. Now I’m being forced to just hit the spacebar alot. Please help – my spacebar would appreciate it 🙂
Shift-select text – I’d like to not have to resort to the mouse for selecting a block of text. At least that works though!
Group Comment / Uncomment. Torque Script doesn’t support block commenting, so when eliminitating an old function and writing a new one in it’s place, I use // a lot 😉 Select the text, and comment the whole thing at once 🙂 It’s really a fairly easy function, just hasn’t been done.
Group Tab / Untab – related to the tab issue and shift-select issue, but, I’d like to do the normal IDE thing and write If(){ }’s around existing code, and select everything between and hit tab to move it over one. Or shift-tab to move it back where it was.
A good way of handling accelerator keys, so I can keep my hands on the keyboard. Problem is, since there’s already binds in your game, it could overwrite them. But how many times do you use Alt+ for a game key? I dunno.
The Function Browser, in Doxygen compatible format. I haven’t touched it yet, even though I said I would ;-) 
Save Environment. Basically, when you exit the editor, it saves all of your open windows, locations, etc. before exiting. This is one o’ those functions I plan on writing very soon, since it’s not uncommon for me to pop in, tweak, execute, and exit (since it takes so little time now). Having my environment come back the way it was really isn’t a BIG deal, but it’s nice.
Documentation browser. As mentioned above – I like staying in a single interface for most of my work. I like all of my help documents / tutorials / etc. in one place. And here’s the biggie – I like them all to be searchable at once. Anyone who has an MSDN CD set knows exactly what I’m talking about – if I want to know something about anything, I type one search and it hits all of the documents MS provided. Get too much stuff, and you just narrow it down a bit. I’d like to be able to do the same thing with Torque documentation – throw it all in a directory, and be able to search it all at once. I’ll probably only support HTML, Text, and MLTextEditCtrl formatted text in it, but if someone was ambitious they could add RTF, etc. This way, I can just search for what I need, and have it setting there open for reference or to rip off code while I’m working on / looking at a piece of my code. Yeah, I know already – I’m a freak. This might also be a nice newbie function – a lot of forum posts already ask where to get tutorials, etc. at, why not just package part of it up with the IDE? *SHRUG* The latter will probably never happen, but, putting the document browser / search functionality in there is one of my things for workflow and information.
Object Browser, both Live and extracted from Scripts: I’d like to be able to completely watch what’s going on with a particular object while I’m playing a game. I’d also like to be able to look at some overall statistics and information from objects within the scripts – IE, the Crossbow class references these datablocks, which reference these datablocks, and uses these functions. 
Doxygen relationship mapping. Never gonna happen, but it’s a really cool idea if someone else implements it 🙂
Task-Specific modules. Right now, the IDE is something like 1500+ lines of code. It probably needs to start being broken up into more manageable (and viewable) pieces. At the same time, I can see it being useful for some task-specific stuff that I hadn’t planned on (Script Editor, rememeber? Wow, those were the days… 😉 Eric mentioned editing .mis files by hand and seeing the effects immediately (well, after an exec). But how many people would be interested in a ‘FlushTextureCache’ menu item? How many people working on a .mis file would be interested in the Function browser? Just have a ‘Tasks’ menu with check-able items. When you check ‘Script Editing / Debug’, you get all the items specific to that task. This is cool because people can just keep adding more stuff and you don’t have to wade through anything except stuff that you actually work with. The bad: makes writing a tutorial harder, because people might not have the “Script Editing” toolset turned on (“What %$*#$(% mini-console window? WTF is that?!”) The blue sky part of this is the ‘task specific’ menu stuff. The reality part is breaking up the IDE script a bit so it’s manageable.
Better load time for the project window. I’ve already got the solution, just gotta implement it. Instead of doing the complete FindFirstFile, FindNextFile loop all at once, just do about 25 items at a time, and schedule() another 25 items, passing %file back into the script. If you would happen to have multiple mods in there (like if GG ever starts sending out HEAD with multiple starter packs included, or if people just use the Torque root dir as a base to put all those type things), filtering through files could start getting real ugly – right now the UI comes to a complete stop. I miss the old VB doEvents() command 😉 But the same principal could be applied to other time intensive functions so that TorqueIDE continues to respond. I know – this is a ‘feel’ issue, not a function issue.
A metrics / performance window – just a nice little information window to show me everything I ever wanted to know about how my game is running. FPS, poly’s shown, clients currently connected, memory used, etc. Whatever I tell it what I want it to show (probably a little menu on it that allows me to say what I want in there would be good.)
Game in a window. This is kind of a “who cares” issue I suppose. I’d like to be able to (at will) kick the playgui interface into a window belonging to the Script Editor. That way I can see the mini-console, function browser, my script, and the game running all at the same time without having my view blocked. Can you tell I’m used to running on multiple monitors where I can have TONS of information up at once? 😉 I already think I know how to pull this off, but haven’t tested it yet. Some controls aren’t designed to be resized though, so there could be an issue there (Of course, I could just set it up to be ‘stuck’ at 640 x 480 or similar – but that just doesn’t seem right if everything else is so flexible.)
And to go with that – UI Editor in a window, and Mission editor in a window. The UI editor because it would be nice to have my script open, and my UI that I’m working on at the same time (and my function browser might be useful). Right now, that’s not a realistic option. And I *THINK* part of the UI editor is done as engine functions, not GUI objects, but I could be completly wrong. Plus I’ve now got this nice MDI style thing going, so why not? The mission editor probably isn’t as useful, but is more of a geeky “Hey, look what I did!” (which is usually followed by “Why?” 😉 And obviously, I can only have one mission file open at a time anyway. But where there’s some asset inspection stuff in TorqueIDE already (I can go look at textures. I wouldn’t call that MUCH in the way of asset inspection), might be useful to browse through your textures a bit before adding them to the mission. (Hehe – or even better, drag it over and drop it in the Mission editor. Yes, I’m insane – ain’t gonna happen. Go ahead – prove me wrong 😉
A couple more asset viewer type items would be nice – there is (was) a Terrain Preview control and a model preview control at one time, but I don’t think they are part of HEAD at the moment (and even when I’m throwing out cool ideas, the reality is if it’s not something that’s going to eventually be added to HEAD, then it’s going to be another PITA or percieved as a broken feature in TorqueIDE!) Getting those usable and something like a .dif view and audio player would be nice. (The .dif viewer would require a new tool. The audio player just requires someone to write another TorqueIDE function and UI entry for it with a simple ‘play’ and ‘stop’ control.) Just another one of those freakish ‘one interface for everything’ issues here.
BTW: On that subject… after I wrote the Script Editor, I realized one cool advantage to this – I had a cross-platform editor that worked the same no matter what platform I was on! Yet another way for me to help break my Windows habit and migrate to MacOSX goodness 😉 But this also applies to any of the toys or tools that go into Torque in general 🙂
Function specific editors. I already wrote part of this before when I was playing with Torque early on, and it’s pretty simple to do. However, my ‘leet TGE hax0r sk1lz were lacking, so I never bothered finishin’ them. For instance: I want to add new ammo for my weapon. Hit the specific editor for a weapon, fill in the parameters, select what assets I want to use (sound, graphics, etc.), and save it. Now, that might seem like a newbie feature, but, to me it’s easier to just to be able to click on my assets and build up what I need. But that’s just me, and this isn’t something that many people would really care about. This also turns Torque into a ‘click-n-play’ish type deal with some heavy duty power setting under the hood. I can just see it – the ‘Build New Game Wizard:’ “What would you like to build today? ( )FPS ( )RPG (O)Arcade Shooter ( )2D Puzzle Game….”, and have it copy in from a template, and starts building up the framework for ya. REALLY unrealistic, but what a funny idea 😉 (About here, most programmers will loose interest – and I can’t say that I blame ’em either :-) 
ANY feature that makes game development go faster. That was my original point behind the Script Editor – I wanted to save a couple o’ minutes of ramp up / ramp down time.
The other thing I thought about was if procedural textures (not hardware based stuff like shaders), then a simple graphic editor is possible. Just open the graphic, make a couple o’ changes, close it again. The cool part about this is then an artist with only a little scripting skill could tweak out a function of the editor (say, blur) to do exactly what he wants it to do, or even add new functions. Problem is this would be slow, and you wouldn’t have access to cool stuff like layers – this would be more akin to editing sprites in Gary Kitchen’s Game Creator on the C64, just with better graphics. But there’s moments when that would come in handy for a bit o’ programmer art. And since I’m dreaming, why doesn’t someone just do a model editor and interior editor in Torque, and get rid of this whole exporter issue entirely 😉 (Did anyone else hear Jeff T. start screaming “YES! PLEASE!”? I’m in Wichita, KS, and I’m sure I heard him yell that all the way from Eugene, OR 🙂 I haven’t the slightest clue where to start with models in Torque, but back when the Torque Enhancement Project was exciting, I looked into the interior editor concept a bit – it’s entirely possible to do. It really boils down to someone doing it – lots of effort before it would have half the functionality of QuArK. But it’s possible. And since procedural meshes are possible in Torque, it’s not impossible. Just improbable 🙂
This is NOT a feature list. This is not a timeline. Nothing is written in stone, and most of the big features are just dreaming type stuff. If I was doing this full time, well… heck, I’d probably be throwing A LOT of this stuff in there at a rapid pace in at least preliminary form for people to hack on further. (Oh, and if someone wants to pay me to do it – Sure! But I’ve got a game to ship first. 😉
I’m also wanting to avoid ‘hackyness’ as much as possible – sure, this was a hack in the first place, but nothing that goes into it should get in the road of game development or my workflow in general. I should never have to work around a feature (or bug). But then again – I’ve got the script, so I can make it do what I want it to do for me. While I listed all of the cool pie-in-the-sky features (and a number of much more realistic ones), the real goal is for me to make games faster. Hopefully, TorqueIDE as it is helps people do that. Anything else just makes it even better.
Davis Ray Sickmon, Jr   (Nov 25, 2003 at 20:34)  
BTW: That was my ‘Wish list’ – world peace and a truckload of $20’s is in there somewhere too 😉 My actual to-do list? Look at the resource, and it’s in there. And I’ve got a bit before I manage to get those done – so don’t expect an interior editor or any of the crazier ideas in there outta me anytime in the near future 😉
Luke *V8motorhead* Jones   (Nov 25, 2003 at 21:17)
Hey how about an Interior Editor? 😉
Good stuff dude, this is what we really needed, that and a pro Blender Exporter.
And a level editor for linux…
Harold “LabRat” Brown   (Nov 26, 2003 at 04:29)
Right Mouse Button popup context menu. 
You’ll get the code when I get it cleaned and merged with your latest version.
Ben Garney   (Nov 29, 2003 at 14:08)
I’m at a computer lab at College of DuPage, slurping down all the TorqueIDE stuff… I’ll see if I can’t slap some good documentation work into it. Maybe clean it up, too.

Talk to me (and everyone else) by commenting!