All the games/apps listed here are my solo undertakings. I have created atleast some of the graphic assets used in each of these games.

Published Projects

Multi Table Tennis 3D is a table tennis simulation game developed primarily for the android platform. Developed using the Unity 3D engine and programmed entirely in C#.
  • Implemented realistic physics based movement of the ball.
  • Implemented 4 different levels of AI difficulty
  • Developed a split-screen multiplayer mode
  • Designed and implemented the UI 
  • Implemented and experimented with different touch based control mechanisms 
  • Imported and integrated different 3D models, textures and sprites into the game
  • Implemented sound for the game
  • Successfully performed various optimizations in the game to make it run at 60FPS on all devices
  • Integrated libraries like Admob and Google Analytics into the game

Asteroid Melter is a survival action space shooter game developed for the android platform. This is by far the biggest project I've completed. This game was created using my own simple android game framework named SAGL and was written in java.
  • This was a large project, developed over a period of 1.2 years
  • Implemented AI behaviours for 6 mini ships and 10 boss ships
  • Developed different weapon systems for the boss ships
  • Developed a unique survival gameplay mechanism for the game
  • Implemeted procedural generation of the 2D environment and various enemies
  • Implemented a simple upgrade system for the player ship
  • Implemented encrypted storage of player highscore and progress using 'SQLCipher' from 'Zetetic'
  • Implemented online highscores using Google Play Game Services
  • Optimized SAGL to improve the game's performance and load times
  • Successfully debugged the game despite the incredibly large codebase
  • Integrated Admob 

Simple Android Game Library -(SAGL)  (Android, Java)
This is a light weight android 2D game library that I wrote from scratch for making my games, before moving on to game engines like Unity 3D. This framework is extremely light weight (around 1MB) and well optimized. The framework uses the OpenGL ES 2.0 API for rendering graphics. Text is rendered using the GLText framework by Fractious.
Asteroid Melter was made using this library.
  • Implemented OpenGL ES 2.0 based graphics rendering
  • Implemented code to handle different screen sizes and resolutions
  • Developed helper classes for loading and compiling shader code from files
  • Implemented high performance collision detection algorithms
  • Implemented a sub framework to handle proper playback of sounds and music
  • Developed classes for handling various user inputs
  • Implemented a simple UI framework for creating buttons, frames, on-screen joysticks, progress bars etc.
  • Applied the knowledge of OOP concepts and data structures in the development process
  • Developed classes that manage the loading and disposal of various resources and lifecycle of the game
Image Editor was an experimental project. It lets you adjust the brightness, contrast, hue, saturation and lightness of an image in real time using glsl shaders. Built for the android platform and is programmed in java and C.
  • Implemented classes that can help load images from the device, send them to the GPU for processing and then save the resulting image
  • Implemented code to prevent the application from running out of memory when loading large image files

This was my first android project. Multi Table Tennis is a simple ping pong style game which offers a bluetooth multiplayer feature. The game is also highly customizable with configurable game speed and game difficulty and 3 different control modes. Coded with java for the android platform.
  • Implemented multi player gameplay over bluetooth (TCP socket)
  • Implemented a special technique to make the gameplay smooth in multiplayer
  • Implemented accelerated graphics rendering using OpenGL ES 1.0
  • Developed simple classes for managing sound playback and user input

Fragment Shaders (glsl, C)
Below are some of the fragment shaders I made for fun. The first one's my favorite so far.

Fractal Anim

This is basically a fractal that changes one of its parameters over time. Make sure you watch it in fullscreen.


Raycasted Spheres

These spheres are rendered using the technique of raycasting. Basically a ray is created for each screen pixel and it is checked whether the ray intersects a given sphere using intersection equations. If it does then the specular color for that pixel is set after calculating the reflection values of the rays from the light sources toward the camera.

Regular N-gon Function

A distance function which will return the distance value for a regular ngon when given its number of sides and apothem or circum circle radius.

No comments:

Post a Comment