Video
Download
Superhero Simulator (2015-11-11 Windows build)Instructions: Download and extract the zip file. Open the extracted folder and run SuperSim.exe. Let me know what you think!
Release Notes
These are notes for the first release (2015-11-11) of Superhero Simulator.
- Character Creation:
- Click-and-drag manipulation of facial features
- Costume color selection
- Skin and hair color selection
- Emblem selection
- City map:
- Multiple map modes (standard, faction ownership)
- AI-controlled factions (police and criminals)
- Faction agent icons and movement
- Graphical effects for player-selected districts
- Basic event support (tutorial system implemented using events)
- Tactical:
- Player can run, jump, attack, and block
- AI-controlled enemy characters
- GUI: Healthbars for enemies and player
- One level (a dark alley)
- Behind the scenes:
- Game state saving and loading
- XML serialization/deserialization of game data at runtime (e.g., events)
- Custom shaders implement multi-color texture tinting
Source Code
The source code can be browsed on GitHub: github.com/mahowald/SuperheroSimulator
About the Game
Superhero Simulator is a hybrid strategy/action game in which the player becomes a superhero and battles crime and natural disasters to protect the city of New Gothamopolis and its citizens.
Origin Story
One late night at Northwestern University, a tireless graduate student labors away on his research project. But, in a freak math accident, inspiration strikes! Mild-mannered Matthew Mahowald, mathematician-in-training, becomes mild-mannered Matthew Mahowald, hobbyist game developer---His mission: to create a project that tests both his progamming skills and his expertise in geometry and physics!
Game development, as it turns out, is an excellent source of interesting problems, both as a programmer and as a mathematician.
Technical Features
Superhero Simulator was made using the Unity game engine and all code is written in C#. Other tools used include Blender for 3D modeling and animation, Photoshop for textures, and Inkscape for vector graphics. From a software development perspective, it features a number of (hopefully) interesting technical implementation details:
- Where possible, the game data is serialized from XML files. Besides the game's save files, this includes random events, character data, AI traits, and others. This has two advantages: it allows for rapid changes to the game without needing to be recompiled, and it lets the user customize the game to their preferences.
- The city model was procedurally generated. Because creating a whole city from scratch was too time-consuming for a hobbyist project, I wrote a Python script for Blender that created each building in the city from some basic information about the street layout and the average height of buildings in that region.
- The tactical gameplay uses techniques from geometry to determine targeted enemies. In combat, when the player presses the attack key, the game determines which enemy to attack by sorting nearby enemies based on geometric data about the enemy's location, the game camera, and the player's character.
- The character controller uses coordinate changes to translate user input into character movement. In the tactical gameplay, the player controls the superhero from a third-person perspective. In order to make the character responsive and intuitive to control, user input is translated into directional input for the character controller. All of this code was written from scratch, and is based on some basic vector analysis.
- Enemy combatants, factions, and even the game story itself are driven by an AI. In each case, the computer-controlled entity utilizes a modified decision tree model to determine the appropriate behavior. Choices are made by "weighting" available options and consequences at each state by the desirability of that state, and then choosing a choice at "weighted-random" (i.e., the probability of the choice is proportional to its relative desirability). In the case of the game story, this is used as an "AI director" to keep the game interesting through events at the city map, as well as dynamically construct quests for the player.
Artistic Features
About 90% of the artwork in Superhero Simulator is original, including most of the meshes, animations, textures, and user interface elements.
In particular, the city map is original work, as are the character meshes and textures for both the male and female superhero models and most animations (some animations come from the Unity Standard Assets package). It also features original shaders that allow multiple-color tint mapping (e.g., for customizing hero costume colors).
It features creative-commons licensed work from The Noun Project (some user interface icons), music from ccMixter, and makeHuman (base meshes for facial sculpting). In addition, some hair meshes come from Mixamo Fuse.
For a complete list of credits, click on the "credits" button in Superhero Simulator
Game Philosophy
Superhero games have a checkered past, spanning multiple genres and running the gamut from cheap movie tie-ins to category-defining gems. There are games where you play as a famous hero, and (although less numerous), games where you create your own heroes. Two key features set Superhero Simulator apart from other games:
- Your custom hero or heroine is the protagonist! It's not Superman or Iron Man saving the day, it's your own hero. And, unlike some MMOs, there's not an army of other players' heroes running around. You are The Hero.
- This is the whole hero career! This game isn't just about your hero's darkest night or greatest victory, it's about the whole career. How will you fight crime and save your city? What villains will you face---or even create?
Select from a variety of different powers and customize your appearance and costume as your hero or heroine takes the fight to crime! But be vigilant---villains will surely arise to challenge you!
You might not be the hero that New Gothamopolis deserves, but you're the one it's got right now.
How will you save the day?