Games

Duck Dive

An arcade side-scroller where you play as a mallard duck avoiding obstacles. Available on the Google Play Store and itch.io.

C# Unity Google Play WebGL

Duck Dive was my second mobile game release. I used what I had learnt from Space Tracer and built upon it to create an arcade side-scroller game with high replayability. I tried to capture the simple but fun nature of popular mobile games around 2010 such as Temple Run and Flappy Bird. The inspiration for the project was watching ducks at my local lake feed off of the bottom of the lake by diving underwater.

Players tap or hold on the screen to dive underwater, earning points by navigating through underwater obstacles without collision. Contact with any obstacle results in a reset, encouraging careful timing and positioning. Whilst on the water's surface, players can swipe upward to launch into the air, where collectible items such as bread and peas provide bonus points. However, airborne hazards like hawks and swans introduce additional risk, requiring quick decision-making. An oxygen system adds a strategic layer to gameplay. Diving gradually depletes oxygen, which is slowly replenished upon resurfacing. This creates a constant trade-off between staying underwater to score points and surfacing or flying to avoid danger. The games difficulty gradually increases which increases the speed of obstacles and reduces the speed that your oxygen replenishes and increases how quickly it depletes.

A screenshot of Duck Dive with an overlay showing touch screen controls

I Implemented Google Play Games Services integration for achievements and global leaderboards. Built a scalable unlockable skins system using PlayerPrefs and Scriptable Objects, enabling dynamic unlocking, persistent selection, and runtime sprite swapping via a centralised SkinDatabase scriptable object.

A screenshot of Duck Dive with an overlay showing touch screen controls
Space Tracer

A fun top-down arcade game which mixes Space Invaders with Galaga. Available on the Google Play Store and itch.io.

C# Unity WebGL

Space Tracer was my first published mobile game, designed as a touchscreen-first, top-down arcade shooter inspired by classics like Galaga and Space Invaders. Players control a ship by dragging the ship with their finger along the bottom of the screen, the ship is restricted to horizontal (x-axis) movement, the main gun automatically fires at incoming enemies. The core gameplay loop focuses on surviving increasingly fast-paced waves of enemy ships and projectiles while building a high score. The game features up to 20 unique waves, with a boss encounter every 5 waves. Waves loop continuously to create an endless progression system, the games difficulty increases over time. To support the player, randomised power-ups drop during gameplay, adding variety and quick strategic advantages.

A screenshot of Asteroid Assault where a large asteroid and an asteroid field are shown.

Integrated Google Play Games Services using the CloudOnce plugin to implement leaderboards and achievements, encouraging player engagement through competition with friends and global high scores.

Asteroid Assault

A 3D on-rails action game set nearby a gas planet with a dense asteroid field. Escape the attack from the enemy fleet!

C# Unity WebGL

Asteroid Assault was my first 3D release, it is an on-rails shooter. Inspired by Starfox and the scene from Star Wars: The Empire Strikes Back where they encounter a giant space worm in the asteroid field. Built in Unity and available to download and play through itch.io.

A screenshot of Asteroid Assault showing two ships and a background with a brown planet with a large ring.

For the on-rails feature I used the timeline function in Unity. There are a few ways to create the rails in Unity and the most standard and way is to use Splines however in this instance I used the timeline feature which worked well for a small project like this. The player runs on a master timeline with the enemy waves put under an enemy timeline for each wave.

A screenshot of Asteroid Assault where a large asteroid and an asteroid field are shown.

The player can move the ship with WASD keys and move the mouse to aim and left click to fire. There is a sphere that follows the cursor direction for the projectiles to go towards to collide with enemies.

Web Projects

Spaceflight Mission Tracker

My Final Project for Harvard University's CS50x course. A full-stack Flask web application, designed to track and manage upcoming space launches using Launch Library 2 API data.

Python Flask SQLAlchemy

Due to CS50x academic integrity rules, the source code is not publicly available. However, a project demonstration is provided in the Youtube video below.

The application integrates the Launch Library 2 API to fetch and display upcoming launches from SpaceX and other global space agencies. To optimise performance and remain within the API rate limits, responses are cached in a local SQLite database. The platform includes a full authentication system, allowing users to register, log in, and access additional functionality. Unauthenticated users can only view the next upcoming SpaceX launch, authenticated users however can view all missions from all space agencies, favourite launches they like, and manage a personalised dashboard. I implemented secure password handling using the Werkzeug.security library, hashing passwords with generate_password_hash and verifying them with check_password_hash. Users can also set alerts for upcoming launches, adding a layer of user-specific interactivity and engagement.

Online Security Solutions

A full-stack ASP.NET MVC web application developed as my final-year capstone project for University, focused on delivering cybersecurity education through an e-learning platform.

C# ASP.NET MVC SQL

The project, titled “Cybersecurity in the Modern World,” explored social engineering as a core topic, combining research with practical software development. The application was built using C#, ASP.NET MVC, JavaScript, and SQL.

Inspired by platforms such as Udemy and Coursera, the system delivers educational content through structured modules. A full authentication system was implemented, requiring users to register and verify their email before accessing protected content. Passwords are securely encrypted using a custom Crypto class that applies the SHA-256 hash function. Role-based access control ensures that only authenticated users can view learning materials.

The project followed the full software development lifecycle, including requirements analysis, system design, development, testing, and deployment, demonstrating end-to-end ownership of a complete web application.

A screenshot of Asteroid Assault where a large asteroid and an asteroid field are shown.