Pawn's Gambit

A first person speedrun shooter made in Unity for Windows, Mac, and Linux. Currently available on Itch.io for free.


About the Game

Pawn's Gambit is a speedrun first-person shooter. Your goal is to kill all enemies and reach the end of the goal as fast as possible. Your goal is to get the fastest times on each level. Think you're up for the challenge?

Find cards in levels that give you weapons. Each weapon has an amount of ammo as well as a movement ability. If you collect multiple cards, both the ammo and the ability use counts will stack. If either runs out, the rest of the weapon is discarded. Fire weapons off to decimate your enemies, and use each ability to strategically carve your own path to the end.

There are four worlds each with their own themes to them, and each world has five levels in them for a total of twenty levels in the game.


Pawn's Gambit is a game project I and a small group of fellow game developers at JCCC are creating. We have worked on it for two semesters, so just about a whole year of development has gone into this game project.

I served on the team as a programmer and created several core systems for the game, like the projectile system, several of the abilities, the replay system, and much, much more. More information is in the 'My Contributions' section.


Controls:

    Both keyboard/mouse and controllers are supported. You can rebind your inputs in the game's config menu.

  • Left Click/Button South: Menu confirm
  • WASD/Left Joystick: Movement
  • Mouse/Right Joystick: Aim
  • Space/Button South: Jump
  • Left Click/Right Trigger: Attack
  • Right Click/Left Trigger: Ability
  • E/Button South: Interact
  • Q/Button North: Cycle Weapon
  • Scroll Up/Left bumper: Previous Weapon
  • Scroll Down/Right bumper: Next Weapon
  • R/Select: Quick Restart

My Contributions

For context, I worked on a team of five people for one year to create this game. There are three programmers and two designers on our team.


Initially, I created the IDamageable interface for our scripts. The goal of the interface is to ensure that objects we interact with have a defined behavior when damaged, and can handle who and what damaged them.

I created the projectile system which consists of projectiles and projectile emitters. Projectiles handle the physics and data of a bullet in the scene in every physics frame. Emitters handle the spawning and rotational offset of collections of projectiles.

Initially, I created the LevelSettings script. In every game level, an object must exist with a LevelSettings script attached to it. This includes data about the times to beat, a unique ID value for the level, the display name of the level, and the next and previous level names. This is used by the GameManager to find levels and handle win conditions.

Initially, I created the End gateway script. In every game level, an object must exist with a trigger collider and an end gateway script attached to it. This handles the position of the end of the level and the win condition for it, and so is standard for every level.

I created the ground pound ability. When this ability is used, the player slams towards the ground, and on impact a giant explosion is made, that can kill enemies or damage IDamageable objects (like explosive barrels and breakable floors).

I created the jetpack ability. When this ability is used, the player hovers in the air for a bit. Then when a timer is over, the jetpack explodes causing damage to everything around it, and the player is propelled upward.

I created the grappling hook ability. When this ability is used, a hook is propelled outward and is sunk into the environment. Then the player is tethered to that point and can swing from it. Once the player releases the grappling hook, a forward boost is given to the player.

I created the portal gun ability. When this ability is used, it places portals where the player is aiming, assuming the surface is valid.

I created the hitbox system for the game. This is mainly used in the knight's animation to synchronize when the knight can deal damage to the player with his spear. However, the system is extensible enough to cover a wide range of applications.

After each ability was made, I performed a code review and a quality check over all of the abilities in the game to ensure that they performed how the designers wanted, and had full in-code documentation via comments and Unity inspector tooltips. I did this since the abilities were a core mechanic of our game, so they might have to change from time to time. I wanted to make it as easy as possible to tune in the Unity inspector without breaking the code or physics in any way. I also knew that since we were planning on finishing all abilities and most mechanics by the end of the first semester, losing the context for why the code was written a certain way was a real risk; I wanted to make it as easy as possible for a future programmer to troubleshoot and bug fix, including myself.

I helped one of our designers implement and best utilize our projectile system inside of our enemies so they can fire bullets back at the player if they are too close.

I created the replay system for the game. Every time the player gets a new best time on a level, a replay gets saved to file. Every time the player goes back and plays that level, they will see a ghost of themselves in the level, which visualizes their best run in real-time, as the player plays through the level again. This allows for the player to race against themselves and it provides live feedback for how the player is doing in a run of the level.

I created the portal system for the game. Portals connect two areas together like a doorway; The player needs to be able to move, see, shoot, and use abilities through the portals cleanly, as if the two places were connected seamlessly. I created a system that does just that for our game. The portals can be placed and linked statically in a level by a designer to add some non-linear flair to the level. Additionally, designers can mark surfaces as portal-placeable to allow for the portal gun ability to place and link up portals dynamically on them.


Where to play