Engine Development

This project is an in house game engine developed for use in lab assignments and student projects at Full Sail University. The engine implementation is partly done in libraries that students have to replace as they go through various courses such as Engine Development, Networking and AI.

Software Used  

Languages Used  

Visual Studio

C++

Feel Free to Download the Source Code.
Source Code

Project Content

Memory Management (particle systems)
MatrixBehaviors
FrustumCulling
BVH

Programming Code

Programming Explanation

Memory Management (particle systems)

  • Memory Manager LabThis lab was designed to show a simple implementation of a Memory Management system. It was good training  for testing familiarity with pointers, cyclic doubly linked lists, and problem solving skills.All functions were implemented inside the FS Student Game Engine, this mimics the real world scenario of working within an existing code base.  Code is written in MMHeap_TODO.cpp and consists of the following functions. Reading the class declaration in MMHeap.h is also advised. Note: If the flow of execution is updated be sure to lock/unlock the heap appropriately. To view memory usage metrics pull down the output console with “o” then use “u/i” to reach the memory page. To dump this information (and more), use the following command in the input console MetricDump.To execute a core dump, open up the input console (~) and use the command CoreDump.

MatrixBehaviors

  • Matrix LabFor this lab we implemented various algorithms related to entity behavior and camera movement using matrices.  The FSGD Engine is also a good opportunity to practice problem solving and debugging skills as well as trying to familiarize with a large pre-written code base.

FrustumCulling

  • Implement the view frustum calculation and testing algorithms from lecture
  • Setup - Add support for drawing colored AABBs to your debug renderero Drawn as 12 edges. Declare an array of AABBs before entering your main loopo Randomly position them across your grid.
  • Calculate Frustum Corner - For the camera transform, use your translating/moving transform that you previously made thetarget of the lookat/turnto algorithms
  • Frustum Outline -  Draw the edges of the frustum using your debug renderer. Draw the normals of the frustum using your debug renderer
  • Frustum Culling - Implement testing of the frustum against AABBs in the scene. Draw the AABBs with different colors, depending on test results
image

BVH

  • Create a BVH class• Build a BVH using the insertion construction methodo Use the triangle bounds as the objects to inserto Keep the BVH ignorant of the specifics of the datao Ex: Have leaf nodes store an AABB and an integer ido Use the Manhattan distance between AABB centers as your cost function

Controls

  • WASD – move the camera
  • Buggy:  I – drive forward, K drive backwards, J turn left, L turn right
  • Mouse to pick up and drag entities
  • PGUP/PGDN – Change the Camera Mode
  • Keys 2, 3, and 4 will toggle viewing the additional debug buffers (Note: normal scene should be visible any time)
  • "~" opens the console