December 9, 2013

Inside Interplanetary: How to Greenlight?


As you may have noticed, Interplanetary is now on Steam Greenlight! It's doing pretty well too: as of this writing, we have 7,375 "Yes"-votes. Our goal of 10,000 is getting ever closer!

Today I thought I might give a little runthrough of our Greenlight process, so any other hopefuls may benefit from it. So, let's get started with...

Interplanetary's Greenlight Process

We unveiled our Greenlight page on December 2nd, but we've been building the page for a long time before that. The first thing we needed to do, was to pay Valve $100 to get access to the page. This payment mostly exists to stop trolls from sending in garbage. After we gained access, we needed a couple of things:

  • An icon
  • A video
  • At least 4 screenshots
  • A description

Mostly quite straightforward. Our artist whipped up a beautiful animated gif as an icon for the game. This icon shows up when people search for games on Greenlight, so it needs to be eye-catching. We ended up animating a planet under attack with the game's logo on top. It communicates the idea of the game pretty well and is flashy enough to get people interested.

The trickiest part was the video. We decided to produce a new trailer and a simple gameplay video to accompany it. The trailer is the first thing that plays when people open the Greenlight page, so it needs to be attention grabbing, interesting and explain the game fairly well. Our earlier trailer was very fast paced and full of information, but this time we decided to slow the pace down a little bit, so that a new viewer might have easier time digesting it. A slower pace also gives a more realistic image of the actual game.

The trailer tells a little story using gameplay footage. A couple of turns of gameplay, two planets warring with different strategies, "filmed" cinematically. Combined with fitting music, it seems to be a success; people seemingly get the idea right away.

We also wanted to make an in depth gameplay video for those who want more details. We simply filmed a match between team members and narrated it, explaining game mechanics and strategies. The video ended up being over 50 minutes long, but it was never meant to be watched all the way through, necessarily. Curious people may skip through the video to get a feel for the game. Some have been interested enough to actually watch the whole match.

We also wanted to actually give people something to play, so we released a version of Interplanetary alpha on our Greenlight page. No codes needed this time. This added a lot of value to the page, since people can immediately get their hands on the game and discuss its features and arrange online matches right there on the discussion page.

Publish!

When all the content was collected for the page, we published it. We had heard that there would be an approval process afterwards, and it would take some time before the page would go public - wrong! It was up immediately! Now we had to hurry to get the word out and to handle the initial flow of people. Comments started dropping in, and luckily, they were all pretty positive!



At this point, we got access to some very interesting statistics on the page. All the important stats were available: the amount of visitors, favorites, followers, votes. In addition to that, we could compare our process with the average stats of successful Greenlight projects. A very useful meter is a percentual value that shows how far are we from the top 100. At the moment, we've gone 90% of the way! We could also determine that approved games need about 10,000 votes. Unexpectedly, we're already quite close!

The mere existence of a Greenlight-page does draw a nice amount of visitors, but we wouldn't have been as successful if we hadn't had any kind of community around the game already. After the first week, Interplanetary has disappeared from the first page of Steam Greenlight. The flow of people will obviously slow down a little bit, but luckily we've managed to get some gaming press interested. Now we'll just concentrate on working on the game and spreading awareness. It's not over yet!

Big thanks to everyone who has voted for Interplanetary! If you have any questions about the details of the Greenlight process, ask away! We'd be happy to answer!

Check out our Greenlight-page here!

December 2, 2013

Greenlight for Interplanetary! (Also New Trailer)

With a new trailer, Interplanetary has now been submitted to Steam Greenlight!

If you would like to see the game on Steam, go give us a vote! We would truly appreciate it.

On our Greenlight-page, there is an open link to a playable Greenlight alpha version. No codes necessary this time! This is kind of an evaluation version for people who want to give Interplanetary a try. Testers with alpha keys may still get updates to the alpha as they come, but the open version stays as it is.

November 27, 2013

Creative process and GUI design #2

Hello again!


Tarita here, the artist who has been tasked with the challenge of creating a passable looking UI for Interplanetary.

So, last time we were left with a combination of UI styles, right? I promised I would show you where the UI is currently heading, so here's a mockup:



