Site News


at home I am mostly offline right now as my precious computer won't start … or to be more precise the OS fails to boot. It's been 3,5 years of the same win2k installation, so that's ok. All my attempts to repair it, failed so far … I have a backups but they are not entirely up-to date. So doing the backup of the remaining GBs under Dos using SATA drives is not something that works quickly and without babysitting. If you have a tip for this, let me know.

The positive aspect of the story is that it's a good moment to update to winXP … I don't like that XP doesn't offer the ability to interrupt the OS scheduler like in win2k when some program just grabbed all the system resources so even the task manager won't show up. On the other hand, most of the modern games refuse to work on win2k … so it will be XP … I guess that's still better than Vista?


Although I recently read from a guy that turned off most of the 'new' stuff and seemed finally to be happy with it.
I meanwhile, if you send me an eMail it might not get answered so soon.

Initially you had to register to be able to post comments. Then I added an Anti-Spam plugIn called "Akismet". First it worked really well but now it doesn't stop marking real comments as spam.

From time to time I check those but it might happen that the one or other slips through and gets deleted. In case you posted a comment and it does not appear after 1,5 days, please let me know.

Moreover if you have some tips for me about Akismet or any other effective spam filter plugIn for wordpress – then please let me know.

I still have my old site online where you can grab some maxscripts like Verty or Distributy or read about some of my very first Virtools projects ! I setup that site in 2003 where auto-resizing/-centering pop-up windows for images were probably still state-of-the-art. Now it's totally old-school …  hehe …


Anyways, I discovered but ignored for a while that the script didn't work anymore for Mozilla Browsers. I just had to add one condition to fix it for FireFox 2.x. I hope it works now for everybody (that has JS enabled) – if not let met know.

This year, it seems that there are not that many blog entries from me. I have tons of drafts in the back-end, but somehow lacking the time to finish them … some also might be outdated or obsolete due other blog entries. Some of them are Virtools related containing some workflow hints and one even with details about our one-click build pipeline that we use now for all our projects.

The problem is unfortunately, that I am not allowed to go into details for this kind of stuff. It boosted our productivity by a massive factor, … really massive. Virtools says that they are working with some of their customers to offer their pipeline solutions and consulting for others. Probably they mean Leviathan Games as they are a close partner and already published information about their pipeline. Their publication was also the reason I kicked our old system and designed a new pipeline and tool. We had assets reloading before using the webplayer and some custom DLLs but, besides it went incompatible with the new Virtools Life Player, it still was too much clicking and the iteration frequency still low. I didn't kicked it all out. We already used directories for classifying assets for the post-import processing step and it's still a major element besides identifiers in names.

I have an article draft were I talk about how to easily export components developed in a sandbox CMO as part of a team or development workflow. It's from the pre 4.0 Selection-Set area and certainly nothing new for advanced users, but maybe there are still some 3.5 or 3.0 users, that might find that information useful. I'll try to publish this one soon.

Some time ago I also modified the occlusion manager. Though Virtools does not come with complete source codes, they fortunately include a larger amount of BuildingBlock and Manager sources in the SDK. I only wish I would less often have to dig into these.Wink

The docs say that the occlusion manager may take a lot of processing time if there are too many occluders. So my first thought was to add and remove occluders according to some scene analysis. But the manager rebuilds the hull each time you assign the attribute – so not the best thing to do frequently. Therefore I modified it so I can enable and disable occluders without the penalty of rebuilding a hull. Moreover I added a special occluder type: ghost occluders. The object is invisible but still acts as occluders – useful if you want to simplify a hull even more by using a custom proxy object/mesh.

Like usual I am a bit late with this …


I updated my blog-system and normally you should now be able to comment without beeing forced to register. Before I used registration to protect comments from spam but now there are extensions doing it – we will see how solid they are …

Last week, a co-worker brought his Wii with him and that was my first chance to try it for myself. I like it – like everybody else! We had some fun with tennis, bowling and boxing. Though boxing seems not to react that fast to one's movements. Great toy!

Let me end this first post of 2007 with a little tip for programmers like me that do not dream binary: a flow-chart that helps to find a fitting STL container. It's from and it's linked from the Game Programming Wiki.

Aide for choosing containers

I've seen some interesting Virtools projects where unfortunately the behavioural approach (like promoted by Virtools) is used too extensively with a huge number of objects and lots of scripts. If you have then a look at the profiler you see the behavioural manager is eating a lot of CPU power. Why?

I think it's ok to say that the behavioural manager is currently working a little bit like an interpreter because it needs to parse the graph of BuildingBlocks in order to check and manage the activity states of the linked components. The more deep and nested your graph is, the more it needs to traverse the graph – at least potentially. It depends on the activity states of the links and BuildingBlocks. That's also why you try to separate and wrap parts that are only active once in a while. A manager-like approach (one script handles many objects) might be a better approach for such situations.

Recently I started to read a little bit about (low-level?) continuations and (higher level?) coroutines , tasklets , micro-threads , generators. Some of this stuff was or is in stackless phython. There are some interesting articles in regards of implementing game object logic using concepts like tasklets. Maybe something like a behavioural engine could be implemented using either signals-and-slots or these tasklets and would then probally not suffer anymore from so heavy performance penalties when using lots of scripted objects at the same time. This concept of micro-threads is also used for EVE-online – a very complex MMOG. Some more interesting links:

Game Smart on Coroutines
Multithreaded Game Scripting with Stackless Python
Stackless Python: about Tasklets
Discussion Thread about stackless python, co-routines, micro-threads etc.
Gamasutra: Game Scripting in Python