August 30, 2013

Inside Interplanetary: Cities, the Lifeblood of Planets

Looks like a utopia, but they're just resources of the war, really. 
Hi, My name is Sasu and I'm a game designer. Let's discuss some Interplanetary. 

Testing, testing, testing, not much interesting tidbits to tell about. The soundtrack is proceeding nicely and we have some awesome tunes ready for different phases of the game. We're posting the soundtrack bit by bit on our Youtube channel, so take a look if you're a fan of game music, and I know you are!

I can't believe we haven't thoroughly gone through today's subject yet. It's quite a big part of the game. I'm, of course, talking about...

The Cities

I'm sure some of you have been wondering, how exactly to win a match in Interplanetary. While the exact conditions can change around, the basic idea is to reduce your enemy's civilization to ruins. You do not need to destroy all life on the planet, or demolish every single structure; all it takes is to lower the Population of the enemy's cities enough to make them unproductive.

The Cities house the real life energy of the planet: the Population. The Population of the planet is responsible for generating many resources. One of the main features of Cities is their ability to produce Projects. Each city has a certain amount of Project Slots, depending on the amount of Population in them. You may then assign different Projects on the slots and, once again, the Population amount will dictate on how quickly they will be finished. Projects grant certain bonuses. Some are perpetually active, until removed, and others have a one-shot effect.

If a City's Population is low enough, all its Project slots are lost and the city is deemed unproductive until it manages to grow back to its former glory. When all the cities are in an unproductive state, it's game over.

Of course, it is possible to completely wipe cities off the face of the planet, but that would require quite a lot of firepower. Still, sometimes it's better to play it safe; the opponent can, after all, try to help its cities regenerate by different means. There's no thrill like overkill.

The amount of Population in Cities can fluctuate wildly, depending on many things: a catastrophic event may suddenly kill millions, but new citizens do get born all the time. It is possible to encourage the growth in different ways. For example, keeping a City connected to the rest of the world and initiating Projects to boost the Morale of the populace are good ways to give some incentives to breed. Then again, if you're so inclined, why not just clone people? Might not be the best for the Morale, but it kind of gets the job done.

The amount of Project slots, in each city, is shown as a green life bar.
So, to devastate the enemy planet, you need to be ruthless and make the lives of the people as miserable as possible. Persistent attacks give them no time to recuperate and also wreak havoc on the Morale, which in turn affects many things from Production to Population Growth. Even Technologies get developed slower if there are no people to develop them.

There's quite a lot going on there and possibly worthy of a future post, but these are the basics. Just remember to take care of your cities! Don't litter, and so forth.

August 27, 2013

Inside Interplanetary: The Resources: The Material: The Movie

Don't worry, it's just steam. Black, smelly steam.
Yo, everyone! Game Design fellow Sasu is back in action, currently testing the newest build of Interplanetary. Some key features are still missing; it's a little bit difficult to enjoy the game when buildings and cities don't even have life bars, but the game is otherwise quite playable already. Add in a couple of features and balance, balance, balance!

Today we shall delve into a central system, that isn't completely implemented in the game at this point. As such, many of the terms used will probably differ in the final game and the system itself will evolve. In spite of that, let's take a look at the basics of...

The Resources of Interplanetary: Material

We've already mentioned some things about Interplanetary's resources in these posts. There are quite a few, such as Production, Science and Power, but one of the most important ones, for you to keep your eye on, is Material.

Material represents everything, well, material that you need to build structures: concrete, rebar, currency, whatever. It's all lumped under the moniker of Material for your convenience! Along with Power, a bar showing the available Material is always shown to the player; these are the two things that need constant attention when developing your planet.

All those railguns ain't cheap.
As we've explained before, many actions in the game cost Power, the amount of which is recalculated, according to the amount of Power Plants, at the beginning of each turn. Material, however, works more like normal currency, meaning it can easily be depleted, if you consume more than you produce.

The game begins with a set amount of Material for each player, but it won't last for very long. A savvy player will construct a couple of Mines to keep their stocks full. A normal Mine yields a small amount of Material each turn, but they can be upgraded to be more efficient.

The Material doesn't just appear from thin air, though: each planet has a set amount of it, and once it's gone, it's time to start thinking about alternative means of sustaining your development. The planet's Material is divided into three parts: Normal, Aquatic and Deep. The type doesn't matter when building structures, but each of them is acquired in a slightly different way. Most of the planet's Material is Normal and is mined by Normal Mines. Aquatic Material is mined with Underwater Mines and Deep Material is gained by upgrading Normal Mines with Deep Mining capabilities.

Planet Material is like a pizza: tasty and crunchy and I'm hungry.
Initially, all Mines work quite inefficiently and a lot of the mined Material will go to waste in the process to convert it to usable resources. This can be remedied with upgrades, however.

Interplanetary warfare can take a heavy toll on the resources, and you will inevitably run out of Material at some point. When the final drop is consumed, it's time to look to the skies and attempt to colonize a nearby planet. To colonize a planet, you use your interplanetary weapons to shoot Colonization Probes, which in turn will set up a small colony on the planet they land on. The colony is able to, among other things, mine Material and send it back to the home planet.

Long matches may very well end with almost the whole planetary system dry of usable Material. Insert commentary on unsustainable development and the irony of war here.

Hopefully, a complete image on how to play Interplanetary is beginning to form for everyone. We'll be back another time with more tidbits and such. See ya!

August 16, 2013

Game engine summer cleanup

Hello everyone, we thought we'd take the chance to give you a brief update on what has been going on with the game these past few weeks. :)