Please keep in mind that the look of individual elements is far from being set in stone, and that the image above is just a mockup and does not accurately represent what the in-game UI currently looks like. We have just begun alpha testing, and in the light of the new feedback we may have to adjust some things.
The mockup should, however, give you an idea of what kind of style I'm aiming for.

Overall, the style is pretty simplified, and I like having some empty space between stuff. Even when adding detail, I'm trying to keep things simple and stay consistent with the limited amount of colours and light effects. I prefer not to add any extra fluff that doesn't have a distinct function or a reason to be there.

The elements in the mockup are somewhat large. This is partially because they have to work with a variety of different screen sizes, and still stay readable. I think that the increased size complements the simplified style nicely, but some people have told me that it makes the UI look "cute", which may or may not be problematic.

Earlier I told myself that the boxes would be neither blue nor gray, but in the end I had to go with gray.
Why? Because I found that only gray was neutral enough for the rest of the game.
I wish to leave the main stage for the planets and the space background, so the UI can't be too colourful or pop out too much. I don't want the player to miss the subtle details of the starfields on the background just because I insisted on having screaming, bright- yellow boxes on top of everything. This is, incidentally, also one of the reasons why I favour transparency and lack of boxes whenever I can.

Sometimes things pop out too much.

The other reason for the gray main colour is that I'd like to introduce some colour-coded information to the UI, such as icons and text, which are more visible on a muted background. Having a few splashes of colour is a breath of fresh air that also makes the dark graphics of Interplanetary feel slightly less grim and murky.


That's all for today, thank you for reading! In the future I may write more about the individual elements and the design choices and concerns behind them.

You can follow the progress on Interplanetary on Facebook, twitter or the game website.

November 22, 2013

Interplanetary Alpha Update: Online Play!


Hello testers and non-testers alike! Interplanetary has rolled out with a new, updated version of the alpha!

Former testers can use their old alpha code to download the improved version. New testers can also give it a try by shooting us a private message on Facebook, Twitter or IndieDB.

Just drop by at www.interplanetarygame.com and test away!

Remember, the alpha test is for the Windows version, but you can contact us, if you would like to try out a more experimental Mac build.

The Changes

Quite a few things have been changed and many of your own suggestions incorporated. The big thing, of course, being Online Play! It's now possible to face your friends all over the world!

Here's a list of major updates and fixes:

Features

  • Online multiplayer enabled
  • Missile targeting changed to be more intuitive
  • WASD rotates camera in Build Mode
  • Weapon trajectories highlight when mouseovering the weapon list
  • Planet orbits highlight with mouseover
  • Camera moves and stops more smoothly
  • Power Grid animation added
  • Slight delay added to Power Grid connections
  • Various balance changes
  • UI improvements
  • Minor graphical updates

Fixes
  • Missiles now hit where they're supposed to
  • Fixed a lock-up when ending turn after incomplete targeting
  • The infamous "flying buildings"-bug is now less likely to happen
  • Smoke effects displayed in correct spots
  • Repairing buildings now updates properly for all players over LAN/online multiplayer
Our most hardcore testers can take a look at a super detailed changelist here!


November 14, 2013

Interplanetary Alpha


Hello, everyone! As you may have noticed, we've had some big things happening recently. We released a new alpha gameplay trailer, have been handing out alpha test codes to willing participants and even got featured on Rock, Paper, Shotgun! Feels good, man.

Today, we'll be going into more detail about the alpha (which you can get here, once you've pinged us about a code.)

Interplanetary Alpha Features

So, what is actually included in the Windows alpha version? Well, the very basic gameplay is there, but being an alpha version, even that's not shaped to perfection yet. It is possible to finish a match and even have a bit of fun doing it! The proper feature list is:

  • Hotseat and LAN multiplayer
    • Hotseat is currently restricted to two players, while LAN allows for more. Because the feature is not finished however, the game ends if the host loses.
  • Structure building
    • You can purchase and set some basic structures on your planet, forming Power Grids. It is also possible to repair, sell and reconnect buildings to the Power Grid.
  • Power Grid
    • You can connect structures together, so that they're linked to a Power Plant that keeps them online.
  • Cities
    • The function of Cities is greatly simplified in this version: they act as your planet's health, their population grows, they generate Material and Energy and act as connection points for your Power Grids.
  • Resource Management
    • It is possible to gather Material and Energy, using Mines and Power Plants.
  • Defenses
    • Forcefield and Kinetic Defense can be built to defend your planet, for the cost of Energy.
  • Firing weapons
    • Basic versions of railgun, missile and laser are usable. In the current build, the missile doesn't always hit where it's supposed to.
