File: The Nuclex Engine
- File Size:
- 10 MB
Some time ago, before I switched over to C#, I was an avid C++ developer (and you can bet, I still am!). I was hopping between 3D engines, looking for a well designed and dependable engine I could build my indie games on. After some proof-of-concept projects using The Nebula Device by german developer Radon Labs (Urban Assault and Project Nomads) and later Ogre, I decided to roll my own.
Thus, the Nuclex Engine was born. See, the overall design of engines like Ogre, The Nebula Device or even Crystal Space is quite neat and if you are willing to concentrate your efforts on the game alone (which you should, if you want to turn your work into money), these engines can all carry your project to the shipping stage. But I felt their design wasn't as clean as it could have been, the interfaces were not as lean and convenient as I knew they could be made.
Support Plugin Image Video Audiere Input Scene Script |\ ___|_______|_______|_______|_______|_______|_______|_______|___| \ |###|#######|#######|#######|#######|#######|# | | \ |_______|_______|_______|_______|_______|_______|_______|_______ / | | | | | | | | / Math Storage Font Audio RStates GUI Terrain |/
Of course the work was far too great to ever reach the finish line (I had an actual finish line drawn out all right), but it taught me a great many of things about design you can not easily acquire from books. And I was obsessed with design when I wrote this engine -- anything else came second to creating a design that literally forced you to do things the right way. It boasts quite a few cool features. With its current kernel and plugins, you can stream data out of .zip and .rar archives without creating any temporary files on disk, convert any RGB-based pixel format into any other with optimized code that is generated at compile time by template magic and create themeable GUIs with anti-aliased text. You've got 100% platform abstraction, allowing games based on the engine to be ported to linux effort-free. Only plugins contain platform-dependent code, and most of them use libraries that work on several platforms.
With this post, I'm releasing my work of over 3 years to the public, free of any cost. It's not a completed engine you can just take and build your next game on, but it's not you typical abandoned pile of code either.
Anything (and I mean anything without exception!) is carefully documented using Doxygen tags. It builds on cutting-edge C++ programming and makes use of Boost, Loki and libsigc++. I think this engine shows many interesting design approaches and that it can be of great value in studying new engine design approaches. It is my hope that it will be of use for someone out there to learn from it!
- The Nuclex Engine consists of about 40,000 lines of code. The code is highly efficient and makes full use of STL and Boost, I expect most developers would require about 120,000 lines for the same.
- Around 50% of the code is comments (not commented-out code, but actual english sentences :P)
- According to the intermediate COCOMO model, this project should have taken 10 person-years to develop, which pushes the estimated development cost way above the $500,000 line.