Game Programming Portfolio
Software Engineer (May 2024 – Present)
I am fortunate to have gotten the opportunity to continue working with Magic Soup part-time while completing my studies after interning with them during the summer between the first and second years of my master’s degree.
The team is working hard on an upcoming unannounced AAA game.
I work alongside some of the most experienced professionals in the industry with decades of experience in companies like Blizzard, Riot, Respawn, Bungie, and many more.
Tree Fellers (Solo Project)
A 3D multiplayer sandbox game, with a focus on proceduralism, developed in Unreal Engine 5 using C++. In the game, the player can dynamically and realistically cut down trees, using which they can make buildings. The buildings can also be destroyed with realistic physics. The focus of the game is to make a realistic felling simulator that would feed into the building system. The project is solely being developed by me, though I have made use of some third-party art and sound assets to speed up development.
The tree felling system was made using procedural meshes that are modified at runtime when the player swings their axe, deforming the tree appropriately. This also works in a multiplayer environment, so any deformations caused by one player will affect the shared world.
I also developed an in-editor tool that uses procedural generation to both generate the landscape mesh as well as place the choppable trees onto the landscape. The landscape generation is done using Perlin Noise to obtain the heights of the vertices and the placement of the trees is performed using a grid based-system.
The building system allows players to use the resources gained from chopping trees to build any type of house. The system features snapping, rotation of the structure at any angle, multilevel buildings, and functional doors.
The buildings can also be realistically destroyed using Unreal Engine’s chaos physics system.
Detective's Gambit (Team Project)
Detective’s Gambit is a blend between a 3D isometric murder-mystery detective game and a card-battler, made in Unity. The player must find clues and talk to suspects, before finally interrogating them through the card-battle. This is an in-progress team project where I am the systems and tools engineer as well as a gameplay programmer. Some of the systems I worked on are the complete dialogue system, player movement and controls, interaction and clue system, and game progression.
The biggest feature I worked on in this project was the dialogue system that I made from scratch for the game. We knew that we would need a robust and dynamic dialogue system to facilitate the creation of complex dialogue interactions in our game, which is why I chose to go with a node-based system. I also wanted to make the tool visual so that it was as intuitive as possible for our narrative designer.
I used Unity’s GraphView API to construct a new editor window that displays the current dialogue tree. Each character in the game has its own dialogue tree asset that encapsulates every different possible interaction the player can have with them at any point in the game. Developers can use different types of nodes to create interesting dialogue interactions that change as the game progresses. These nodes are:
- Root Node: Execution start of the dialogue tree.
- Choice Node: A certain branch is chosen depending on a boolean parameter that can be set at runtime.
- Sequence Node: Executes all of its children sequentially. Useful for chaining dialogues together.
- Input Node: This node is used for player input in the dialogue; it displays options that correspond to its branches.
- Dialogue Node: This node holds the dialogue information which is displayed in the dialogue box. It has many options and parameters, like gate conditions and update conditions.
Bow Sim (Solo Project)
A 3D stylized stealth game with bow and arrow centric gameplay, developed in Unreal Engine with Blueprints and C++. The game is a first-person shooter, but the protagonist is only equipped with a bow and arrow. The player must traverse a lush landscape and inconspicuously take out different types of enemies with their arsenal of special arrows. The game was solely developed by me, including the art assets like foliage and models. Only the audio was sourced from an online copyright-free database.
I implemented a complex AI with several branching behavior trees with blackboards, delved deep into composition-based architecture, and implemented event-based communication along with level streaming. The AI is equipped with several different senses like a near-miss sense, hearing, and sight. The AI behavior is divided into enemies that patrol and enemies that stay in one spot, each having different states like suspicious, investigating, and in-combat. Some of the other notable features of the AI system are:
- Enemies can detect their downed allies, developed using Unreal Engine’s EQS system.
- Enemies can sound the alarm, alerting all nearby enemies, once they engage the player.
- Enemy perception is affected depending on whether the player is crouched or not and the distance of the player from the enemy.
All the game systems have been developed with extensibility in mind, making it extremely easy to add more content, like different enemies and weapons. I have also made heavy use of material instances, with a lot of customizability options, so that totally distinct environments can be created by just changing a few parameters.
Personal Organizer (Solo Project)
A solo-developed, cross-platform application that is used to plan, organize, visualize, and execute other projects. The application was made using C++ and the Qt framework. Some of the features include labels, sticky notes, to-do lists, mood boards, and flow charts. All the widgets are dynamic, meaning they can be moved and resized to the user’s liking. The application also allows for the customization of font and color for all of the mentioned widgets. It also features an infinitely expandable board to place your widgets. The goal of the application is to make it easy for users to keep track of their own projects and endeavors, be it a coding project, business plan, or life goal.
I used several object-oriented programming concepts and programming patterns like the Event Queue, Facade, and Singleton. The project makes use of Firebase’s real-time database to store user information between sessions and handle user authentication. I also incorporated programming concepts like event-based communication, authentication, serialization, and compression.