These are the features you can test. We really welcome all kinds of comments, whether you think something would work better differently or that some features are unbalanced. It's very easy to change the basic values, such as weapon damage and planet speeds, but bigger changes take more time.


A big thing we want to get comments on is the targeting and firing of weapons. Is it fun? Does it work? All the values of the planetary system, from gravities to planet sizes, are easily fixable, so don't hesitate to give your thoughts! 

What's to come?

We are planning on updating the alpha version periodically, so people can also test newer features. This will go on until we reach what we determine to be the beta-stage.

Some features to be expected sooner or later:
  • Single player against AI
  • Intelligence mode
    • Adds some fog of war-like features
  • Technology progression
    • A tech tree allows players to choose their strategy better and unlock new buildings and bonuses
  • Expanded City functionality
    • The players will be able to allocate the population to work on Projects that give certain bonuses
  • More features!
Happy testing everyone! Send us comments and we'll take your experiences into account when planning the next build!

November 11, 2013

Interplanetary Alpha Testing and Gameplay Trailer!

Suddenly, a real gameplay trailer! Excitement!

We've been very hard at work these last couple of weeks, but it's been fruitful. We're proud to properly announce the alpha testing of Interplanetary! How to get in on this action? A couple of steps:
  1. Contact us! You can do it in a lot of places, Facebook, Twitter, IndieDB, our DevBlog...
  2. After receiving your nice message, we send you a code.
  3. Go to our brand new website WWW.INTERPLANETARYGAME.COM, enter the code and receive your alpha!
That's it! We will be updating the alpha every couple of weeks. We'll give you a heads-up on Twitter and Facebook every time that happens, so stay in touch!

Have fun testing and remember to send us comments. The most useful feedback wins a little prize!

October 21, 2013

What's up, Interplanetary?


The game is actually starting to look kind of nice! After all the recent devblog posts, we thought it would be nice to get back to the basics for a moment and give a little update on how we are doing with Interplanetary and internal Team Jolly Roger stuff.

Interplanetary is prettier and more functional!

It's true, a big part of why I wanted to write a quick status update is to showcase some of the new graphics! We've been busy implementing a graphical beauty that we won't be ashamed to show around. Of course, this is still not final, but it's a nice improvement to what we've had in the past.

We've come a long way...
...and we're still not done!
We're currently working on creating something nice looking and playable for o
ur upcoming visit to DigiExpo in Helsinki. Something big is brewing and we'd like to have a nice slice of the game to show to people there, and maybe even let them try it hands-on.

As for the gameplay, we basically have all the basic features of the game present, one way or the other. For showcasing the game, we're concentrating on getting the targeting phase work properly and feel good. It is, after all, a major draw of the game. The other main feature that we aim to polish, is the building of structures and maintaining them. These two features by themselves already make a kind of a nice little game, but there's a lot more in store for the next version.

TJR is a company, for reals!

This is quite huge for us: we managed to break free from the grasp of our university and form an independent company, officially known as TJR Games! We're still the good old Team Jolly Roger, just a bit more official.

Starting a company wasn't a simple thing to do, and preparing for it has slowed down the game development considerably at times. There was a period, when we didn't actually have a work space to do our game development and the team was separated to work in their homes. This rarely works.

Was going to add a picture of the office, but who cares? The game looks nice.
Luckily, we found an office space for a manageable price and filled it with computers and other stuff needed for game making. For a new indie company, this wasn't exactly cheap overall, but at least the situation is more stable now and work can resume in normal pace. Or, extranormal, since we're in a full-on crunch mode! Busy, busy.

Hungry for more screens? Check out our stash of pics, from the oldest of versions to the new shiny ones.

October 14, 2013

Northern Game Summit 2013 & how to pitch a game

Full house!

Northern Game Summit was held second time last week, and we thought this would be a perfect time to share our experiences.

Kajaani is quite a remote place to hold a gaming conference at, but NGS was still very populated event. (And the only one to date that has started with karaoke!?) All in all the event was pretty excellent, we had a chance to meet lots of new people and keep in touch with old friends. The lectures we're interesting too, even after some technical difficulties.

