Game Development Community

dev|Pro Game Development Curriculum

Releasing TGB Super Starter Kit (SSK)

by Edward F. Maurina III · 09/11/2009 (2:13 am) · 21 comments

I have been pretty busy lately trying to release a starter kit for TGB. For a long time I planned to make this a for-sale type product, but I found myself in an endless cycle, polishing, adding features, changing features, ...

Because such a long process is of no value to me, or to you, and because I really want to get focused on game development and to get away from tools, kits, etc for a while, I am going to release the kit for free.

I'm calling this the 'TGB Super Starer Kit' or SSK for short. This may sound a little grandiose, but I am certain that if you give this a try you will find it is very useful and pretty super.

(Of course, if you don't like it, it is free. So, at lease you can't complain about the price.)

Video #1 - Generate Behaviors and Make An Asteroids-like Player in less than 60 seconds...


So, what is in it? To be honest, at this point I don't even remember all of the features it has, but let me list the ones I do remember, especially the ones I feel are true top-notch features:

roaminggamer.com/wiki/images/8/8c/Behavior_gena_small.jpg
1. Behavior Generator - This is one of the biggest items in the kit. It is a add-on tool for TGB that allows you to generate behaviors on the fly from what I call 'Behavior Atoms'. I'm not going to go into a lot of detail here because I talk about it on my shiny new Wiki. But I will say, with the atoms that are currently included in the kit, it is possible to generate over 7000 unique behaviors, on the fly (in the editor), and then use them immediately without restarting the editor.

2. Atom Creator - Actually this is not yet available for download, but having mentioned the Behavior Generator, I wanted to let you know that I am also releasing a tool that you can use to process behaviors you have written and package them as 'full behavior atoms' for later re-use via the generator.

3. Datablock Generator - This is actually two small add-on tools that allow you to select a scene object you configured just the way you want it. Then, with a few keystrokes you can generate a datablock into either the managed datablock list or into the copy-buffer.

4. Datablock Manager - This add-on tool allows you to manipulate the list of managed datablocks from within the TGB editor. You can only delete, rename, and duplicate them but I think you'll still find this useful.

5. Builder Script - This add-on tool allows you to select a scene object and then to generate a script into the copy-buffer. This script will reproduce the object exactly and is defined to take a %position and %scenegraph argument. Also, the generator can recreate simple objects as well as complex ones (i.e. object with objects mounted onto them, and so forth) with perfect fidelity.

6. Behavior Usage Analyzer - This add-on tool analyzes the current level you have loaded to determine what behaviors are used by the objects in the level and how often they are used. The results of this analysis are stored in the copy-buffer using a comma-separated format suitable for loading via Excel or some other spreadsheet app.

7. Extra Built-in GUIs, Meters, and Counters - SSK (if used with the SSK project template) contains a pre-defined multi-splash screen, main menu, and play GUI. The play GUI comes ready with four different framing styles that can be selected via simples script switches. Additionally, I've written tool scripts for producing horizontal and vertical meters as well as horizontal counters, all of which support methods like setValue, increment(), decrement(), etc.

8. Quick Config & Easy Damage/Energy Systems - Actually, these are part of the newly updated TSTK (rev 105), but they are best used with SSK. Plainly stated, by using this system you can cut down prototype dev times from days to hours or less.

9. More... - There is more, but until I get the documentation all done, there isn't much point in talking about it.

You can get SSK on my site, from my new Wiki.

Be aware, I have a lot of documentation yet to write, and until that is done, you're going to be on your own. However, if you want to download it now, install it as documented on the Wiki and poke at it for a bit, by all means go for it!

For now, please be aware that it is available, and see the behavior generator in action in the two videos in this blog. Watch these at full resolution


Video #2 - Generate Behaviors to set an object's image map onMouseEnter(), and reset it onMouseLeave() in ~1:20...

~~~
Note: This is for TGB, but when T2D comes out I plan to port this (if needed).

Page «Previous 1 2
#1
09/11/2009 (2:37 am)
Awesome news indeed, unfortunately your download links on the Wiki seem to be broke.

I have narrowed the problem down to a pesky little | sign at the end of each URL. :)

Thanks again for releasing this.

Excellent job on the Wiki, looks pretty comprehensive so far ... I will definitely look into this more.
#2
09/11/2009 (2:41 am)
Doh! Sorry about that, try now.
#3
09/11/2009 (4:08 am)
Cool ... all fixed. :)
#4
09/11/2009 (7:33 am)
Looks absolutely brilliant Ed!

Where do you find the time to kick out all these quality, quality projects!

