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.
- 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
- 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
- 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
- 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.
This is basically a fractal that changes one of its parameters over time. Make sure you watch it in fullscreen.
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.