Afterparty was a big part of the event as usual. The organizers came up with an interesting combination as the stands you would expect to see in most gaming events we're actually part of the party. Worked very nicely!

Ever played Alan Wake on 300" screen?

This time we took part in the pitching contest, which was probably the most important single event throughout the summit. While the pitching didn't go as well as it could have with proper preparation, it was well worth the trouble. Pitching an idea in front of real business people is an excellent way to get some free EXP, something we definitely recommend to any game developer. Since it's possible to learn from anyone, not only from the best, check out this short list of what we gathered:

-Prepare early. This provides you a chance to go through your presentation multiple times and in different mindsets, and gives you more time to...

-Practice. This one should be obvious, but it might still be just a little bit too easy to trick yourself into believing you know your idea/project well enough to present it spontaneously. Do this in front of someone not familiar with you as well, if you have a chance. There a second layer to practice as well: In addition to practicing every single pitch, you should practice pitching in general as often as possible.

-Gather your team, or at least consider doing so. Preparing a game pitch is something you can do alone, but it's almost always better if you can prepare it with your team or even a couple of friends. This helps you to cover multiple points of view, get more feedback and root out some hitches that might have gone unnoticed.

-Back it up. Do some research that prepares you for difficult questions about your target audience, competition, sales estimates, even tech. Including those things in your pitch in a simple format gives a feeling that you know what you're doing, as long as they are facts.

-Make it look good. Having some cool concept art can definitely help you get the point across. Mockups or bullshots are better, and if you have a chance to include a short section of gameplay video, you're all set!

In the process of preparing for a pitch one time too little.

PS. We haven't completely forgotten about Interplanetary either. The development effort is back on track and running smoothly now that we have settled in our new premises. More on that later!

October 2, 2013

Creative process and UI design, part one



Hello!

I'm Tarita, one of the two artists in our team, and this is my first blog post here. My main task in Interplanetary is to help to make the User Interface fuctional, and hopefully, also pleasant to look at.

Thankfully, I have studied graphic design in the past, and my previous game projects have provided me with enough experience to understand that design work like this involves more than just throwing a few boxes here and there and calling it a day.

So, the theory side is pretty well covered, but my hands-on experience? Very little. Our team size used to be a lot smaller, and as the sole artist my attention was mostly directed at in-game assets. I had made some UI graphics, too, but there wasn't enough time to actually concentrate on them, not properly. Interplanetary is my first chance to redeem the hasty UI:s of the past, so to speak.

Despite this, my first mockup sketches for Interplanetary were conservative: Electric blue elements surrounded by a subtle shine of blue light. I wasn't satisfied. While the combination definitely looks appealing, it's also a very common sight in scifi games, and I wish to avoid sticking to the most obvious style choice. I was looking for something modern and sleek, simplistic rather than cluttered and glossy.
Pictured: creative process

After "some" time, blood and bitter artist tears, I ultimately came up with three different style options for us to choose from: a) A light and delicate combination of solid metal parts and transparent holograms, b) Solid, traditional boxes with a white color scheme, and c) A mix of typography and colourful, yet subtle elements that obstruct the game view as little as possible.


Based on the sketches, we decided to go on with C, but we dropped the main focus from the typography elements and I was requested to tone down the amount of colours. To compensate for the losses, I picked up the white colour scheme (originally from B) and decided to use partially transparent objects instead of plain text.

To be continued...
In my future posts I will shed light on some of the many hassles of designing a functional UI, and provide you with some images of the final UI style. See you there!


September 23, 2013

Code of Interplanetary: Can I see some ID, please?


Hello there, dear reader. I'm Riku, you might remember me from that more technical post I wrote about making a GUI with Unity. In addition to blogging about our Unity woes, my task has been programming network functionality for Interplanetary.

The game uses a client-server model, where each game client records what the player on that client does during their turn. When the player ends their turn, the client sends all that information to a server for processing. When the server gets this data from all the players, it combines all the player actions together and then plays out the turn, figuring out the outcome. The clients then get back the results for the turn and display some pretty pretty particles flying around to show their player what happened and who shot who.

