JGame: An exercise in game balance
||Source (Unity 4.2)
Frustrated with the slow pace of browser games, I decided to see if I could re-create one such game faster than I could play it
I really like the idea behind browser MMO OGame by GameForge. In it, you create a space empire, collecting resources, building up colonies and launching mighty fleets to raid other players and relieve them of their stuff.
I first came across the game a couple of years ago, but gave up after a few days: Like most such games, it is incredibly slow paced, with ever-increasing wait periods and timers between actions. While this helps regulate players from becoming too powerful, too quickly, its main purpose is to frustrate the player into paying to speed things up.
I really resent that, since I usually only have a very limited time period in which to play games, and I can’t afford to pour money into the experience just so that I can do more than one meaningful action per hour.
Recently, I decided to give the game another shot, and set myself the challenge of building a single spaceship as quickly as possible. In the end, after gathering resources, doing research and building shipyards, it took just over 24 hours. However, in that time, I got thinking that actually, I could probably get that spaceship quicker if I re-made the game myself.
Recreate OGame within 24 hours to a point where I can build a spaceship
- Create a nice looking UI to match the OGame one. Partial Success
- Connect the game to a back-end server so multiple people can play. Fail
Firstly, yes it is possible to recreate the core mechanics of a relatively simple game like OGame in a game-jam style situation. To make it look good takes some considerable amount of time and effort longer. To put in the back-end server infrastructure was something I didn’t even get onto, and all this is leaving aside some of the more subtle nuances of the game.
However, by recreating and subsequently testing JGame, as well as playing the original OGame, I feel like learned a lot about game loops and free-to-play mechanics.
OGame is actually quite fun after the point I implemented up to, which is getting your first spaceship. You can then raid other planets / players for their resources, and add them to your own pile. By doing so, your ability to make progress in the game is directly tied to the decisions you make, and loses the deterministic feel of the early game.
That initial game loop of upgrade building, wait to collect more resources, upgrade building is deeply flawed. Although there is a spike of excitement when the player finally gets to hit the “upgrade” button and see some progress, it is tempered by the wait timer. The player suddenly becomes stuck again, for minutes or even hours.
This is even worse after the player has left the game overnight. Upon seeing a great big stockpile harvested over many hours, the possibilities of what the player can do with all that stuff is really exciting. But, after one or two initial build/upgrade decisions are made, the player finds either that the wait timer is once again putting the breaks on their plans. Or alternatively, the game is balanced such that as more buildings are upgraded, technologies researched etc, their costs go up in line with what the player is able to collect. Meaning that big shiny pile of crystals is actually only good for a single high level of Crystal Mine upgrade.
Being a casual game, it’s reasonable to expect players to dip in and out. Spend 5 minutes here or there. But there is a big issue when the game prevents the player from executing complex strategies, or forces them to remember what the heck they were in the middle of doing an 8 hour-work shift later. That frustrates the player not in the positive way that a challenging adversary or difficult puzzle does. Rather, it’s the meta-game; the arranging of your day so that you’re online just as your battlecruiser finishes building, or your Metal Mine completes an upgrade; that forces players to make compromises in their real lives that they then resent.
On a deeper level, the reason they resent that is because games are part escapism, but as well because the game exists in a magic circle. The illusion of both is broken by the intrusion of the meta-game.
Another problem I noticed with many players I spoke to, who had, like me, given up on first trying the game, was that they could see the long term benefit of building an economy in the early game. Reinvest hard-won resources into more mines and factories to generate even more resources. Money makes money.
However, the game didn’t make it clear when to step off that treadmill. At what point to start building peripheral / support buildings that have clear longer term benefits, but give no immediate, tangible gains? When to start researching technologies, building ships and defences? If that appeared to be days away, the prospects were so distant that players would conclude it wasn’t work the risk/effort waiting to find out. As a result, they would quit before they got to the more engaging parts of the game.
As for JGame, I’ve included the ability for the player to adjust the various time and cost multipliers (though at the moment those values can’t be saved). From my own testing, it is too easy to simply flatten the requirements tree and unlock everything from the start, turn all the timers down to 1 second, and a few clicks later, achieve “victory” by popping out a few spaceships. However, when I leave everything on default settings, I find I’ve simply not got the patience to sit through even 30 seconds of time ticking down that I’ll never get back.
My hope is that people will use JGame to experiment with finding that middle ground, that “fun” zone between what constitutes too long/boring and what is blatantly too quick/easy a game.
My Progress Hour-by-Hour:
For the record, here is my progress blog, which was updated live throughout the challenge
Hour 1 – Create the universe
I created a universe with a single solar system and 15 different planets. I created a player and assigned one planet to be the player’s home world:
Hour 2 – Resources and Buildings
Created some resources and buildings to mine / produce those resources
Hour 3 – Improve Buildings and Update Loop
Created a mechanic to allow buildings to be improved to the next level. Also created an update loop where mines will collect resources depending on their level
Hour 4 – Energy Up!
Added in power plants and accounted for energy needs of the mines
Hour 5 – Low Energy
Implemented the Energy Management readout, bar the level adjustment buttons. Will revisit that later.
Hour 6 – Facilities and Prequisites
I must admit, I thought I’d be further ahead at this stage than I actually am. As things stand, the game has (nearly) all the resource management implemented, plus in the last hour, I’ve laid down the structure for the tech tree, and for different buildings requiring different other prerequisite buildings and technologies. Next step will be to allow the player to research those technologies
Hour 7 – Technology and Shipyards
I finished off the job of creating technologies and added in a research tab. The shipyard was made entirely of code I’d already made, so was a simple copy and paste job.
Hour 8 to 10 – Fixing
I made a numbers input system for the player to specify how many fighters they wanted to build in one go. I also went back to Energy Management in the resources section and made a button to let the player select what energy % they wanted their mines to run at.
Hour 11 – Snazzy
Started working on making the user interface look less vanilla Unity, and more space-style. This is a never ending process, and I stole some art assets from Executive Star, but made good progress in just a short space
Hour 12 – Pink
You know when to call it a day when the most your brain can think about is what shade of off-pink to make the text in your game. Hour 12 rolled around with some parts of the UI looking passable, if a little sparse, and others thoroughly unloved
I spent the day tidying up the code, commenting it and sorting out all the hacky work arounds that I’d scrambled together in my game-jamming state.
I also finished off the UI for the remaining sections, as well as making some subtle but important improvements to the overall UI
Finally, I added those accursed timers that force you to hang around waiting instead of actually playing / making progress in the game.
I added some more artwork and a system to allow many of the variables and stats to be changed at run time. The player can choose how to balance the game, making buildings, technologies and ships more or less expensive, build faster or slower, and allowing the addition and removal of prerequisites.
Finally, I uploaded the game and source code under a non-commercial license. As much as I might complain about wait timers and free-2-play monetisation techniques, it is just not cool to wholesale copy someone else’s game, doubly so to then start selling it.
JGame uses OGame as its base, but has ended up sufficiently deviating over the course of development, that I’m satisfied it’s not so much a copy any more, but a tool for exploring gameplay balancing.