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?


Demo released!

The demo I and some friends were working on in the last 5 months (spare time) is finally released. Heck, it even has a website: www.nesnausk.org/inoutside! Now waiting for results from ImagineCup…

I’ve been watching it too long to have any objective opinion. Some outsider comments are here. Enjoy!


The new chair

Got this new computer chair from Paulius for my birthday. The one where you’re half-kneeled while sitting on it (some say it’s good for your back). It’s a bit strange at first, but overall pretty cool. After a week of chair-testing I’d say it’s good. My daughter there doesn’t sit properly :)


It all depends on the way you look

Yesterday Paulius put screenshots from UE3 and our demo next to each other, wrote “right!” and “wrong!” over the corresponding shots and we realized that we’re basically screwed.

In the evening, I tweaked lighting and contrast, made some lightmaps and hand-drawn the other lightmaps.

In the morning, Paulius took new screenshots and put UE3 screenshots next to them. Then he wrote “WTF?” over UE3 ones and “world domination!” over ours. Suddenly we realized that maybe it ain’t that bad afterall.

Conclusion: it all depends on what’s written over the screenshots :)


Demo nearly finished!

(me back at work after three days of 12+ hour work on the demo)

Nearly finished the demo, gave testing builds to several people. I’m already sick with it and can’t judge it objectively. My wife says that demo lacks colours (true), lacks action (partially true) and other things - but probably she’s already sick with me doing the demo.

The other people say various things. Well, too late to change everything; I feel a bit bad - we’ve invested so much time into this and it looks pretty bland (i.e. when you compare screenshots of our demo and UnrealEngine3, one of them looks clearly better :)). Now it all depends on what demos will the other teams make.

On the efficiency side, it’s doing pretty well. I didn’t bother writing fallback effects for anything lower than ps2.0 hardware (that was great!). Our low-end-target (something like 1.5GHz CPU and Radeon 9500 64MB) the demo runs ok at lower resolutions (800x600). On our ‘recommended’ hardware that ranges from Radeon 9800s to GeForce 6800s the demo runs well; FPS counts are 60-120. Haven’t tried on any of the ’top’ video cards. Two people said it doesn’t run on GeForceFX; one effect does not get validated - that’s bad, looking at the effect I can’t tell what’s the problem and don’t have anything from FX series at hand.

Funny enough, the demo manages to run reasonably well even when it’s severely unoptimized!