This weekend was an important one for game progress. Since the last release I’ve been working hard on this idea of a “missions” system that will give players more to do, and more purpose, in the game. But, as I covered in my last post, I haven’t actually done real work on missions yet. That changed this weekend.
First, let’s talk about what missions actually are because this has actually been my main problem! At one point I envisioned missions like quests. You visit person X, they ask you to do Y and they give you Z when you complete it. Standard RPG-style fare. But, I also intend to add local multiplayer into the game at some point and I really like the idea of randomized runs that encourage cooperative play. Something like the rift runs in Diablo 3.
I started going down a path of implementation for something I called “Chaos Runs”. The idea was that the player would pick up a mission from the faction that added a randomized “Chaos Sector” to the warp menu. The player would warp in and fight waves of enemies until they warped out or died. Death would carry a heavy cash penalty so the successful player would have to balance getting out before it was too late…with staying in to get better stuff. Enemies in Chaos Sectors would directly drop cash, health and occasionally randomized weapons.
I was really excited about warp sectors and had all the code in place to pick up the missions, generate the sector and warp in. I was working on the wave-spawning code when I began to realize what was happening: I was building a new, different game inside of Masteroid. My original vision was for Masteroid to be an asteroid mining, trading and exploration game that was like a lite version of Elite Dangerous or the X Series of space games. Building Diablo rift runs into the middle of my game was a huge distraction and well outside of the spirit of what I intended the game to be. I got excited and just started writing code, which is a terrible way to design games (or any other software).
I stopped writing code and started working in Trello. I stepped back and asked myself: “what is the simplest implementation of missions that will be interesting to the player, add depth and content, while also being reasonable to implement in a timeframe that will put a release out by the end of August”? Then I just spent an hour or two in Trello planning a better roadmap for the game for the next several releases.
When I finished that, I implemented most of how missions should work in about 3 hours.
The revised mission system is back to being more like an RPG. Each faction has a few mission types it can offer. The mission types, dialog and parameters are controlled in gamedata. This means that I can add missions (to an extent) without requiring a release of new gamecode. Missions have parameters that are adjusted based on the players level with the faction. So an example mission might be “Go kill 10 enemy faction ships. We’ll give you $1000 and your reputation with us will go up.” Moving dialog into data allowed me to have more “flavor” in the game too!
Now that the missions system is actually working I need to finish up a bunch of art and content tasks. With much, much deeper factions implemented comes some new demands for art. Faction ships should look distinct. Faction weapons should look distinct. Faction dialog should have flavor that matches the faction ideology. Factions should have home turf. This means I need to rework weapons, ships, sectors and, eventually, stations. This will go a little faster than it sounds, I’ve already made a ton of progress. The biggest, hardest task is balancing all of that and trying to come up with some accurate progression curves.