Custom C++ Game Engine

Project Description

The foundation under my solo games, Doomenstein and NetChess3D included, is a 3D game engine I built from scratch in C++. Its DirectX 11 renderer supports model loading through a custom OBJ parser that deduplicates vertices into indexed geometry, runtime-compiled HLSL shaders, and switchable orthographic/perspective cameras. The lighting path includes diffuse directional sunlight with a configurable ambient fallback and TBN normal mapping built on a 60-byte Vertex_PCUTBN format.

The rendering pipeline is fully configurable, offering independent depth testing, alpha/additive blend modes, and rasterizer state control, with state caching to minimize redundant GPU calls. It is backed by a GPU buffer system with dynamic resizing and a resource cache for textures, shaders, and models. Around that core sit the systems a real game needs: an in-game dev console, event system, FMOD audio, keyboard/mouse/controller input, XML-driven configuration, TCP networking, and Dear ImGui debug tooling, plus a math library backed by its own unit-test and visual-test suites.

  • C++
  • DirectX 11
  • HLSL
  • FMOD
  • Perforce
View Code on GitHub

NetChess3D

Project Description

NetChess3D is a networked 3D chess game built solo on my custom C++/DirectX 11 engine. The networking layer uses non-blocking WinSock2 sockets with full WSAEWOULDBLOCK handling, and a TCP stream protocol I designed around an inbound accumulation buffer, an outbound send queue with partial-send handling, and delimiter-based message parsing that reconstructs console commands from the raw byte stream. Moves are validated locally and synchronized across the connection, with turn and seat enforcement so each player can only move their own pieces.

The game implements the complete rules of chess including castling, en passant, and pawn promotion, with piece models, materials, and shaders data-driven through XML definitions. The scene is lit through a unified point/spot light shader path, with spotlights defined by inner/outer penumbra thresholds and light data hand-packed into a 16-byte-aligned constant buffer matching the HLSL cbuffer layout byte-for-byte. A debug panel lets me edit lights live at runtime.

  • C++
  • Custom Engine
  • WinSock2
  • DirectX 11
  • Perforce
View Code on GitHub

Doomenstein

Project Description

Doomenstein is a retro-style first-person shooter built solo in my custom C++ engine, inspired by classic Doom with a wave-survival twist: demons spawn from within the walls, so staying mobile is the only way to survive. Players earn gold from kills and spend it at a Weapons Chest for random powerful weapons or a Pack-a-Punch machine that upgrades their arsenal.

Building a 3D shooter on my own engine meant implementing the full stack myself: first-person camera and movement, enemy AI and spawning, a multi-slot weapon system, and interactable world objects. The game fully supports both mouse/keyboard and Xbox controller play, and ships with an in-game dev console for live commands and debugging.

  • C++
  • Custom Engine
  • DirectX 11
  • Perforce
View Code on GitHub

DFS I

Project Description

DFS I was my first end-to-end solo game project. Working entirely on my own, I took the game from an initial concept through prototyping, programming, and polish to a complete, playable build, owning every part of the process along the way.

I began with a minimal prototype to prove out the core mechanic, then iterated on gameplay, level design, and feel through repeated playtesting. The result is a complete, playable game that demonstrates my ability to scope realistically, make design decisions, and carry a project from concept to finished build without a team to fall back on.

  • C++
  • Custom Engine
  • Perforce

Dungeon Generation in Godot

Dungeon generation demonstration

Project Description

This solo project explores procedural dungeon generation techniques implemented in Godot Engine. I developed algorithms to create dynamic, randomized dungeon layouts that ensure playability and variety with each generation, demonstrating advanced programming skills and algorithmic thinking.

Development involved implementing room placement algorithms, corridor generation, and pathfinding validation to ensure all areas remain accessible. The finished system generates fully-connected, playable dungeons with customizable parameters for room size, corridor complexity, and layout density, a solid foundation for roguelike or dungeon-crawler games with replayable content.

  • Godot
  • GDScript