From the outset I decided that to implement this, I would give everything a unique ID that would be used by different clients and the server to make sure they are all talking about the same thing when communicating. For instance, whenever a building takes damage, the server takes note of the ID of the building, and then tells every client that building number 5 just took a hit. This way, to keep every client in sync so they are all on the same page, I'd just need to make sure they all use same IDs for each object. This sounded very simple at first, but ended up being a little bit tricky in practice.

Let's examine how a building gets assigned its ID. When a building is being built, it should be assigned an ID right away so it can be found again if it needs to be operated on later on. However, the game clients can not be the ones generating the IDs. Each ID needs to be globally unique, and the clients can really only generate IDs that are locally unique to only that one client. They could end up generating same IDs that some other client is also generating for themselves, at which point there would exists two buildings with the same ID. Let's illustrate this with an example. Imagine that ID is an integer, and generating an ID means using an integer one higher than the previous one used. The first building built would have ID 1, the second one 2 and so on and so forth.


Since clients do not have knowledge about each other, they would end up generating same IDs as everyone else. Then, when the information about these built buildings is sent to the server and combined together, the game world would have multiple buildings with, say, ID 2, and there would be no way to know which building ID 2 would refer to. Any time the server would send the clients a message about building 2 taking damage, the clients could not possibly know for sure which building had actually taken damage. This is why all the IDs need to be generated on the same machine, so there won't be duplicates.

The natural option to use here is to generate all the IDs on the server. However, building the buildings happens on the clients' end. It would be possible to ask the server for an ID every time a building is built, but that would create a waiting period whenever a player would build a building and the client waited for the server's response over a network. It was decided that all network traffic would be centralized at the ends of turns, and communicating with the server during a turn would be avoided whenever possible. Because of this, buildings get their ID assigned to them at the end of the turn during which they are built. When the server notices that a player built a building during their turn, it generates and assigns an ID to it. When other clients receive the information that a building has been built, they get the ID for the building in the same package, along with other data like the position and type of the building.

There is one issue left to solve, however. The ID for the building needs to be delivered to the client who built the building, as well. It does not sound complicated at all, but it has some practical implications. For the other clients, the ID was delivered together with the information on how to build the building. They can, therefore, assign the ID to the building as they build it. The one client who already has the building only gets the ID. When it receives the ID from the server, it needs to know which building to assign it to. Normally, whenever the server sends a client instructions about operating on a building, it refers to the building with its ID. However, at this point in time, the building does not have an ID yet! A solution to this is to use temporary local IDs. When a client builds a building, it does still assign a locally unique ID to it. It is not going to be unique across all clients, but it does not need to, as it is only going to be used temporarily until the global ID assigned by the server arrives to the client. The local ID is sent to the server alongside other information about the built building, basically telling the server: "Yo, I just built a building with local ID 5". The server then assigns a globally unique ID to the building and tells the client: "Your building 5 now has ID 7", at which point the client switches the building's ID from 5 to 7. At the same time, other clients just get information about building 7 being built, being blissfully unaware of 5 having been involved with the building at all.

So far things have been relatively straightforward, and were easy to anticipate and prepare for when I was implementing this system. However, there is one complication left to solve, and I admit overlooked it and did not see it coming before I was at the point where it made things not work. Let's look at what might happen when a client builds some buildings.





There are two buildings built on previous turns and the two clients in the game are synced up to that point. Then they both start building buildings and assign local IDs to them, beginning from 3. One client builds one building, with local ID 3. The other one builds two buildings, with local IDs 3 and 4. The server then gets information about this and assigns globally unique IDs to all the buildings.




The global IDs assigned start from 3 and go up to 5. Now, let's look at the second client receiving instructions to replace its local IDs with the newly assigned global ones. It finds the building with ID 3 and switches that building's ID to 4. It then goes to find the building with ID 4, to replace that building's ID with 5. The problem here is that now there are two buildings with ID 4, because of the previous building 3 that was just updated to have ID 4.



The solution I used for this was to fetch a building that needed its ID updated, store its upcoming global ID with it without actually yet updating the ID, and then repeating this process for each building in a need of an ID update. Then I go through all those buildings again, assigning each the ID that was stored with them. In the above example this amounts to finding the building with ID 3, and telling it "your ID is going to be 4, but not yet", then finding the building with ID 4 and telling it it would have its ID updated to 5, and then telling both the buildings to now switch their current ID to whatever ID they were told to switch into.

