Daemon Chess
A 3D chess game with procedural piece geometry, Blinn-Phong shading, and raycast-based interaction, built on a custom C++ engine.
Overview
Daemon Chess is a 3D chess game built on Daemon Engine as a course assignment at SMU Guildhall. Every piece is procedurally constructed from geometric primitives (spheres, cylinders, AABB3s, OBB3s) defined in XML, with OBJ models also supported through a ResourceSubsystem I built to improve loading performance and asset management. The board renders with Blinn-Phong shading and a bloom post-process pass.
Players interact through a free-fly 3D camera — aim at a piece, click to select, then click a valid destination to move. A ghost piece preview shows where the piece will land before committing. The game implements the full chess rule set: pawn double-step, en passant, castling, pawn promotion, path blocking, and king adjacency.
Highlights
The raycast-based 3D interaction was the hardest part of this assignment. Instead of clicking squares on a flat 2D board, the player aims a camera ray that tests against AABB3 volumes (board squares) and CylinderZ3D volumes (pieces), with the closest hit determining the selection. Making the interaction feel good required more than just hit detection — I had to implement piece selection and cancellation states, plus ghost pieces that render at every valid destination to hint the player’s options. The ghost piece feedback turned a technically correct but confusing interaction into something intuitive.
Pieces smoothly interpolate to their target positions over 2 seconds, with knights following a parabolic hop arc. Captured pieces play a sinking animation before removal through a delayed cleanup queue. These are small touches, but they’re what make the difference between “chess logic running in 3D” and “a chess game you’d actually want to play.”
What I Learned
The obvious answer is chess rules — implementing en passant and castling from scratch means you really understand them. But the bigger takeaway was discovering what Daemon Engine could actually do. Seeing OBJ models rendered with Blinn-Phong shading and bloom post-processing surprised me — I hadn’t realized the engine’s rendering pipeline was capable of that level of visual quality. It triggered a curiosity about the render pipeline internals that’s still on my list to explore deeper. I also built a ResourceSubsystem for OBJ loading that improved asset management, which carried forward to later projects.
Technical Specifications
| Component | Technology |
|---|---|
| Language | C++20 |
| Graphics | DirectX 11, HLSL (Blinn-Phong, Bloom) |
| Audio | FMOD |
| Data | XML definitions (pieces, board), OBJ models |
| Engine | Daemon Engine |
| Platform | Windows (x64) |
Related Projects
Game Dev
DaemonCraft
A Minecraft-inspired voxel game with 6-phase procedural terrain generation, multithreaded chunk system, and day/night lighting, built on a custom C++ engine.
Game Dev
Daemon Engine
A custom C++20 game engine with V8 JavaScript scripting, DirectX 11 rendering with bloom pipeline, multithreaded JobSystem, FMOD 3D spatial audio, TCP/UDP networking, and a publish/subscribe event system.
Game Dev
Daemon Libra
A 2D top-down tank shooter with heat-map AI pathfinding, procedural map generation via worm algorithms, and bouncing bullet physics, built on a custom C++ engine.