The map is populated with barriers, enemies, chests, and other objects based on the pixels in an image file. This means that levels can be "drawn" in a simple paint program. This same image is used as a mini-map.
Extensively organized with object-oriented programming (Enemies, weapons, objects, etc.)
Algorithms for square and circle collision, as well as hit detection
Procedurally generated terrain
All objects in the game are loaded and released from memory based on distance from the player
Inventory system with weights, stats, and various categories
Built in "Debug" option which prints selected variables to a window