Devblog 10 : Redesigned Terrain

After much consideration, much frustration, and much time, I have redesigned the terrain system.  Instead of players choosing to raise or lower the ground, now they create “bricks” which can be stacked on top of each other.  These are hollow spaces which can be explored, and enable players to craft as much of the 3D space as possible… battle everywhere!

This has a few benefits compared to the old system, the most important of which being that the line between types of space is blurred.  There’s no distinction between natural or urban terrain.  It’s entirely up to the player, creating the terrain becomes part of their strategy.  And because the space is hollow, this should allow many different tactical opportunities for all players on the map.

I really wanted to make a terrain system inspired by a children’s playground, with lots of places to explore in three dimensions.  I feel like I’m close to delivering that experience, which will be really unique for the RTS genre.

Devblog 9 : New Home! New Ideas!

Some of you may [not] have wondered where I’ve been.  Turns out relocating for a new job soaks up a lot of time and money.  I’ve moved from Edinburgh to Belfast.  I really like Edinburgh, and will miss seeing the baby swans in Inverleith Park grow up.  I disgress.

For now Norn Industries is back in the homeland!  The time away from my project has allowed me the chance to reflect, and I have had some ideas… some ideas which will require a lot of work to realise.  But that’s fine.  When I started this project I was under no illusions that it would be easy or quick.

From the start I have wanted to blend buildings and terrain into one big playground the player has complete control over.  Real time map design becomes part of your strategy.  But I’ve always felt nagged that as my design has evolved, it has stayed too loyal to old RTS paradigms.  The building is now navigable in a way it has never been before, but it’s still just a building.  And that just isn’t innovative enough.  My aspiration feels unsatisfied.

It has been said that you should always discard the first idea that comes to mind.  Lots of other people will likely have the same idea.  The second idea should also be ignored.  Less people will have thought of it, but still quite a few.  The third, fewer still realise.  But fourth or fifth?  That may be interesting.

It feels like I’ve redesigned the terrain and building systems enough already.  This will be the fourth iteration of the terrain system, and perhaps the fifth redesign of the buildings.  But the new idea is definitely the best I’ve had yet for this project, and I’m really excited about trying to make it a reality.  I’m also more than a little tired after three weeks of rapid change.  I’m going to enjoy a long sleep tonight.

Devblog 6 : Networking

I wanted my game to be multiplayer from the start.  Easier said than done.  This has made development considerably harder, as networking code is notoriously difficult to implement.  Never mind attempting good networking code.

There were two networking models I considered.  Client-Server or Peer-to-Peer.  They can both be implemented in a variety of ways, but for what I am doing the two options more specifically were an Authoritative Server, or Lockstep.

In a client-server model clients send messages to a server, which does something with them.  In an authoritative client-server more specifically the client only send requests to the server, which makes all the decisions, and then sends orders which the clients must obey.  This design is typical of FPS multiplayer, as it is usually faster.  It sends exact details, like the position of a soldier twenty times a second.

Peer-to-peer models require messages to be sent between all machines involved in a process.  This allows for more precision, but is slower, and harder to get it working properly.  A lockstep system more specifically requires all peers to have exchanged messages with each other, and checked them, before the game is allowed to continue.  Lockstep is a good friend; it will always wait for you.  Authoritative server is a mean girl;  it doesn’t care if you are lagging behind and will not wait.

In the old days all strategy games were lockstep.  This is because it was impossible to rapidly send the exact positions of hundreds of soldiers multiple times every second… given how little data could be transferred over a 56K modem.  Instead peers would send only the commands; select this person, tell them to move there, etc.  But this means that the game must run exactly the same way on every machine, with no tolerance for error.  Implementing a successful lockstep system that doesn’t constantly throw out of sync errors is very hard.

I simply didn’t have the time to do that.  I could however make some sort of authoritarian server.  So I did.  The clients only send player inputs to the server, and the server only sends outputs to the clients.  This clean separation of functionality ensures the server has the final say on every important decision in the game.

