Lessons from Outline 2006
Published Monday, June 05, 2006 by Glow | E-mail this post
Okay I'm back from
Outline 2006. I've actually managed to create a small 64k demo at the party place. I started on saturday morning at around 9:30 and worked through the night till sundag afternoon at around 18:00, which was de deadline. I started with only a kind of working Gentex and an exporter and geometry plugins for Maya, but they all used XML. So I had to build my own renderer and mini demo engine. And I also made a crappy animation evaluater. The final result is way less than what I hoped it would become, but I think it's okay for one and a half day of coding.
During the coding I experienced lots of problems, of which some were just plain bugs crashing your whole demo (never forget to init your classmembers in teh constructor! it can same you a whole hour of debugging :)), and some where fundamental design problems (using XML in your 64k demo is not size-efficient ;)). The things I learned this weekend can be summed up to this:
- Don't rely on XML completely. The demo should use it's own custom packed format. I first build in XML support (using TinyXML) but then I didn't have much time left to implement a completely packed data format. So I made my own XML to kindof-binary-XML convertor. So I just had to write my own XML reader with exactly the same API as TinyXML, but which uses the binary XML files. Well it worked fine. But it's still not very size efficient. In the future I should my own binary packed format. And let the demo use that one from the start.
- Create your own crt lib, with only the needed essentials. I used Visual Studio 2005 at the start, saturday morning it was. But it created way too large exe files. In the past I used Visual Studio 2002, which is capable of creating way smaller files. After some analysis it turned out that the problem could be solved by creating my own CRT lib, and use the "Ignore default libraries" option, ignoring the default LIBCMT.lib. This was not something I wanted to spent too much time on, since I haven't done this before, so I simply decided to port back to Visual Studio 2002. But for any upcoming projects I really need to spend some time on setting up my own tiny CRT lib.
- Linear interpolations suck :) I was too lazy to implement smooth TCB animation curve support. But the linear interpolation I used in the animation curves for the demo were really sucky...
- Don't create an engine and tools at teh party place :) Next time I only want to focus on visual design at the party place ;)
- Sound makes up 50% of a demo. Not in size, but in resulting quality.
- UPX is absolutely not the best packer around. I used UPX on our demo. If I had only done some googling I would have known that there are better free packers around. I could have squeezed out another 8kb of packed data. That would be around 30/40kb of unpacked data! That's a lot :(
- I need more nodes in Gentex. People don't like checkerboards and simple plasmas.
Thanks go out to Izard, Cosmic and Cyrex for creating a cool soundtrack using a tool they'd never seen or touched before. And thanx go to some guy named Dylan for giving me the lib of
farbrausch's soundengine, named
V2. Integrating v2 in the demo only took 15 mins. And it works great. But on my next project I think I'll create my own tiny engine, using
Buzz machines, rather then falling back to v2.
Ohw and we were ranked second (out of three contestants ;)), which got us 25,- euros and a free t-shirt! Hooray! :)
You can download Obsoleet here:
Inque-Obsoleet.zip
Obsoleet is now listed on Pouet.net. And apparently there was already some other (good) demo named 'Obsoleet'. Well, too bad :)