::’Z’ Engine:: concept overview (I)Posted: April 3, 2011
What I call ‘Z’ engine is my own game engine I’m implementing from scratch. As a personal project it is deserved to be in continuous evolution an refactoring, but here is a shot description (and non-exhaustive) of my key features :
- Why ‘Z’: I really don’t know why, but if you have an idea…
- Mobile platforms in mind: My first idea was to implement an engine for mobile platforms (handheld consoles, smartphones, …) especially iPhone. So the performances is a big topic.
- Simplicity: Within my job, I worked with many 3D engine, libraries and production tools. From famous ones like Criterion’s Renderware or Sony’s PhyreEngine, to studio’s in-house. Generally, whatever they are rigorously structured or not, they all have a common characteristic: complexity. Of course I don’t pretend to be a better skilled nor better organized programmer and I’m totally aware of all an engine has to managed including some production constraints within a large team. But here is the key: it’s my own engine, not deserved to be used by someone else coder nor artist, not associated to a complex level editor, etc…
So I can assume the user (me) know the engine and know what to do with to prevent errors, and it is implemented as a big sequencer. Each “sequence” could manage lot of things including low-level calls or other high-level sequences (and so be quite a sequencer itself). It’s a kind of hard-coded world -but with bounds- the oposite view of any regular team producted engine which needs to be robust.
- Cross-platform at no-cost: As said before, my engine is first designed to allow me to play easily with iPhone SDK features. So the engine uses openGL API (I like directX but…) without a lot of abstraction within a high-level encapsulation (simplicty, you know).
It could also be used on desktop Windows PC and Mac OS. The platform specific system stuff is kept to minimum, with no vitual-calls as I’m sure one and only one implementation is used at any time. I also use cross-platform libraries when possible (OpenAL, etc…)
I’m not excluding possibility to later use other 3D API like the one in XNA framework (I’d like to play with Windows phone development too, or with consoles one day), but currently I like to implement my “sequences” draw without any astraction.
The engine is implemented in C++. Objective-C is used only for specific iOS stuff (Cocoa, File loading, etc..) not because I dislike it, just because I love C++ and know him well for many years.
That’s all that currently come to min mind. Maybe I will give other fatures or detail this ones in another post.