Booboo is a side-scrolling adventure platformer, where the player takes on the role of Booboo, who is on a quest to find his purpose for existence. Booboo has a unique ability to teleport to warps that he can create. In a world filled with lava, blades, timed doors, and the ever-so-deadly gravity, it will take your sharpest wits at every step to move ahead without dying.
This is a personal project, built on Unity3D completely by myself in under three months, using free time during my final Master's semester. I produced/managed the game throughout the process with iterative testing. I also designed and executed all programming, art/animations, UI, and level design on my own.
Noteworthy areas of work include: • Custom physics: Dynamic raycasts and custom collider mechanics for, well, the best game-feel. • Gameplay analytics: Tracking and heatmaps scattered throughout the game help analyse each individual player's play-style, helping with user retention and other relevant conversions. • Warp momentum (gameplay): Allow Booboo to instantly teleport to previous locations, while conserving environment-effected momentum, offering players a wide variety of movement tricks with minimal controls. • User-interface: Minimal HUD ensures critical messages are shown exactly when needed. HUD layout also changes based on the player's progress through the game. • Social media integration: Players are directed towards sharing screenshots from within the app. • Particle-system mechanics: Custom particle-system setups for each unique group of particles in the game contribute to better visual feedback as well as general ambience. • Visual design: All art and animations- characters, items, environment and ambient effects, action-visuals, UI-graphics- are original and created with a categorized palette specifically for Booboo.
All music in game, by Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 3.0 http://creativecommons.org/licenses/by/3.0/
FAT LOOT IS FREE TO PLAY!
Download the installer from the official Fat Loot site, or from here. It is currently only playable on a local network. Feel free to contact me for any help with the game.
Fat Loot is a multi-player stealth/action game, where up to four players take on the roles of thieves as they compete to finish with the biggest loot among them. Each player in the game controls a thief with character-specific abilities, with the objective of carrying the most loot possible back to their hideout. However, guards on the lookout for trespassers and other sneaky players make the task easier said than done.
The game is built on Unreal Engine. The 25-strong Fat Loot team consists of various engineers, artists, designers, producers, and sound-artists.
I personally implemented the following key areas in the game: • CAMERA • • Third-person action camera: a third-person camera that can be rotated independently of character movement. • Various camera modes: primary Third-person camera, over-the-shoulder sprint camera, vantage-point (vase) camera, first-person camera, and a "cheat" aerial-view camera; all implemented with smooth transitions when switching.
• GAMEPLAY AND CHARACTER STATES • • Base Character Class: The base template for the four different champion types. • Energy Logic: energy gets used to perform actions, and starts regenerating after a duration of not being spent. • Character Sprinting, including ease-transitioning between speeds, camera changes, and energy usage. • Character Deceleration/Acceleration. • Exhaustion, a walking-based state that the character enters into when their energy is below 20%. • Carrying the treasure, specifically, the particular state and its handicaps, and also adding the corresponding mesh to the character's carrying socket. • Character Finite State Machine: designing the various possible character states (with the help of other engineers on my team).
• ABILITIES AND POWERUPS • • Belly Bump, an ability of Lady Qian, that lets her jump to a location ahead, knocking away any other characters in the way. • Roar, an ability of Tiger, that lets him roar, stunning any character in a cone in front of him. • Invisibility, a power-up that makes the players invisible to other players and guards- including shader-changes and effects on map. • Disguise, a power-up that the player can use to look like one of the guards for a short time- including shader-changes and effects on map. • Buddha Palm, a power-up that lets the player shoot out a giant palm in a straight line ahead, knocking other players out of its way.
I also worked with the engineering team in resolving various other bugs and issues throughout the entire project.
MegaFish is a single-player, accelerometer-based, casual game made for iPad-2, revolving around the story of a fish left to its own in an eat-or-be-eaten world. I worked with a team of five, including two level-designers, to create this game. In addition to contributing to the implementation, I also single-handedly designed and executed all graphics, UI, and animations in the game. I managed the team during this time as well, including low-level goal-setting, scheduling work, and coordinating progress of tasks among members.
Megafish was made from scratch on Cocos2D on a deadline of two months.
In this game, the player controls Megafish, who's on his own to find his way to an eating competition on the other side of the sea. Underneath the silly plot, the primary game objective is to eat as much "food" (weaker fish and clams) as possible in the given time without being eaten yourself. • Various types of fish (with distinct behaviours) in the sea constantly make your task harder. The occasional friendly whale attempts to balance that. • Objects in the environment, such as sea weed and magnetic rocks, are double-edged swords and can be harmful if not used intelligently. • Other mechanics, such as fish-nets and volcanos, also create further openings for strategy. • To retain a taste of classic gameplay, a few powerups (such as a shield and invisibility) were thrown in the mix. • Achievements, 'Perfect' level stars, and an Unlockables Shop, were implemented to maintain a metagame even outside level play.
In addition to programming the Megafish codebase, we also focused on a few things from a design aspect: • Developing a difficulty curve and tutorial levels. • Making levels more fun and simple to play: catering to a wider audience in general, while still keeping a few levels with the option of strategy open for more aggressive players for better rewards. • Though straightforward play achieves the purpose, we designed levels with a higher degree of risk/reward, with rewards like hidden areas, special item bonuses, and pacman-style power-pellet.
PrimeEngine is a C++-based game engine, developed by Artem Kovalovs. I had the chance to get hands-on with this engine during my Master's program at USC.
Aside from the core code, PrimeEngine is also compatible with Python and Lua scripting. Tools to export assets from Maya to PrimeEngine were part of the original codebase.
Over the functional framework, I was able to implement the following additional functionalities: • Creating Custom Objects and Behaviour: creating custom models with animations in Maya, exporting to PrimeEngine, and creating logical classes and AI behaviour. • Blending between Animations, and Partial-body Animations. • Passing Custom Data by modifying game object MetaScripts and Lua Scripts. • Data compression over the network, such as converting full transformations into 3 quaternion floats, and dynamically changing value precisions. • Socket Programming. • TRIBES Networking Model, fully working. • Multi-threading. • Geometric Data storage and parsing, including vertex buffers and vertex/pixel shaders. • Culling Volumes outside the Camera Frustum, effectively reducing the number of objects submitted to the rest of the graphics pipeline for rendering. • Texture-Coord Buffer for meshes, functional on PC, PS3, and Xbox 360.
I also worked on gameplay-level programming using PrimeEngine. Some specific areas were: • Physics Components: Bounding volumes (spheres, boxes), Gravity, Acceleration/Deceleration, Conservation of Momentum, Collisions, Knockbacks. • Simple Physics Engine, sufficient for a car racing game. Includes fundamental mechanics like Drifting, Handbrake mechanics, Hit-and-rebound. • Ammo system for each player. • Player HP system. • Python scripting on Maya, including the use of multi-threading.
Some other concepts that I picked up during this time are: • Geometry Instancing. • Post-processing. • Deferred Rendering and G-Buffers. • Compute Shader Concepts.
GzRenderer is a 3-D Win32 renderer built using C++ without any existing graphics libraries.
It is an implementation of the the core flow in a 3-D rendering pipeline. It includes the following functionalities: • Different rasterizing techniques, including LEE technique, Scanline technique, and Hidden-surface removal (using Z-buffer). • Ability to stream common 3-D object file-types. • Object transformations: Translations, Rotations, Scaling, Inverse-transformations. • Ability to manipulate data at any Space in the rendering pipeline: Model-space, World-space, Camera-space, Perspective-space, Screen-space; including Perspective-projection. • Lighting: Ambient, Diffuse, and Specular lighting; Gouraud and Phong shading. • Texture-mapping: 2-D image textures, Procedural texturing, Bump-mapping, Fractals. • Anti-aliasing, using Super-sampling and Reconstruction.
Some of my good friends (Pramodh Aravindan, Ravi Teja S., Lin Wang) also helped me add a few more features into GzRenderer: • Shadows, using shadow-maps. Both soft and hard shadows are possible. • Reflections, using cube-maps. • Refractions. • Post-processing effects, specifically cel-shading and colour manipulation.