Archive for small

I said “hey! what’s goin’ on?”…

Posted in awkward, utilities with tags , , , , , , , , , on April 18, 2009 by tayron

Hello again.
As I was saying in my previous post, I’ve been working on a project for a contest for some time now. I think it’s time I explained a bit.

First off, I’d like to explain a bit the idea of “procedural generation”.
The thing is that you can create almost anything out of basic shapes, by adding simple operations. For example, you could create a house by adding a box, then another box, which you move on top of the other, and then scale it’s top vertices so that it looks like a roof. That’s 5 operations including the box creation thing (and a “select” operation to select the vertices you are scaling). What if you stored these 5 operations instead of all the vertices of the model and, at runtime, generate the model based on that? Well, to start with, you’d have a very small file size. 5 lines of text fit inside of 100 bytes. And, secondly, you could apply this technique not only to models, but to textures and sounds too. Imagine squeezing a 5 mb texture inside a 500 byte script that you can then use to generate the textures in your game.

Actually, there are people doing it. If you’ve searched the net a bit, then you might have stumbled upon The Demoscene. This is a congregation of demo making groups (like Cospiracy, Brain Control, Farbrausch). These guys practically make non-interactive demos using procedural generation for…well, basically everything. I’ve seen 64kb demos that generated enough data to fill 4 gb, in less that 30 seconds. The technology is there. You just need to use it.

Now to get back to my project. Procedural generation has always amazed me. In conclusion, for the contest(and not only for that) I’m taking part in, I made a procedural modeling tool. Basically, you create 3D models, which are then stored as a script, which you can then use in your game/simulation/whatever. It’s almost done. Still have some things to work on, but it works!

And here’s a screen-shot to prove it 😀 (2 more operations for the chimney 🙂 )