Versus the Internet

Versus the Internet is a personal project I worked on during Summer 2011 in order to further develop my programming skills and learn things which had not been explicitly covered by my college courses.

It is a hardcore 2D platformer and plays nearly identically to Super Meat Boy. It also supports multiple local players.

The game is built in C++ using Simple Fast Multimedia Library.

It uses a manager C++ Template class which I wrote in order to master templates. The class provides management functionality designed for games which is usable with any C++ class, organized based on a key type declared per manager.

It has an input manager class which handles input based on controls loaded from a file. It can also be used to change these controls from within the game and save said controls file.

It uses a messaging system which can create log files of gameplay, which can be used for debugging purposes and can also be loaded back into the game to replay the events of that session.

It uses my implementation of A* in order to pathfind for flying enemies. It also has a customized version of A* which dynamically finds platforming paths for enemies which are limited by gravity but can jump. Rather than implementing jump points or another similar hack for jump pathfinding, the pathfinder uses a maximum jumping velocity given to it by it’s caller and the location of nodes in the graph to determine whether or not a jump is possible dynamically and pathfinds accordingly. It can thus use the same graph as the pathfinder for flying enemies.

I also built a fully functional level editor for the game.

By far my favorite feature which I built into this project is the developer command console. It has a console which can be opened using the tilde (~) key, and by typing in commands can run code based on parameters. It is amazingly useful for testing and debugging from within the game, and also can be used to mess with variables for fun such as timescale for a slow motion effect.