Programming. Realtime computer graphics. Demoscene. Game development. Stuff.
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?
I'm guessing you're talking about the Unreal 3 Engine. Am I right? The Unreal guys make a pretty engine, but not nescessarily a well designed one.Post a Comment
But it's not because they're dumb. It's extremely difficult to make a high performance general graphics engine. Hard coding the effects up front makes it easier to ensure that the engine actually works.
...random developer guy