This is a mission for the StarCraft 2 Galaxy engine that I created. It features custom driving gameplay/physics, a quest and brief storyline. The premise is simple; you play Odie, a hellion driver for Pegasus Retrieval Co., hired to go to New Arcadia and pick up a client. The twist is that the Zerg are invading the planet, and your vehicle doesn’t have any weapons other than its speed.
This is a video capture of some of the gameplay. Note that the text boxes don’t appear when audio isn’t muted.
The full script can be found here. The following is a summary of what’s there.
After Odie gets dropped off on New Arcadia, he is attacked by Zerglings. Since he doesn’t have any weapons, he runs over a few and follows the beacon’s signal. The signal leads him through a backwater town to a homestead, past other people trying to escape the onslaught. He quickly Margo Stanfield, the client. Margo demands that they pick up her dad as well. Odie, with some misgivings — this is how jobs usually go bad after all — agrees.
After they drive back into town and to the Stanfield Bar and Grill, they find Margo’s dad, Peter, beating back waves of Zerg with a flamethrower. While Odie is driving around the bar, clearing away more Zergling waves by crushing them under his wheels, Margo and Peter get into a yelling argument at one another. Peter doesn’t want to leave his bar, even if the planet is about to be overrun. It is, after all, the last thing that he and his wife shared. Margo just wants him to come to his senses and leave with her. Finally, after Peter flatly refuses, and while monsters are charging from every direction, Margo puts herself in harm’s way by jumping out of the speeding car, refusing to get to safety until her dad agrees to come with her. Peter relents, once he realizes he could lose his daughter as well.
Odie picks them both up and they head for the spot where he’s going to meet their escape ship, an airport on a hill near town. But, the Zerg destroy the only pass to higher ground. Margo guides Odie to a back road that they could use to get close to the airport. Problem is, they bridge on that road is out. They only have one choice, to race up the hill and jump the gap.
After a death defying stunt, as well as driving through countless Zerg, Jane, Odie’s pilot gives them some bad news. It’s too late. The Zerg’s flying creatures would shoot her down if she tried to pick them up. They need another way to get to orbit. Peter actually has an idea how they could manage that, and convinces Odie to drive back to the bar.
Leaping over cliffs, smashing Zerg along the way, they manage to get there. Couple of minutes later, and after jury-rigging the moonshine still under the bar into an improvised rocket engine, launching the building, and the three of them, to safety.
The tone of the story is meant to be cartoonish, combining action with a heavy dose of humor, while still maintaining, and increasing, the sense of danger and dread. To accomplish that, I used three element types:
The voice-over tells the personal story of each character, and happen simultaneously with the gameplay. Cutscenes are used to highlight changes in the situation such as new obstacles appearing the player has to content with. Lastly, the environmental element is used to contextualize the story, providing details that allow players to understand why the situation is so dire. For example, as the player drives around earlier in the mission they will see people piling into vehicles. As the mission progresses, the player will see the buildings destroyed, vehicles they saw earlier crashed besides the road, etc..
This approach is meant to make VO be relevant specifically to the player, cutscenes let changes happen to the player’s goals without risking that they won’t notice, while the environmental storytelling elaborate on the context and ratcheting up the tension.
Here is a sample cutscene.
Since the map introduces new gameplay mechanics, I included some tutorial elements at the start. This is done in the context of the story using VO, with some explicit prompting to reinforce the lesson being taught.
Then, the player is presented with an objective that updates each time they reach a progress gate. If the vehicle is destroyed, the player will respawn at that gate.
As the player goes down the list of objectives, there is an escalation, both in the frequency and power of the enemies that spawn. There are sections where enemy spawn via drop-pod, crashing onto the surface of the planet in small groups around the player, compelling them to keep moving. In other sections, such as during the “Circle the bar” they spawn in waves. This was done to add variety to the challenge being posed to the player.
As the challenge ramps up, enemy variety does as well. Here are the enemies in order of appearance:
- Zerglings — Minor threat melee attackers. Player can just run them over.
- Hydralisks — Medium threat range attackers. Player can run them over, but they are more resilient and attack from a distance.
- Roaches — High thread range attackers. Players stun themselves when they crash into them.
The difficulty of the whole experience is meant to be low and forgiving, given that it’s meant to be played from beginning to finish in about 15 minutes, and it’s meant to serve mostly as a vehicle for the story.
As I was developing this project, I developed the game mechanics while simultaneously writing the story. This led me to incrementally add new features and mechanics which was risky, even for a project this small. With each addition, the project became increasingly unstable, increasing the time I needed to test things from end to end. There was also a point where a technical issue led to major change in the story after the project was a day away from completion.
The ending of the story called for a cinematic conclusion; Odie and his passengers took a jump, and their dropship pilot would swoop in and pick them up in a Dukes of Hazard moment. However, given the custom systems I had to build up in order to support the kind of gameplay I wanted, I couldn’t use the standard tools that would’ve made that sequence possible.
Rather than spend an unknown amount of time refactoring my custom systems to make the standard tools usable, or create new tools to regain that lost functionality, I decided to rewrite the ending. A new sequence, less dynamic but still hitting the right payoff, had to be drafted, implemented, tested and polished. That change added at least three more weeks of development time to a project that had already taken months to build.
The concrete lesson project taught me is that everything in game development has a cost; someone’s time. As I was working alone on this, I was the one paying it. Past that, this project was a way for me to cut my teeth on something complex, and it led to other, greater things like Terran Interceptor.