Programming. Realtime computer graphics. Demoscene. Game development. Stuff.
Japan, here we come
The results of ImagineCup05 rendering compo were finally announced!
The best thing of course is that our demo in.out.side: the shell took the 1st/2nd place (a tie). That means that both winning teams will go to the finals in Japan at the start of August. The final winner will be somehow decided there.
That's going to be pretty interesting, methinks. We've got the 2nd place last year; the other winning team got the 1st place last year. This year, the same teams meet again, but it's still not clear which one will win. Cool.
I wonder how the winner will be decided. Will we need to to some "presentation" (techniques/algorithms/workflow/hacks used)? Maybe there will be an additional "fast demo" competition (e.g. make a new demo in 1 day)? Interesting. Waiting...
While waiting for ImagineCup results...
Aargh, the ImagineCup crew postponed the results announcement again (that is, 3rd time already)! First it had to be on June 13th, now it's scheduled for Real Soon Now, Really!
Meanwhile, I'm doing a game that surely will revolutionize the whole gaming industry, blah blah etc. That is, a letter learning game for my daughter; in Lithuanian. There are lots of these (example), but the problem is that they're in all languages except the one you need.
Now, the most obvious implementation would be in Flash. Alas, I don't have Flash authoring tools nor do I want to learn them and it's ActionScript. I thought about going Lua+SDL all the way, without C++ at all. Guess what - SDL doesn't have any high level audio playing stuff; I'm too lazy to bind it's sdl_mixer to lua; there's no nice IDE and there were lots of other obstacles. So I just went and am doing this in C++, abusing our demo engine. Oh well, I'm just lazy.
While implementing it I found out that I have no good tool to pack lots of arbitrary images into nice power-of-2 texture atlases. nVidia's Texture Atlas Tools do almost that, but they rescale textures to be power-of-2 (which is usually ok, but not for my case). So I just had to fork the AtlasCreationTool (just SVN link for now) to do what I want. While at it, I removed it's dependency on D3D sample framework (hey, removing code is always good!), forced it to support non-pow-2 textures and to pack them better. It's probably not that good for the usual case (where you want to place textures at block boundaries in the atlas to minimize mipmap artifacts), but packs arbitrary sized images pretty nicely. Yay!
I've got my Master's diploma. I feel like nothing has changed, probably so it is.
We have a pretty unreal orchid in our house. I bought it 8 months ago, and it's been blooming all the time. It's even getting bigger and bigger!
God, no wonder games are so hard to make. The tools are such complete crap. Some day there's going to be a tools revolution and one guy will be able to make the equivalent of today's $10 million games. There's no doubt in my mind.
Demo engine to game engine
A Pilgrimage 2004 talk by Tom Forsyth. Good points captured.
How to be creative
Another day I stumbled upon this: how to be creative. Overall it's good; although a bit too long and most of the content is quite common-sense. A good read anyway.
That reminds me: the other day I was thinking about a strange feeling in the town where I live (Kaunas, Lithuania). Basically, whenever I see a group (three or more) of young guys (20-25), most of the time they seem to be aggressive and angry. I don't get this feeling in the other towns/cities; I don't really know what's causing it. Maybe it's several bad experiences I had. Some of my friends have this feeling also, so it can't be just my problem.
I wonder why people are agressive at all. I mean, what's the point in insulting/pushing/beating a random walker-by? Is that the only way they can express or "feel" themselves - through invoking fear or pain on the others? Maybe; another day I read Jean-Paul Sartre's "The Childhood of the Leader" (L'enfance d'un chef) and maybe that's the case - when a person can't find "himself" he starts doing weird things.
Still, why there seems to be so many of them?
Demo engine website
Ok, I've released sourcecode for our demo engine/tools and the demo itself a while ago, now time to actually put up at least a minimal website, with some articles, download/build instructions and whatnot.
So, here it is: http://dingus.berlios.de (oh, and it has an rss feed of the recent changes, yay!).
Currently it's half empty; I expect to write some more short articles soon. Maybe even put up some standalone tools... I know that the sourcecode is useless, but I thought "maybe the articles would be good". Or maybe not, who knows.
3D engine design redux
On the other hand - maybe it's the way to go. You're designing the engine around some specific technologies and approaches, to be used in some 2-3 years.
That way, when fancy water reflections go out of fashion and are replaced by fancy waxed floor reflections, you'd throw everything out and restart from scratch. Predicting that this moment will occur only in the next console transition (hey, cur-gen can't handle fancy waxed floors!).
Pretty reasonable I think, in 2-3 years it's likely that the things will be changed in non-trivial way, so you'd need to rething and possibly remake some parts of the technology anyway.
3D engine design
I'm reading API docs of one "really advanced" modern 3D engine (found them publicly available on their site, don't know if that's an error or not :)) and... it's a strange feeling. Basically, everything's hardcoded!
By 'everything' I mean that, for example, possible shadow algorithms are hardcoded in the very base classes of the engine. Same for physics, lights, scene management, culling etc. Similar like you'd have a class VeryBaseEngineObject and that would have information "what shadows are on me?", "am I physics body", "cull me against the camera" and "render me for the water reflection".
Huh? Is that how all engines are designed? You have functionality like "shadow map", "a physics crate", "a fancy reflective water" and "a fullscreen glow with light streaks Masaki Kawase style" in the core of the engine? I'd understand if that would be as helpers or some "premade" stuff on top of the core engine... but having that in the core? Why?
Is that what constitutes a "flexible" engine?