My Profile Picture

Shubham Sachdeva


Video Game Programmer

Portfolio


Click The Thumbnails To See My Work!


About


Hi! I am Shubham Sachdeva. I am currently a student studying game design and development at the Rochester Institute of Technology. Over the past 4 years I have gained a lot of experience in programming and designing games and software. My skills include C++, C, C#, DirectX, OpenGL, GLSL, HLSL, MonoGame, Unity, Unreal Engine 4, SFML, SDL, Java, MySQL, JavaScript, HTML, CSS, Visual Studio, Git, Photoshop, Illustrator, and Maya.

My dream is to become a graphics programmer, with a focus on real-time rendering. I also love to program game logic and algorithms such as autonomous agent behaviour, collision detection, spacial partitioning, and pathfinding.

Contact Me



Breakaway


Breakaway

Breakaway is a hockey simulator game that I made in a group of 4 using c# and the game engine Monogame. The game basically involves moving around a hockey player on the ice, while avoiding any incoming opponent players for as long as possible. The players get 3 lives and they lose one if they colliding with the enemies. The longer the players last, the more points they get. Another way to get points is to collect hats which are randomply spawned on the ice. The game also features a local high score storing system and shows the top 5 high scores.

I worked as the lead programmer of the game. I impemented most of the classes including the buttons, the enemies, players and the collectibles. I was also responsible for designing the game's overall look along with the artist. I also implemented the layer animations and the all the sounds which include the sound effects and the background music.

Watch Gameplay
Close Project

Missile Mayhem


Missile Mayhem

Missile Mayhem is a multidirectional shooter, in which the players take control of an airforce pilot whose objective is to destroy as many missiles as possible in order to save the city from terror. The players can move and rotate the ship around the map and shoot the misiles for points. Bigger sized missiles are broken down into smaller pieces when shot which are worth more points. The players have three lives and they lose one everytime they collide with the missiles. When they lose they are taken to a game over screen that displays their score.

I worked as the sole programmer and the sole artist of the game. For the programming side, I had to implement the movement of the ship, which involves using vectors to find the acceleration of the ship which can further change the velocity and the position of the ship. I used the same logic to move the missiles and the the bullets. For the collision between the missiles and the bullets and the ships, I used seperating axis theorem, which is a collision detection that involves using dot products and normal vectors to check if two things are colliding. For the art side, I designed the entire game, including the ships, the backgrounds, the missiles and even the UI elements, such as the buttons.

Play Game
Close Project

Humans vs Zombies


Humans vs Zombies

Human vs Zombies is a project, wherein I implemented Craig W. Reynolds' steering algorithms to create a humans vs zombies simulation

I worked as the sole programmer of this project. My goal was to implement algorithms such as seeking, fleeing, evading, pursuing, obstacle avoidance, and wandering to make the humans and zombies think for themselves. The humans have to evade the zombies and avoid the obstacles, and the zombies have to chase the humans while also avoiding the obstacles. I also implmented the seperation axis theorem to implement very accurate collision detection between the humans and zombies.

Play Simulation
Close Project

OpenGL Rendering Engine


SDL

For this project I am working on a rendering engine using C++, SDL, OpenGL and GLSL. The game engine uses an Entity component system which is similar to other engines such as Unity and Unreal. Users can add actors to the screen which act as game object. They can also derive from the base actor to make new game objects and give them properties such as movement. The component system is also very robust, it allows the users to add componenets such as cameras, models, sprites to the game objects.

So far the engine is completely capable of making a 2D game by only requiring very minimal documentation. The engine is also capable of loading 3D models, skeletons, and animations. Some additional functionality that I added with the engine includes, animated sprites, mesh components, different cameras such as first and third person camera which can also be very easily modified to work with vehicles as a follow camera.

Right now I am working on implementing additional features to make this engine more robust. Some features that I am working on are efficient 3D and 2D collision detection, spacial optimization, improved graphics and the ability to load level data from external files.

Close Project

Beehive TD


beehiveTD1

For this project I worked in a group of three to create a bee themed tower defense game. The game was made in 36 hours during the Wild Magic Game Jam organized by the Rochester GameDev community.

I acted as the lead programmer and implemented all of the gameplay and user interaction, including tower selection, health management, enemy behavior, resource management, and tower attacks.

Watch Gameplay
Close Project

One Man Army


One Man Army

One Man army is a 2D side scrolling shoot em up game that I made using Javascript and PixiJs rendering engine. The goal of the game is to shoot as many enemies as you want by clicking at them, which will make the player character shoot bullets. The game uses a basic physics system such as vectors for forces, acceleration, and velocity for the movement of the character, enemies and the bullets.

I also implemented an Intuitive UI that aloows the user to start the game, and look at the intructions before the game begins. Some additional features that I implemented in this game include a high score system, which I implemented by using the HTML5 local storage feature.

Play Game
Close Project

DirectX 11 Rendering Engine


DX DX2

For this project I am working on a DirectX 11 rendering engine using D3D11 and Windows32 API, along with the HLSL shader language.

I am acting as the sole programmer of the project. I have implemented real-time graphics features such as a lighting system, shadow maps for directional lights, normal mapping, physically based rendering, cubemaps, terrains, particle system, rim lighting, and post processing effects like, radial blur. I also created an ocean simulation (pictured above), using Jerry Tessendorf's algorithm which involves using fast fourier transforms to generate a height field for the oceans. I also implemented foam rendering for this water using the height field's Jacobian matrices

I am currently working on features such as compute shader based particles, skin rendering and subsurface scattering, animations, forward plus rendering and hair rendering using hardware tesselation.

Close Project

DirectX 12 Rendering Engine


DX12_1

For this project I am working on a DirectX 12 rendering engine using D3D12 and Windows32 API, along with the HLSL shader language.

I am acting as the sole programmer of the project. I have implemented real-time graphics features such as a lighting system, physically based rendering (thumbnail), area lights using Linearly transformed cosines (bottom right image), particle system, and subsurface scattering using using spherical gaussians (bottom left image). The engine can also render thousands of lights in real time using a tile based forward renderer (top right image).

On the API side, I have created wrappers for many of DX12's low level implementations, such as wrappers for descriptor heaps, resources, and buffers, which make it more managable to work with DX12's low level of abstraction. I have also implemented a ring buffer descriptor heap, that holds all the resources needed to render the current frame, which allows for easy CPU-GPU synchronization.

I am currently working on integrating the DirectX Raytracing API, which takes advantage of modern GPU architecures' hardware accelerated raytracing capabilities, My raytracer currently supports the GGX material model, and is also capable of both direct and indirect lighting (top left image). I am currently working on adding more raytraced features like, multi-bounce global illumination and refractions, as well adding spatio temoral filter do denoise my results, with a goal to create a hybrid raster/raytracing rendering engine for real-time graphics. I am also working on working on porting features from my DX11 engine such as, ocean simulation, and post processing effects.

Close Project