Your Custom Text Here
2015
Find Booboo on Google Play here.
Find Booboo on App Store here.
Booboo is a free-to-play side-scrolling adventure platformer, where the player takes on the role of Booboo, who is on a quest to find their purpose for existence. Booboo has a unique ability to teleport to warps that they create. In a world filled with lava, blades, traps, and the ever-so-deadly gravity, it will take your sharpest wits at every step to keep moving onwards.
This is a personal project, designed and developed on Unity3D as a solo project in under three months, using free time during my final Master's semester in 2014. I produced/managed the game throughout the process with iterative testing through various game-dev forums. I also designed and executed all programming, art/animations, UI, and level design on my own. As much as Booboo was an exercise to experience first-hand the various nuances of developing and publishing a title as an individual, it is also one of my favourite projects to have ever worked on.
Some interesting areas of work include:
• Custom physics: With the Unity physics engine turned off, dynamic mathematical movements, raycasts, and texture-based collider mechanics help create a more arcade-like game-feel.
• Warp momentum (gameplay): Allow Booboo to instantly teleport to previous locations while conserving environment-effected momentum, enabling players to get creative with a wide variety of movement tricks using only minimal controls.
• Gameplay analytics: Event-tracking and heatmaps embedded throughout the game help analyse each individual player's play-style, helping with gameplay tweaking, user retention, and other meaningful conversions.
• Social media integration: Players are encouraged to share screenshots from within the game, creating more self-sustained promotion.
• User-interface: Minimal HUD ensures critical game information is shown exactly when most appropriate. HUD layout also changes based on the player's progress through the game.
• 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 categorised 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/
2013
FAT LOOT IS FREE TO PLAY!
Find Fat Loot on the official website here.
Alternatively, download the Fat Loot installer directly here.
Fat Loot is currently only playable on a local network. Feel free to contact me for support with the game.
Fat Loot is a fee-to-play 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 champion-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 this task easier said than done.
The game was developed using Unreal Engine in early 2014. 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 and interruptible transitions when switching.
•• GAMEPLAY AND CHARACTER STATES
• Base Character Template: The base template that defines common behaviours, visuals, and animations for the four different champion types.
• Energy Logic: energy levels that are used to perform actions, and start regenerating after various conditions.
• Character Sprinting, including ease-transitioning between speeds, camera changes, and energy usage.
• Object Deceleration/Acceleration.
• Exhaustion, a specific state that characters enter on certain conditions (such as when their energy is below 20%). This state defines its own character-specific visual/behavioral overrides for various default mechanics.
• Carrying loot, specifically, the particular state and its handicaps, and also dynamically and smoothly connecting the loot meshes 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.
2013
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 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.
2013
PrimeEngine is a C++-based game engine, originally 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.
Some other concepts that I picked up during this time are:
• Geometry Instancing.
• Post-processing.
• Deferred Rendering and G-Buffers.
• Compute Shaders.
I also worked on gameplay-level programming to make building playable titles using PrimeEngine much easier. 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 players.
• Player HP system.
• Python scripting on Maya, including the use of multi-threading.
2013
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.
Prof. Farnsworth sprite created by shinyman0.deviantart.com
Animation and other elements created by me.