As a TGB fan I can't wait to get home and give this a spin.
#5
09/11/2009 (9:17 am)
This sounds great, awesome effort! :)
#6
09/11/2009 (11:52 am)
Good job Edward !!! And thanks for sharing this. It's a must for tgb development
#7
09/11/2009 (2:41 pm)
Awesome!!! Thank You!!!
#8
09/11/2009 (3:33 pm)
Hi Edward,
very cool resource, thanks for sharing. I already was a TSTK fan and these new TGB features are really great!

I tested some code and I have some questions for you (I post here 2 of them)

In TSTK/TGB/t2dSceneObject.cs file there are 4 non implemented methods. Functions to implement those methods are already present elsewhere in the toolkit. They are forgotten functions or "to be implemented" helper functions?

In exemplum:

/*
Description: Return true if %distObject is in-front of this object.
To be in-front, %dstObject must be within a 180-degree field of view.
*/
function t2dSceneObject::inFrontOfMe( %this, %dstObject )
{
}

could be easily implemented with

return %this.inFOV(%dstObject, 180);

or

/*
Description: Return true if %distObject is behind of this object.
To be behind, %dstObject must be outside a 180-degree field of view.
*/
function t2dSceneObject::behindMe( %this, %dstObject )
{
}

could be implemented with

return !(%this.inFrontOfMe(%dstObject));


Second question. I used even the previous version of the toolkit and I found there's an exec call you continue to use but I think it never works.

In TSTK/main.cs file, line 36

exec("./TSTK/main.cs");

is always missing, because TGB try loading "TSTK/TSTK/main.cs", both from builder and player.
Changing "." to "~" makes things work but TSTK/main.cs is already loaded (you are executing from there ^_^) so I think that line should be removed.

I'd like to talk more about tons of useful code you shared: just let me know if this is the right place or you prefer email or your new shiny (and very clear and straightforward) wiki.
#9
09/11/2009 (3:59 pm)
Giuseppe,

Thanks for the input on those scripts! (deleted some text here)
I've looked a second time and you're right the weight of those functions is reasonable and I could implement those features as you stated.


As far as where to make comments, feel free to comment here for now. I currently have all external access to the Wiki blocked and am treating it as a poor-man's publishing method. This way I can get documents to folks and still be able to update them as needed. I'll eventually bundle up some of the Wiki docs into even shinier PDF docs, but I want to get let the writing style settle out. As well I can correct errata faster.

So, again. All comments here if you please. That way everyone can see that you've made them and I have a single place to go back to for getting errata.

Note: I'll look into the part about "TSTK/main.cs" too.

Standard Disclaimer at this point: Expect some errata, but also expect that I will fix them if you point them out to me.
#10
09/11/2009 (4:04 pm)
Giuseppe,

This is a re-post/re-comment. I double checked your code versus what I was weighing doing with the dot-product calculations and inFOV() wasn't as expensive as I remembered, thus making it perfectly suitable for using in those utility functions.

Thanks again for your comments and the time taken to comment clearly on fixes/changes/ideas. I really appreciate it.
#11
09/11/2009 (5:55 pm)
Very cool stuff!
#12
09/12/2009 (2:19 am)
Nice! How do you make up for the low cost - volume? :)
#13
09/12/2009 (11:51 am)
It's good to see someone from the community making new addons and such for TGB. Just when it felt like the love has died. I can't wait to try it out later tonight. Thank you!
#14
09/13/2009 (3:21 pm)
Hi Edward,
I am waiting on T2D to come out due to my game designs needing multiplayer real time networking. I sure hope you will port this kit over to it. I see a lot of possibilities for this there. Especially with the new real time networking ability in T2D. Do you foresee difficulties integrating the new real time networking changes into your kit? Its probably too early with T2D to tell yet i guess. From what little i did with TGB, this looks extremely impressive. Must have taken tons of time to do this? Thank you so much for sharing this with the community.
#15
09/18/2009 (12:58 pm)
So I spent hours last night experimenting with the kit, taking notes etc. It's definitely useful. With the right atoms in place it's possible to make games with little or no scripting. The problem I had with behaviors is that they are nice and easy to use when you have what you need, but you almost always had to write your own as there simply weren't enough. This generator solves that issue.

I was able to successfully make my first "action atom", which seemed pretty straightforward to me though that atom generator would be great.

A couple of things had me confused so I decided to change them in my copy of SSK.

- I was able to choose two "full" actions which easily led to messy behaviors or behaviors that didn't function as advertised. It seems that the "Full" atoms are currently shown in both the event and action dropdowns. These "full" behavior atoms typically don't need to wait on an event to operate but the editor doesn't tell you that. What I did was removed those atoms from the event dropdowns, and added a new "dummy" atom to the list that simply says "Full Behavior" and adds no code to the generated behaviors. So for example if you want the asteroid controls you'd select "Full Behavior" for the event, and the asteroid atom from the actions.

