CryMore Engine

The CryMore Engine is a game engine me and a fellow student have created together for a school project.

The engine is created in c++ along with opengl and SFML and scripting is done in lua scripts. Another team member has created a level editor in c# accompanying the game engine which scenes could be loaded in from lua.

 

 

download BugEscape here.

________________________________________________________________________________________________________________________________

I’ve been working on the engine itself since the start and am still implementing features at the moment thought the engine is mainly created within 3 weeks while the project was running. I’m pretty proud of how dynamic it was in the end with the lua implementation.

These are the most ambitious features regarding the game engine

  • fbx loading with vertex animation
  • Multiple colliders using double dispatching (sphere, capsule and box)
  • octree¬†collision
  • shader programming and materials
  • pointlights and phong lighting
  • lua scripting component per object
  • 3d sound listeners and sources
  • object parenting

One of the problems that we stumbled upon was that lua normally only uses static function but we wanted to be able to add script components to our GameObject so they could each have seperate behaviours. We’ve managed to fix this using a library called LuaBind (http://www.rasterbar.com/products/luabind/docs.html). This way we could make use of classes, functions and variables that feels a lot like Unity3D C# programming.

 

classdiagramcrymore

 

Octree implementation visually in the engine:

octree

samplecode double dispatching, this sample code is consisting of my collider classes resolving the collision using double dispatching.
The colliders are component based and called by the colliders Update function. In combination with the octree this is something I’m pretty proud of.

 

1 Comments

  1. Pingback: CryMore Engine and octrees | Portfolio Rune de Groot

Leave a Reply

Your email address will not be published. Required fields are marked *