There are some exceptions to the rule.  If a player selects soldiers, for example, they expect their user interface to respond immediately.  In cases like this the client is afforded the rare opportunity to send an input and execute its outcome without waiting for the server’s approval.

So far I have implemented networking functionality for almost all of the game’s features.  I have also created a lobby system, allowing players to direct connect to games on their LAN or across the internet.  They can press a button to automatically find any LAN games too.  When in the lobby players can choose their colour, team, and say when they are ready.  Only when all players are ready can the host choose to start the game.  The game waits for all players to load the game scene, then begins play.

 

Devblog 4 : Forts

Instead of building a base, players create forts.  Forts are composed of modules, and each module provides the fort with a unique advantage, such as unlocking things to build or increasing construction speeds.  Each fort is independent, and provides its own resources, energy, and technology.  Players can easily choose which floor to interact with by using the mouse wheel.

Players can expand an existing fort, or build a new fort.  New modules extend the fort.  New forts can only be created by first making a building block.  This can then be picked up by a unit, and deployed somewhere else.  Be careful!  Enemies can steal unguarded building blocks.

Forts and modules cannot be destroyed.  They must be captured or disabled.  Bringing a unit to a hostile fort’s console will initiate a shutdown timer.  When this timer expires the module will not be able to be used by anyone.  To reboot the module, a friendly unit has to be brought to the console.

Devblog 3 : Terrain Mode

Terrain Mode is an important and unique part of the design.  The player can purchase tiles in real-time, which modify the map.  How you build it is up to you, terrain building is an integral part of your strategy.  You can create ramps leading up or down, walls, and special tiles which do things like slowing down movement or obstructing vision.

The player is forbidden from making inaccessible terrain, and can easily “paint” many tiles by holding down the left mouse button.  If you make a loop it will autofill the interior.  Players are restricted to modifying terrain on their part of the map.

The system is quick and easy to use, allowing the player to toggle between normal and terrain modes by clicking the middle mouse button, as well as rotating ramps using the middle mouse button.

 

Devblog 2 : More Updates?

It has been a while since the first blog entry!  I’ve been busy with personal stuff and development.  But don’t worry, there will be more blogging from now on.  Part of the reason for this is that a lot of work has had to be done to overhaul core systems, which is unfortunately very technical and not particularly visual.  Programmers; especially games developers, often rush to get something done, and in doing so don’t often create the most wonderful code ever first time.

I’ve been working on networking, units, modules, UI, and terrain systems, making sure the code behind the scenes is as good as it can be.  This will help speed up development in future. Networking code has been by far the most difficult challenge, and there will be more on that later.

Next time I’ll be demonstrating the terrain system, which allows players to create the map as they play the game.

Devblog 1 : Introducing…

Do you ever feel like a dog in a space ship?  I’ve never written a development blog before, so I feel a bit like that right now.

My name is Richard Eyre-Pugh, and I have a plan.  For the last two years I’ve spent a lot of time working to lay the foundations for a new and innovative RTS game.  Unfortunately it doesn’t have a name yet.

… Names are hard.

What makes this game special?  What will it bring to the genre?  Gameplay will be familiar to anyone who has played a RTS.  Players build a base, collect resources, create soldiers, and command them to victory.

I will demonstrate and explain features with this development blog, but for now here is a list of what’s to come.

Multiplayer From Conception

The game will be primarily multiplayer, and will support play online and via LAN.

Arsenal of Choice

Twenty unit types, each with distinct strengths and weaknesses.

Steal Enemy Equipment

Weapons can be purchased, and units can pick up and drop them.

Projectile Rich Environment

Units must see targets to shoot them.  Projectiles are stopped by walls, and can overshoot or pass through targets.

Three Dimensional Warfare

Manually command your units to move up and down stairs, shoot out of windows.

Modular Forts

Each fort can be expanded by creating adjoining modules which provide unique functionality.

Independent Production

Each fort generates its own resources, energy, and has its own technology level.

Surrender Not An Option

Every module can create at least basic units, so you’ll always be able to try and make a comeback.

Terrain is Your Strategy

Players begin on a blank map and create terrain as they play.