- I also found that you could choose an "action" without an event, which would generate a basically useless behavior since the action would never trigger. The editor should force the user to choose an event when they pick an "action" or simply refuse to generate a behavior. I fixed this in my copy of SSK.

I'm willing to share my changes if anyone's interested.
#16
01/24/2010 (5:11 pm)
Hi Edward

I recently bought TGB and was looking around for some examples on how to write behaviors when i found this little gem of yours

thanks for sharing

I have a question though

I noticed than when i create an SSK project i can no longer add images to the project using the "Create new ImageMap" option.

When i choose that option, pops up the dialog to choose the image but when i click on open nothing happens.

Is this expected (i mean, that you can only add images by creating a resource)?

Anyway, thanks again - big help here
now here i go learn how to put my images into a resource
#17
03/03/2010 (1:57 am)
When I installed as per the wiki, i ended up with all kinds of errors

tools/leveleditor/main.cs (98): Unknown command initialize.
tools/leveleditor/main.cs (103): Unknown command addMenu.
  Object LevelBuilderMenu(1599) LevelBuilderMenu -> BehaviorComponent -> DynamicConsoleMethodComponent -> SimComponent -> SimObject
tools/leveleditor/main.cs (104): Unknown command addMenuItem.
  Object LevelBuilderMenu(1599) LevelBuilderMenu -> BehaviorComponent -> DynamicConsoleMethodComponent -> SimComponent -> SimObject
tools/leveleditor/main.cs (55): Unable to find function LevelBuilderToolManager::initializeTools
tools/leveleditor/main.cs (58): Unable to find function applyLevelEdOptions 

and

Loading compiled script C:/Program Files/GarageGames/TorqueGameBuilder-1.7.4/tgb/tools/tileLayerEditor/fileDialogs.ed.cs.
tools/tileLayerEditor/main.cs (346): Unable to find object: 'LevelEditorTileMapEditTool' attempting to call function 'setImage'
tools/tileLayerEditor/main.cs (427): Unable to find object: 'LevelEditorTileMapEditTool' attempting to call function 'setTileScript'
tools/tileLayerEditor/main.cs (453): Unable to find object: 'LevelEditorTileMapEditTool' attempting to call function 'setCustomData'
tools/tileLayerEditor/main.cs (474): Unable to find object: 'LevelEditorTileMapEditTool' attempting to call function 'setFlipX'
tools/tileLayerEditor/main.cs (493): Unable to find object: 'LevelEditorTileMapEditTool' attempting to call function 'setFlipY'
tools/tileLayerEditor/main.cs (512): Unable to find object: 'LevelEditorTileMapEditTool' attempting to call function 'setCollision'
tools/tileLayerEditor/main.cs (531): Unable to find object: 'LevelEditorTileMapEditTool' attempting to call function 'setCollisionPoly'

Missing file: C:/Program Files/GarageGames/TorqueGameBuilder-1.7.4/tgb/TSTK/TSTK/main.cs!

Could not locate texture: C:/Program Files/GarageGames/TorqueGameBuilder-1.7.4/tgb/tools/projectWizard/gui/
Could not locate texture: C:/Program Files/GarageGames/TorqueGameBuilder-1.7.4/tgb/tools/projectWizard/gui/_n
Could not locate texture: C:/Program Files/GarageGames/TorqueGameBuilder-1.7.4/tgb/tools/projectWizard/gui/_d
Could not locate texture: C:/Program Files/GarageGames/TorqueGameBuilder-1.7.4/tgb/tools/projectWizard/gui/

GuiFormClass::onWake - Content Library Specified But Content Not Found!
tools/leveleditor/main.cs (199): Unable to find function applyLevelEdOptions
tools/leveleditor/main.cs (205): Unable to find function LevelBuilderToolManager::setTool
tools/levelEditor/core/t2dProject.ed.cs (56): Unknown command newLevel.
  Object LBProjectObj(1510) LBProjectObj -> T2DProject -> T2DProject -> ProjectBase -> ScriptMsgListener -> SimObject
Set::getObject index out of range.
Set::getObject index out of range.

so I left out all the loading, executing and compiling messages, but I can't figure out why i cant get this thing to work.
this was with a fresh install of TGB 1.7.4 ....help?
#18
07/01/2010 (9:19 am)
I just installed this on 1.7.5 to see if it would work out of the box, unfortunatly it did not. I'll take a compair and see if I can figure out what happened.
#19
07/01/2010 (10:06 am)
Hmm, It appears that quite a few things changed. I do not have the source code version of this so, I guess I am out of luck. Unless someone with source code provides me with the three files updated and whatever other changes needed. for 1.7.5
#20
01/08/2011 (7:40 am)
I just tried installing this as well, followed the instructions on the wiki to a T, and when I start up Torque afterwards all I get is a black screen. I'm on Mac OS and using TGB 1.7.5.
Page «Previous 1 2