We finished the first version of  our internal alpha build just before the end of July. And while most of us went for a holiday Sasu bravely stayed behind to do some testing. We were still missing some features due to some technical difficulties and Sasu also found few bugs and some room for improvement.  So after we got back from our holidays the programmers have been focused on improving and fixing the underlying code structure before we continue adding any new or missing features.

Upon entering the alpha we first introduced some networking capabilites into the game, which ended up causing trouble with how things were wired before. Previously all the UI  elements were always intrested in who the 'active player' was, and with the addition of the networking there were suddenly two active players and that resulted in the UI acting like it had lost its mind. For example making both players research technologies in the same technology tree.

To fix this Jussi started making a UI Manager that handles all the different UI elements  more independently. This means that only the UI Manager will have the player reference and then give it to the smaller individual UI elements (resource system etc.) when they needed the information. This fixed a lot of issues with showing the right player's data, but it also meant bigger change to the whole game engine in how it handles the players.

This bug didn't actually have anything to do with the UI but it was still pretty freaky.

Another change came about from Sasu's notes from the testing he'd done. In the end of each turn,  the game displays the results of actions taken during the turn. This means, for instance, displaying the flight of any projectiles the players fired. But it might get rather tiresome watching the pretty pretty particles flickering on the screen for 5 seconds after every round, so we should give the player the option to skip watching this part of the turn.

This called for an overhaul of how the action phase worked. Previously the game displayed the movement of planets, projectiles and other game objects just as in any realtime game, calculating projectile trajectories on the fly. In networked multiplayer, the host's machine would sample object positions every now and then and send that data to all other clients to keep the displayed scenes on sync, and also send signals at events like a projectile hitting something and getting destroyed. All clients would see the scene played out at the same time, and it wasn't really possible for one player to skip ahead of others.

The new system we have implemented works in a manner where the host machine calculates the whole action phase and jots down its results before the action phase is visually displayed to any player. The results of these calculations, what projectile hit what and when and so on and so forth, are then sent to all clients. This way, the clients can independently control the flow of the display, without it affecting the results of other clients. Now a client can skip straight to the end of the phase and start playing their next turn, while others are still watching the fireworks at their own pace.

Onward we go!

The cleanup/ rework on the engine was finished today and starting on Monday we will be moving on to first adding the missing alpha features and continue from there.

Also, our friends over at Rust0 games had spotted a sweet deal on the Space graphics toolkit in the Unity's asset store (it's over now unfortunately) and hinted that we might be interested...
A sneaky peek of what you can do with the Space graphics toolkit. This hasn't been implemented in the game yet.

That's it again for today and see you again soon. :)

August 9, 2013

Post-Assembly disassembly

False advertising, we admit. The pizza was a lie.

Hello people of the Internet! We are sorry to have sneaked on vacation without announcing it properly, but we now are back, refreshed and running. This is Niklas, bringing you a few words on the process on Interplanetary and some more on my trip to the Assembly Summer '13 with the rest of the KAMK crew.

Before the well earned holiday we worked Interplanetary to the point where we could start working on in-team alpha testing. Some bugs and gameplay issues popped up immediately as usually happens with tests like this, so we will now focus on making things better. After that, it's time to start dragging in test users outside the team. If you're interested in being one of them, drop us a line and there's a good chance we will include you! Notice that unless you have a friend to play hotseat with, you may need a VPN client and end up playing against one of us.

This is what it's all about to many of us.

Now then, Assembly Summer '13. I will take the liberty to write from more personal perspective as I was the only member of TJR to travel this time. We originally intended to bring a two-man strike team, but Jukka succumbed to a nasty stomach bug prior the trip. But I still had a chance to take part, thanks to the very generous people at KAMK. The event itself was of course awesome as always, but this time I didn't quite manage to get the best out of it.

Here's what lacked, so you can do better!

We did not enter the game compo. This was a decision we made pretty early on. Interplanetary is not the sort of game that fits very well in a compo like this. It takes at least half an hour to really get into the game, and that's simply too long, we thought. However, games are presented to the audience in a game trailer form, which would have been doable for us and the compo is really good publicity. M.A.D, a KAMK game we had running at the stand got a lot of attention, and many people mentioned they had found it through the compo.

We did not bring a game demo with us. This is something we actually planned on doing. The demo wouldn't have been exactly Interplanetary, but instead a modified version of the early proof-of-concept version you can download from right there on the right hand side. We planned on having the game run on a touch screen we had on the stand and have people compete for small prizes. The modifications didn't make it in time though, as we prioritized finishing the alpha. In hindsight, the demo version would've been a better choice.

We did not direct our marketing to the players. I was seeking out professional contacts as usual, even though there weren't many around. This is something we should have considered earlier: Assembly might be one of the best places to reach the target audience directly when you are making a game for fairly hard core PC audience.

We didn't prepare well enough. The event was too fast upon us, and we had decided some time ago to have our vacation right before the trip. Because of simple mistakes like this, we didn't have enough time to think through what would be our goals, prepare marketing material etc.

I neglected social media. Like mentioned in the guide I made earlier, events like these provide excellent content for social media, and it's also a good chance to communicate with people who are either present or just interested in what's going on on site. Unlike Nordic Game Conference and Free Your Play, this time there really wasn't  a good reason behind as we had both working wifi and native 3G to work with.

I brought those awful shoes I had at NGC again. Ouch.

Nevertheless I still consider the Assembly trip well worth the time. I met new people and got to spend good time with some fellow nerdy people. Next year TJR will be there again in one form or another, and we will make the best out of it. See you there!

No matter what the locals say, Pasila can be quite pretty. Next year again!