Tanks

December 2020 - January 2022

View on GitHub

In the later months of Covid and throughout my senior year in high school, I spent much of my free time teaching myself programming and creating my first game, Tanks. The game is a spiritual successor to the Wii Play minigame of the same name.

The project was written in Crayon, an open-source game programming language somewhat comparable to Pygame, but with curly brace syntax. The language appealed to me because of it's open-source nature and ability to run in-browser without dependencies. The main challenge of this project was that Crayon has very limited library support, meaing I had to program most of the game's core systems and mathematical functions from scratch. The game contains manual implementations of A* search for enemy pathfinding, several collision detection algorithms for bullets, tanks, and walls, and a rudimentary vector-based physics system to handle the motion of all in-game objects. Additionally, all of the game's assets are generated in real time using only rectangles and circles (aside from menu text, which uses the Crayon text renderer).

At the time, I aimed to publish the game on Two Cans and String, a forum based social media created by Blake O'Hare, the programmer behind Crayon. I contacted O'Hare regarding the project multiple times, and he graciously assisted me with debugging code and updating my Crayon installations properly. Unfortunately, browser game support was discontinued on the site before the project was finished, though I have been told that O'Hare plans to re-integrate it in the future. I am current working towards hosting Tanks on this site, and if I am ever able to host the game on TCAS as well, I will update this page accordingly.

This project was foundational for much of my understanding of programming. I would love to return to it someday and add support for many additional features which were beyond my skill level at the time, most notably a local multiplayer battle mode.