Projects
Fanorona Engine in Rust
rust-fanorona
is a Fanorona library written in Rust, with move generation capabilities and move validation. It was
written as an exercise in developing a medium-sized codebase in Rust and also to supplement the work done for the
Fanorona AEC Environment, where the Rust-based engine could
potentially be plugged in to speed up execution.
VSCode Markdown Reddit Spoiler
A VS Code extension written in TypeScript that implements the Reddit >!spoiler!<
syntax to the built-in Markdown
preview. I found it useful to implement Q&A-style notes while studying Reinforcement Learning: An Introduction (3rd ed.) by Sutton and Barto.
Ray Tracing in One Weekend (in Rust)
A Rust-based implementation of Ray Tracing in One Weekend by Peter Shirley. Aside from the fairly straightforward translation of the C++ code to Rust, I also managed to parallelize the rendering code, allowing a speed-up of $\approx 72\%$ in rendering the final scene.
Sokoban Solvability Predictor
A Python and TensorFlow-based machine learning project attempting to build a model to predict the solvability of a Sokoban level. The motivation was to test the capabilities of CNN-based models to solve a longer horizon planning task, and also to simply develop an end-to-end machine learning application. The dataset was compiled from various collections of Sokoban levels online, with their pre-processing and cleaning done by me. I used a fairly standard CNN-based model that’s also been used for image recognition tasks. The model is able to achieve an accuracy of $74.69\%$, which is marginally better than the majority label rate of $72.5\%$ in the dataset.
Fanorona AEC Environment
An implementation of the board game Fanorona as an environment in the PettingZoo AEC interface. The project is intended to be a test bed for a research project involving extracting interpretable strategies which can be presented to a human player in order to improve their skill at Fanorona. It is expected that this work will extend to uncovering similar strategies for any other task on which an RL-agent is trained.
r/Tekken Bot
A bot written in Python to provide various useful functionality for r/Tekken, a subreddit dedicated to the Tekken fighting game franchise. It automated the updates of the livestream widget that displayed the top Tekken Twitch streamers in real-time, as well as the Tekken Dojo system that awarded points to helpful users who answered newcomer questions, along with presenting a tabulated summary of the top-scorers and awarding them with a unique flair.
Terragen - a procedural terrain generator using Perlin noise
A project developed for the final submission of CSC 562: Game Engine Design. It is a Javascript web application which uses Perlin noise to generate simple 3D heightmaps using WebGL. It adds tree-like objects to the map (also using Perlin noise) to improve realism.
WhatsApp Chat Log Parser
A small, Python-based script to parser a WhatsApp chat log into a csv file to enable subsequent analysis.