The Ultra Game Engine is a fully homemade game engine written in C++, which mainly targets Windows.
I have been working on this project before highschool, when my game projects at the time had requirements which frequently led to limitations and bugs on other engines.
Plus, I wanted to give myself a challenge. I always liked complex problems and technologies, which is why I like C++ so much.
UPDATE : The first version of UGE, which has been in development for 5 years, has been discontinued.
As of January 1st 2023, development of UGE 2.0 has begun. This new version will aim at remaking many of the systems from the first version into
better, more stable and easier to update implementations, while bringing optimizations wherever possible.
Goals of the Ultra Game Engine
UGE is not only meant to be another game engine, it is meant to bring a different vision of building games for optimizing development time, as well as optimizing the games themselves.
To do that, The engine follows a set of guidelines, aimed to influence the development of this game engine in every way :
-
Keep it simple : The primary goal is to build simple games over a simple software. The engine is made for games that are not too terribly complicated
(no complex geometry, no eye-blasting visual effects), and mainly concentrate on gameplay. A quick observation in the world of gaming leads to these straight facts :
Games are getting overly complex, with new triple-A titles weighing over 50 gigabytes, and the new GPU-accelerated raytracing technologies (NVidia RTX, AMD Radeon RX...) all
confirm the fact that game development has turned into a simple and brute-like race to reach perfect realism. Not mentioning how games take more than seven years to make...
only to come out in an alpha more than a release, filled with bugs and crashes.
Even today, simple games can still be a good experience, and people who want to play games should not have to invest thousands into a high-end desktop to barely run the latest games on the market.
-
Your game must run on a potato PC : This is probably the technical pioneer of the guidelines, and definitely the motto of the game engine. If an empty sample project
weighs more than a hundred megabytes, don't even try it. It cannot run at 60 frames per second on entry-level hardware? Shame.
Implemented and Unimplemented Features
UGE 2.0
Below is a list of the systems currently supported by UGE 2.0 :
- Math library with SSE support
- Rendering with OpenGL 2.0 (in-dev)
UGE 1.0
Here is a (non-exhaustive) list of the systems supported by UGE 1.0 :
- World / Entity / Component system (limited)
- Base library : Math library (with limited SSE support), Time management and Scheduled tasks, Class Reflection, Serialization
- 3D Rendering : Direct3D 9.0c implementation, Deferred rendering, Materials & Shaders, UI rendering
- Physics simulation (relies on Havok)
- Audio system
What it did NOT support :
- Threads
- Character animation
- Event system
- OpenGL support
- Versioning and backward compatibility for serialization
- Networking and Multiplayer
- 3D audio sources
- Lightmaps / Baked lighting
- AI / Navmesh
- Splines
- Brushes
- Post-processing graphical effects
Technologies Used
For rendering, UGE 1.0 relies on Direct3D 9.0c.
For physics simulation, UGE uses an old Windows-only package of Havok released in 2014 (back when Intel still owned the company). After Havok was bought by Microsoft,
These free packages were discontinued. Switching to Bullet Physics might be an option in the future.