That is the essence of how things get their identifications in our game so every computer involved can talk about the world state with each other and are able to keep in sync when it comes to the state of the objects. For different objects than buildings the process of assigning the ID is a little different, but that’s something for another blog post. Stay tuned, and maybe I’ll get assigned to talk about those other things in the next episode!

September 16, 2013

Inside Interplanetary: Targeting Problems

One of these must hit!
Hello. I'm Sasu and I like to write blogs.

Everyone's been very busy lately. We're working hard to get everything essential working without a hitch, but hitches keep coming along. Well, that's the reality of game development and there's not much you can do about that. Except maybe try to design things in a more detailed way.

So, today, let's try something a bit different. Instead of me just telling you about a game mechanic, I'll explain some problems we've come across in testing and some solutions we've formed up.

Let's discuss...

The Difficulty of Hitting Your Enemy

Well, I guess one did.
While testing Interplanetary, we've repeatedly come across a tiny problem with the Targeting System: it's darn difficult to hit your opponent! There are many things that play a part in this.

The planetary system is alive. Once you've set the trajectory and fired your cannon, time unfreezes and the planets start orbiting. It can be very difficult to foresee the movements of this slightly chaotic system. The biggest problem here is that the planets have a large influence on their surroundings, thanks to their...

Strong gravitational fields. Now, this is something that's almost impossible to predict for a mere human. Sure, you can account for a planet moving in front of your firing line, but can you calculate how exactly it affects your firing trajectory with its gravitational pull? We can't.

The planets are quite tiny. Small things are more difficult to hit than big things. Who knew?

When shooting a single railgun slug at your enemy planet, the odds of hitting it are very small, even if it happens to be right next to you. Building 15 railguns and firing them all makes it a bit easier, but managing to maintain such an artillery would be very difficult and time consuming in the final game, not to mention the bother of targeting each and every one of them every time. Something needs to change, but what?

We Have Some Ideas

A planetary prediction system would make it much easier see the future positions of planets. We have plans for a system that shows the player the "shadows" of the planets' upcoming positions, depending on the current trajectory drawn. The future trajectory of the railgun slug, affected by the position of the planets, would also be shown as a shadow.

Looks a bit complicated on paper.

The obvious problem with this solution would be that it takes away the element of predicting planet positions and may make the game way too easy to play. Of course, there would be extensive balancing done to accommodate for this feature.

Lowering the effect of gravitation would be an easier way to tackle the problem, but doing so would also make the game less interesting. In the earlier builds, you only really needed to worry about the gravity of the sun. Other planets' pull was much weaker, so it was possible to actually pull off very accurate attacks. This did take away some of the fun, since crazy, unexpected trajectories didn't happen.

We could just make the planets bigger. This might be the easiest solution and the least problematic for now. The biggest foreseeable problem with it is the change to the visual style. We're trying to keep a "realistic" feel to the game and to sort of keep it grounded. Bigger planets might give the planetary system a caricatured feel. Or, maybe we should give the planetary system more of a "war room"-feel. It doesn't look particularly realistic as it is, so maybe adding more elements to make it look more like a tactical representation of the real thing, would be a good idea.

Now, we simply pick one idea, implement it and test. Or maybe we should use them all? Or something completely different? What do you think?

September 9, 2013

Art of Interplanetary: Maps

The end result
Hello folks, Jukka here again. I'll share a bit of the process that goes into a creating planet texture for Interplanetary.

From chaos to order... Sort of


Usually, when I've made planet textures or painted planets, I've started with either using Photoshop's cloud filters and level adjustments or custom brushes to create the terrain shapes... And if you simply want to make a planet, this works fine, but for Interplanetary, going with just random shapes isn't that simple, since the texture is a factor in the game balance. For example, small continents will restrict player's choice on where he can build and also can make it harder for the other player to hit buildings, although a successful hit on densely built area would have the potential for greater damage.

The way we're trying to ensure that the maps wont be a totally unknown factor in the game balance is by using a specific ratio for land and ocean. So far we don't have much data from testing on the subject, so we simply decided to start out with 50/50 ratio and see how it works, but with this, the players would at least have the same potential area to build on.

