Game Development Community

TGB Future? d6tools

by Benjamin L. Grauer · 06/18/2008 (3:53 pm) · 11 comments

Recently, Melv May asked what would be the future of TGB.
I may have one response about that, with what I call the d6tools.
dragon.six.free.fr/Misc/images/d6tools/d6tools.pngd6tools is a series of tools designed with modularity in mind, each one is independent from each other, and could be plugged and unplugged at will into any ongoing TGB project.
The objective of the d6tools is clear, being able to quickly prototype games in record times, without having to go out of the builder at all.

Right now, there's 3 of them, beta parts of the now defunct IceWolf project others are still in construction phase. I've not yet finished, but I want to see if there's interest. And I'll decide what to do next.

dragon.six.free.fr/Misc/images/d6tools/d6loader.pngd6loader:
d6loader manage the ingame load-unload of imagemaps automatically on a level basis (it unload unnecessary image and load necessary ones by looking directly into the .t2d files).

It's simple : you exec the script, and you have a loading management for every levels (if you have changing animation and such, you'll have to notice d6loader in a specific file of what classes or name of objects needs to load specific imagemaps that are not already in the levels).

This get completely out of the way the worries about ram consumption and loading times (it optimize the loadings by not unloading images that are on the next level).

You don't have to ever think about it when making your game. You plug it in, it'll simply works.

(the best example being the IceWolf demo, it greatly manage the ram consumption and loading times even with all these big textures everywhere)

dragon.six.free.fr/Misc/images/d6tools/d6sound.pngd6sound:
You want one-liner spatial sounds? you get it.
D6sounds get out of the way profiles and channels. You just type "playsfx("soundfile");" and it plays the sound. If you want an object to emit a spatial sound, you type myobject.playsfx("soundsfile") and it play a sound that follow the object. Off course, the function also let you decide the volume of the sound, if it loops or not, streamed or not, etc.

For better performances, you can preload sounds with a one liner too "preloadsound("mysound")", and it will detect and load the preloaded sound automatically when you're playing "playsfx("mysound")", gaining extra process time as the play function wont have to create a profile in realtime (but it's only if your game is really performance hungry, if not you won't see a big difference).

Plus, d6sound automatically take care of most of the OpenAL issues you may encounter without it (at least all the ones I had during the development of IceWolf).

You play the sound, it works. Simple.

(IceWolf use also an early version in its demo, unfortunately I didn't took great advantage of the spatial sounds at the time, the ambient sounds are a little too quiet to be noticeable, but it's in there)

dragon.six.free.fr/Misc/images/d6tools/d6event.pngd6event:
The most important of them all. It make a significant speed up everywhere you use it.

dragon.six.free.fr/deviantgames/d6event%20editor.jpg
It allows you to write code inside a sceneobject, allowing you to write events that happens only in a map, like cutscenes and dialogues. Those who are used to RPG maker may understand better how to use it.
The code inside is reinterpreted into a linear timeframe, allowing a greater cutscenes control, with "wait" commands and build-in dialogues boxes.

But not only cutscenes, it allows you to improvise interactivity while designing a level.
You need this box to explode but you don't feel taking the time to make an exploding box class or such for just 2 or 3 boxes? Then just open the d6event editor in the builder and tell right away to this box to explode when it is in contact of a bullet, and copy past the box to any number you need. Allowing for super fast and unique prototyping.

"Fast Prototyping? But how is this different from behaviors?"
While behaviors are great for creating cross-classes functions, it doesn't improve the workflow of quick prototyping, and for a good reason: each behavior is a predefined condition with a predefined (set of) reaction(s). It greatly limits what we can do with it.

Here's a concrete example:
-If I want a crate to jump when it's in contact with my player (or any other idea that is not in the existing behaviors), obviously there's no forcefully a behavior that does precisely what I want, and I obviously am forced to go down to the creation of a behavior by myself. I must create a new document in my game directory, deal with the behaviors specificities while writing all the code myself from another program than TGB in a CS file... It pretty much result as doing the same as scripting without behavior.
Behaviors didn't really saved me any time for my improvised jumping crate.
-In the other hand, with d6event, all I have to do, is selecting the object, press space to bring up d6event, select the condition, write right away the reaction I want in torquescript, click ok, it's done.

Basically, behaviors are great for doing the same things hundreds of times and across multiple classes of objects, but d6event is better for quickly trying new unique things (which is the very purpose of prototyping, which is really important for indies).


That's a lot of text here, and the quality of my English might be confusing, but hopefully you got the idea.
It's all about getting directly into making a game, and doing it more efficiently, instead of taking all your time managing framework stuff.

Does these modules seems useful to you? ^^'

About the author

Recent Blogs

• d6tools news
• IceWolf unveiled

#1
06/18/2008 (4:22 pm)
Looks pretty nifty to me! I could use the sound module and the event module, easy. I'm not working on anything too texture-heavy so the loader might not be something I'd grab right away.
#2
06/18/2008 (4:30 pm)
I'm all for it Ben. Knock those up and I'll jump on 'em like a silly person.
#3
06/18/2008 (6:36 pm)
These make me excited! Awesome stuff Benjamin, I can't wait to use 'em!
#4
06/18/2008 (8:00 pm)
Looks good, but I was thinking it might go in direct head to head action with Torison since it looks like an editor for scripting like T is. Looks good, I would def try it out. Good luck on the project. Hope it works out for you..

Will
#5
06/18/2008 (8:20 pm)
> but I want to see if there's interest.

Of course there is ; )
#6
06/19/2008 (12:50 am)
Sound great ^^, I can't wait to see them in action !
#7
06/19/2008 (8:08 am)
Two of these modules are ones I had planned to write anyway for an upcoming game - having them already completed in some fashion, even if they need some tweaks / modifications, is huge!

-Dave Calabrese
#8
06/19/2008 (9:47 am)
I'd be interested in all of these, with the loading system foremost.

thanks for posting this.
#9
06/19/2008 (11:46 am)
Quote:it might go in direct head to head action with Torison
No worries, d6event doesn't tries to do what torsion does.
Actual classic programming (with torsion or c++) is like a factory: It permit you to easily create a path to make hundreds of the same object. Which is a good thing for most programming needs. But it is tiresome in some cases.

D6event is all about making unique objects in the blink of an eye, without having to create a class (or manage a name) nor having to worry about ordering it somewhere in your scripts files. It's easy to create and it keeps things clean and easy to find: to bring up the code of the object, select the object itself, press space, and here's the object's code.

You can copy-paste your object and make a lot of them at will, but, as each object would have its unique personal functions, they wont inherit from each other if you want to change them all, that's still the role of classic scripting (for both behaviors or normal scripting).


Quote:Two of these modules are ones I had planned to write anyway for an upcoming game - having them already completed in some fashion, even if they need some tweaks / modifications, is huge!
I believe it's tools that everybody needs.
It seems I will need to make a good documentation/comments on the code so you could custom it to your liking :P

But, ultimately, they wont need to be modified to work. To install a module, all you will have to do is put them into your game/resources folder, and that's all, it will automatically work. Eh, You don't even need to know how to script xD
(at probably the exception of d6loader, which is a little more tricky, but I'm working on it)
#10
06/19/2008 (2:06 pm)
When I was a teenager more years ago than I care to admit, I used RPGMaker and liked how it handled events scripting. I believe this would be a move in the right direction.
#11
08/02/2008 (7:35 pm)
Yes, this is very interesting to me. Please post more about it if you can! I use behaviors a lot, but I know they are limited and it can be time consuming to write a new one.