PrimeEngine
2013
PrimeEngine is a C++-based game engine, originally developed by Artem Kovalovs. I had the chance to get hands-on with this engine during my Master's program at USC.
Aside from the core code, PrimeEngine is also compatible with Python and Lua scripting. Tools to export assets from Maya to PrimeEngine were part of the original codebase.
Over the functional framework, I was able to implement the following additional functionalities:
• Creating Custom Objects and Behaviour: creating custom models with animations in Maya, exporting to PrimeEngine, and creating logical classes and AI behaviour.
• Blending between Animations, and Partial-body Animations.
• Passing Custom Data by modifying game object MetaScripts and Lua Scripts.
• Data compression over the network, such as converting full transformations into 3 quaternion floats, and dynamically changing value precisions.
• Socket Programming.
• TRIBES Networking Model, fully working.
• Multi-threading.
• Geometric Data storage and parsing, including vertex buffers and vertex/pixel shaders.
• Culling Volumes outside the Camera Frustum, effectively reducing the number of objects submitted to the rest of the graphics pipeline for rendering.
• Texture-Coord Buffer for meshes, functional on PC, PS3, and Xbox 360.
Some other concepts that I picked up during this time are:
• Geometry Instancing.
• Post-processing.
• Deferred Rendering and G-Buffers.
• Compute Shaders.
I also worked on gameplay-level programming to make building playable titles using PrimeEngine much easier. Some specific areas were:
• Physics Components: Bounding volumes (spheres, boxes), Gravity, Acceleration/Deceleration, Conservation of Momentum, Collisions, Knockbacks.
• Simple Physics Engine, sufficient for a car racing game. Includes fundamental mechanics like Drifting, Handbrake mechanics, Hit-and-rebound.
• Ammo system for players.
• Player HP system.
• Python scripting on Maya, including the use of multi-threading.