Mindstorm Studios

Reckless Rick

At Mindstorm I worked as one of the core developers for one of their prototypes called Reckless Rick. This is an Open-World, Idle-Arcade, Casual, mobile game featuring an open world with GTA style missions and a shooting (Archero style) game mechanic. Play Store

What I worked on

  • The Indoors Arena is using a package called SquadShooter. This package was intended to be used as a complete game therefore many of its components had to be changed to incorporate it into our code base. For example, each system was designed to have an application-wide lifetime, this had to be changed as the shooting was now only taking place indoors and had to be shutdown when the player returned to the open world.
  • The Shooting Mechanic had to be extended by adding variable elevations to the levels. This allowed enemies and the player to be able to target upwards and downwards as well.
  • The Pedestrians System is a package called Gley. Throughout the prototyping process I had to change many of the components of this system. These include the Obstacle Avoidance, disconnecting pedestrians from gley for custom behaviour, culling and spawning of pedestrians etc.
  • The Boss Fights are made by appending the squad shooter package and writing custom behaviour for the boss enemies. These behaviours include the Air Bomb attack, Teleporting, Spawning other enemies etc. I was also responsible for adding the animations, effects and overall polishing.
  • The Camera controller went through many iterations before settling on a fixed camera angle and an occlusion system which makes objects that are occluding the view transparent.
  • For the Player Controller we are using a package called Invector. I was responsible for importing our own models/animations to invector's system.

Transit Jam

In this project I was responsible for testing, bug fixes, optimisation, adding tutorials, UI and polishing in general before releasing the product. During this time I also experimented with the gameplay mechanics (Adding new types of vehicles) and the visuals (Changing the capacity of vehicles) for A/B testing. Play Store

What I worked on

  • User onboarding and tutorials.
  • Maintaining the Editor for level designers.
  • Rendering and Build Size Optimisation.
  • Polishing and Production.

RollEmAll

This is a mobile puzzle game for which I was paired with a senior developer and a UI artist team. I was primarily responsible for setting up the core gameplay loop, including production and user interface. One of the major problems this project faced, due to legacy code, was the pathfinding algorithm. By redesigning the architecture, data structures, and logic, I was able to reduce the number of iterations from over 100,000 to just under 7,000, bringing the computation time down from several seconds to under 10 milliseconds. Play Store

What I worked on

  • Core gameplay mechanics.
  • Optimized path finding algorithm.
  • Production and User Interface.

Stack Flow

Stack Flow is a puzzle mobile prototype. For this project, I was the sole developer working with a team of 2D and UI artists. Most of the functionality required for a simple prototype like this was already implemented in an in-house utility package, my responsibility was to implement features specific to this game idea.

What I worked on

  • Hexagon grid system.
  • Card animation tweens.

Spy Master

This is a card game where you have to guess the right cards using the given clues. This was an onboarding project for me at Mindstorm where I was paired up with a seasoned developer to get used to their in house tools, kits and workflow.

Dastaan Studios

Samurai VR

This is a Virtual Reality Samurai game where the player is given auditory cues to interpret his/her environment. This is a multiplayer game and the core mechanic is to throw projectiles at enemies.

What I worked on

  • Used Hurricane VR to make a Projectile throwing system.
  • Used Photon Fusion to synchronize game across clients.
  • Effect Shader: This shader takes a list of audio emitters as parameter to render the effect around it. The effect is a propogation wave which highlights the edges and lights up the surfaces.

Wallpaper App

This is an Android Wallpaper Application built using Java and Unity. The unity engine is embedded as a third party library inside the android application. The live wallpapers are rendered by a Unity camera in a 3D scene and the render is passed on to Android's Wallpaper service. I was the sole developer who was tasked with developing a prototype.

What I worked on

  • I wrote a bi-directional communication system between the android and unity side of the application.
  • I wrote a wallpaper editor screen inside Unity which allowed the user to import up to 3 images from the gallery and move and scale them.
  • I added google sign in and setup firebase for user data storage.

Hobby Projects

Game Engine

This is a Game Engine in C++ that uses SDL2 library to communicate with low level hardware components (Input, multimedia, graphics). The engine supports windows and mac platforms and includes a setup script to build for Visual Studio (Windows) and XCode (Mac) using Cmake. In the preview you can see a sample game I made on top of it. Github
This is an ongoing project but I have listed the most recent features.

Engine Features

  • Rendering and physics of simple shapes.
  • Scripting using Mono C#.
  • Asset Management and serialization of assets.
  • Prefab system.
  • Supports Windows and Mac.

Modern day Llama

This was our Global Game Jam 2024 submission. We were a team of 5 where I worked as the gameplay programmer. This project was done remotely where we communicated over discord and collaborated over Github.
The theme of the game jam was "Make me Laugh". In this game you are a Llama hired by a barber who's job is to spit on pedestrains' hair to motivate them to visit the barber shop. Game Jam Link

What I worked on

  • Input System: For Input, I used the Unity's new Input System, a Singleton InputManager and a PlayerInput class for player specific Inputs.
  • Player controller: The player controller was divided into a Controller class and a Motor class.
  • Projectile system: This comprised of a Thrower class and a Projectile class. The Projectile class used a scriptable object for data like speed, range, particle effects and sounds.
  • Audio system (FMOD): I made a singleton class to keep all of the Audio Event references at one place to make the importing work flow of our Audio Engineer easy. I also had an AudioManager which contained all of the boiler plate code to link to the Fmod library.
  • Git: I managed the git repository, this meant maintaining the branch of non technical team members before pulling them to main and making sure nothing goes wrong.

Cellular Automata

This was a hobby project to experiment with Cellular Automata and Procedural Generation.

How it works

  • Generating Chunks: The generation of chunks was divided into 4 steps to spread the work load over frames
    • First Step: Loading a 2D binary array with random values.
    • Second Step: Applying the Cellular Automata iterations.
    • Third Step: Applying my correction algorithm to ensure all areas are accessible.
    • Fourth Step: Applying marching squares algorithm to determine which tile goes at each position.
  • Pooling System: The pool system gets the coordinate around the player and places the correct tile from the pool.

Softbody Physics

In this project I implemented custom softbody physics using unity's physics system. The results were pretty satisfactory for a mobile game. Github Link

How it works

  • The soft body consists of a set of points attached to each other with spring joints.
  • For collision, I attached edge colliders to the point masses using spring joints.
  • Point Masses Controller: This script dynamically applies a pressure force depending on how compressed the body is. It also changes the spring joint properties if the body is too compressed to allow it to return to its original shape.
  • The soft body is rendered using a sprite renderer with bones representing the point masses. These bones follow the point masses for deformation.