Stampede Street is an asymmetric multiplayer game in which 3 players, called street runners, have 30 seconds to run toward a goal line, while 1 adversary, or street lord, manipulates a crowd of NPC pedestrians to block their pathway. A street runner wins by reaching the goal line in under 30 seconds – if none of the street runners reach the goal line by the time the 30 seconds is up, the street lord wins! This game was inspired by the busy streets of New York City and the difficulty and joy of finding an ever-elusive gap in a crowd of people. The street lord can attract pedestrians to a specific point on the map and block pathways, so plan your route wisely as a street runner!
Beyond the Wall is a rogue-like platforming game for the PC developed using C++ and the Simple and Fast Multimedia Library (SFML). It was developed during my Senior Design sequence of undergrad within a team of four programmers. The game consists of levels constructed from predefined rooms connected along a randomly generated path. The player is given one attempt to navigate through the paths, traps, puzzles, and enemies that populate each level. When the player dies, the game restarts with a newly generated level.
Levels are created by randomly combining rooms into main and side paths. The 'main path' is the sequence of rooms the player must traverse to complete the level – 'side paths' contain optional rooms the player can visit. Room connections are implemented with four-way linked lists. Once the paths are connected, objects and properties are generated and randomized as specified by the room file. The following high level algorithm represents level generation:
1) Read in all room files
2) Recursively generate main path
3) Add side rooms
4) Block off unconnected room exits
5) Initialize each room in the level
Player-positioned scrolling camera
Player movement and control
Animation system
Menu screens
Collision system development
Various game objects
Alongside the game, a Room Editor was created to allow us to build and edit our own rooms for use within the game. The user can drag-and-drop game objects into rooms, edit object properties, and change the room size. The user can even randomize objects within categories and properties within any object.
The following function pointers were used to store the getters and setters of object properties:
typedef std::string (Object::*FuncGetter)();
typedef void (Object::*FuncSetter)(const std::string &);
This allowed us to simplify the creation of new object properties and the persistence of (XML) room files. It also allowed changes to object properties to be generic instead of specific to each property.
GUI objects - buttons, textboxes, and file menus
Grid space for room editing
Menu systems
Underlying class function pointer system for getters/setters
Room mini-map
Shootout! is a 2D arcade multiplayer space fighter in which two players draw and fire bullets at one another with the goal of depleting the shields of the opponent's ship or mothership (blue wall). The concept of the game was inspired by Old West gunslinger shootouts and several fighting games - the player must bait, read, and mindgame their opponent in order to win this shootout!
This was my first attempt at a game created by myself. The game was written in C++ using the Simple DirectMedia Layer (SDL) multimedia library.
Pong is a recreation of the famous arcade game (and 'similarly' named) Pong. This is the first video game I ever wrote, and was created during my early years of programming alongside the mind of a good friend. The goal was to learn the basics of 2D game programming and design. This is also where I fell in love with game development!
The game was written in C++ using the Simple DirectMedia Layer (SDL) multimedia library.