White is land... Or was it the other way around...
Because the land-ocean ratio has be to taken into account, using random shapes to create the continents would become much more time consuming. So, we employed the use of this handy planet generator, which allows you to specify how much water you want. I care mostly about the division of the land masses, so I only pull out the black&white landmask from the generator, which I take to Photoshop for refining. 
The shapes produced by the generator are very ragged and "broken", so I shift parts of the continents and islands around and get rid of the excess of  small islands and lakes.


Touch of fictitious realism

Once I have landmasses ready, I block in some background information, like tectonic plates and ocean currents. I'm not an expert on geography so I just wing it. Even if it wouldn't be entirely accurate rendering it lends some logic into how the map turns out. And, of course, since we're not talking about Earth, there would be many, many things to take into consideration, if we wanted to get close to actual realism.

Lots of iron in the soil, or maybe it's dyed red from the blood of vanquished foes.

The next step is to throw in some colors and plan what kind of environment goes where. And from this point on, it's about painting in the terrain and details. For this I have some brushes I made from NASA's satellite photos, which I use to lay in texture. I go over each area several times with different brushes and slightly different colors to make the terrain look more detailed and natural. I also go in with a small basic brush to clean up and add precise detail to certain areas like mountains and river deltas.


If only planets were cubes

Due to the way the planet model is unwrapped, the poles need some more attention to minimize the amount of ugly distortion (there are a few methods for unwrapping a sphere to avoid the pole distortion, but I won't go into more details now as there'd probably be enough there for a whole new post and it is also still something I'm hoping to improve myself in). I use Photoshop's Polar coordinates -filter to wrap the texture into a circle so that I can see how the pole looks and then paint the details I want near the poles and use the Polar coordinates again (this time with the 'polar to rectangular' setting) to bring it back to rectangle shape.

Left: After using polar coordinates Right: How it looks in unity in my test scene.
That's it for now, but feel free to ask questions, and I'll answer the best I can, and see you again in the future.

Check out our IndieDB-page for more goodies!

September 2, 2013

Inside Interplanetary: Random Events

Quite chaotic, but not completely random.
Sasu, here! I design games! Mainly Interplanetary at the moment, though.

Interesting times are ahead for our team: we are about to move into new premises. This, of course, affects our pace a little bit, but it can't be helped. Also, many new expenditures are introduced with the change, but we'll manage somehow. We might chronicle our experiences here some other time, just as a curiosity.

But today, something completely different:

Random Events

There are many things to manage when your planet is being bombed by an extraplanetary threat. It can get overwhelming, especially considering all the other things related to keeping up a planetary civilization. We call these other things Random Events.

At the end of the turn, your Event Log shows all the notable things that took place in the Action Phase between turns. Messages like: "Power Plant No.3 was heavily damaged" and "New Intelligence Acquired" are quite common and self-explanatory, but sometimes, something unexpected creeps in. Whoops, a meteoroid is heading straight towards a city and the Nuclear Power Plant No. 3 had a reactor explosion.

Despite their name, Random Events aren't truly random. The odds of them occurring often have a lot to do with player actions; they are just risks that you have to take. For example, building many Nuclear Power Plants naturally increases the odds of accidents happening and developing a sentient AI will have dangers of its own. Of course, some things, such as natural disasters, tend to happen whenever they feel like it, but they are usually reported on in advance. You can always at least alleviate the damage and a Random Event is almost never truly devastating, unless you really mess up your reaction to it.

A good old forcefield can handle pesky celestial bodies raining on you.
Random Events aren't always bad. Your scientists might make unexpected discoveries or your mines could strike into a particularly plentiful vein of Material. Bad events for your enemy are also good for you. Even seemingly negative things you might be able to turn into profit by reacting appropriately.

It's the reaction to these incidents that count. If, for example, something threatens one of your cities, you should spare some resources to build some defenses around it. Sometimes, you may even get a clear choice of action in the event report itself:
Workers of Mine No. 7 have gone on strike.
A) Start negotiations
B) Arrest the workers
C) Terminate the workers
Two of these options are extremely bad for Morale. Can you guess which ones?

That's the gist of it. At a first glance, this system may feel a little unfair, but rest assured, there is a balance to everything. You win some, you lose some and it's the same for your opponent. It's just another layer of complexity that gives you things to do, even during the quieter times. See you next time!

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.

Blaablaablöpötiblöö.
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!