A simplified, in-progress, solo-developed port of Civilization 5 written fully in Processing Java, built as a playground for experiments with LLM-based CPU AIs.
This is the largest-scale project I worked on, with 5k+ lines written, and a wide scope ranging from terrain generation to local multiplayer.
The development process has taken ~2 months to reach ~70% completion of my project brief, created at the start.
Taught me: Performance optimization, improved my debugging skills, and made my coding practices more maintainable.
Using perlin noise for humidity, altitude and temperature noise maps, and adapting tree growth algorithms for pruning/merging rivers.
Use delta compression, game states that affect other players immediately (e.g. coming within range/attacking enemy unit) are transmitted to the player via host. Discrepancies are resolved each turn by host, residual data distributed.
Compatibilizing program with the P2D OpenGL renderer to utilize GPU hardware acceleration, implementing culling and level-of-depth for rendering, and quadtrees for clicking.
An LLM fed game states that performs analysis and considers real-world cases, outputting next-move decisions and long-term game plans. Inspired by the paper Richelieu: Self-Evolving LLM-Based Agents for AI Diplomacy.
Developed prototype for a military LLM agent. Made revisions in greater architecture to account for latency, context window saturation, semantic decay and coherence drift. Llama 70-B has been used during demos for its price, RAG performance and 128k context window.
A portfolio website showing off my projects.
This project took 5 days to make, refreshed my knowledge on SVG animation, CSS and Cloudflare web hosting.
Experimented with a minimalist-theme for the website, allowing more focus to be placed on the projects.
What I found most difficult: Words drifting off the avatar, color coordination, web responsiveness between desktop/laptop