Drag & Drop is an effective way to teach computer science concepts to novice computer programmers. I created an editor for GameMaker’s popular action library format using Vue.js and native HTML5 form elements for the front-end.
MonoGame Quadtree Terrain
A quadtree is an efficient data structure for frustum culling invisible patches of a 3D terrain. Because a typical projection matrix has a 60 degree field of view, the camera on average only sees about 1/6th of the terrain. Using a quadtree allows us to quickly dispose of a node and all of its children using a single bounding box collision check. This was my first time creating such a terrain engine and I intend to add geometry mipmapping in the future based on a SIGGRAPH paper published by Digital Illusions Creative Entertainment (DICE) for their Frostbite engine in games like Battlefield.
Today video game consoles and gaming computers have dedicated GPU’s that render millions of polygonal vector graphics. But computers used to do graphics in software and it was very expensive to render 3D objects and landscapes. This made algorithms for rendering voxel heightmaps popular and they were used in games such as Comanche and Outcast. It involves casting a ray for each column of pixels on screen onto a 2D heightmap.
Broad-phase Collision Detection
Collision detection is an important part of a game engine that can be separated into two phases, a narrow phase and a broad phase. The narrow phase of collision detection generally involves polygon intersection tests using the Separating Axis Theorem. A broad phase is usually created to speed up the narrow phase by reducing the number of collision checks. In my experimental broad phase I used a sparse spatial hash that grouped objects into “buckets” and performed axis-aligned bounding box checks to enumerate a hash set of collision pairs.
DockFX is a fully featured docking library I created for the JavaFX platform. A docking library creates a reusable, modular, and customizable interface that end users can change and modify as they see fit to tailor a program to their needs. The source code is published on GitHub where regular binary releases are made available.
ENIGMA Development Environment
Design and implementation of new systems, features, and extensions to the architecture of the main engine and compiler. I developed alternative Direct3D rendering back ends and started an OpenGL 3 compliant port that would be compatible with OpenGL for embedded systems. ENIGMA is the software that provides the ability to compile your games through a compiler of choice and distribute them for multiple platforms. I also improved the IDE by adding support for additional formats and platforms.
This is an open source 3D platforming example I created for aspiring game developers to learn from. Game physics used an existing collision detection system I optimized with spatial hashing algorithms. Most graphics and 3D modeling are my original work with Blender.