A Minecraft strategy mod, a trigonometry city builder and follow-me drone software.
CivMod
Active · 2026
A grand-strategy layer for single-player Minecraft: nations, cities, research and war.
CivMod turns a single-player Minecraft world into a strategy game. You found a nation and build cities while AI nations expand, research, trade and go to war around you. A city planner imports Litematica, Sponge schematic and NBT structure files, and visible builder NPCs place them block by block from the city's own stores.
All the game rules live in a plain-Java core with no Minecraft imports, about 10,400 lines with 8,000 lines of tests, so the simulation can be tested in seconds without starting the game. NeoForge game tests and a client self-test cover the parts that touch Minecraft, including loading saves from every earlier milestone.
Running the design numbers on real world seeds produced zero AI wars, because AI capitals spawned 36 to 147 chunks apart and never met. Raising the neighbour range from 32 to 96 chunks gave five wars and one elimination over 240 game days on one seed. Two other seeds still gave none, and that is logged as an open problem.
- 348 JUnit tests on the pure-Java core simulation Oct 2026
- Neighbour range raised from 32 to 96 chunks after real seeds produced no wars Oct 2026
- Optional 512 by 512 chunk wrap-around world; the default world stays byte-identical Oct 2026
- The in-game guide is checked by a test: 256 characters a page and no digits, so retuning never makes it wrong Oct 2026
Built with Java 25, NeoForge, Gradle, JUnit, NeoForge GameTests
Lafayette Rising
Paused · 2026
A 21-day trigonometry course that pays out in buildings for a Cajun city you design.
A browser game for learning trigonometry over 21 days. Each day is a level of problems, and solving them earns buildings and residents for a city modelled on Lafayette, Louisiana, which you lay out yourself.
The first version filled the city in automatically. Phase 1 replaced that with a serializable grid model: buildings have footprints that collide, can be rotated, moved and demolished, and old saves migrate to the new format. Phase 2 made roads matter. A building only counts as active if it touches a road, which needed connectivity logic and a second save migration. Game state lives in a zustand store saved to the browser, so there is no server.
The city logic has 51 tests. The plan runs to five phases, ending in a SimCity-style economy with services and disasters; work stopped halfway through phase 2, with seven of its thirteen tasks done.
- 21 levels and 21 building types Jul 2026
- 51 tests on the city model Jul 2026
- Two save-format migrations so older cities keep loading Jul 2026
Built with TypeScript, Next.js, React, zustand, Tailwind, node:test
followme
Paused · 2026
Drone software that follows only the person who enrolled at takeoff.
Software for a drone that follows one person at a set distance. The subject enrolls by standing in front of the camera at takeoff, and there is deliberately no way to point it at someone from a photo. After that it tracks them with YOLOv8n and ByteTrack, and when they disappear behind something it finds them again by matching face (ArcFace) and body appearance (OSNet).
The safety rules are a tested state machine: hover after one second without the subject, land after eight, never exceed 1.5 m/s, and stay inside a 30 m geofence. A body-only match can never take over a lock that is already held, and the lock uses hysteresis so it does not flicker between people.
The full detect, re-identify and control loop runs at about 8 frames a second at 640 by 480 on a laptop CPU. Five scripted scenarios cover walking straight, hiding behind a wall, a stranger crossing, turning away and stop-start. The PX4 simulator adapter is written but has not been run yet.
- About 8 fps for the whole pipeline at 640x480 on a laptop CPU Sep 2026
- Hover after 1 s without the subject, land after 8 s, 1.5 m/s cap, 30 m geofence Sep 2026
- 51 tests, including the safety state machine Sep 2026
- Enrollment only from the live camera; no photo-target mode Sep 2026
Built with Python, YOLOv8n, ByteTrack, ArcFace, OSNet, MAVSDK, PX4 SITL, pytest