Development Blog

Posts in category Game Design

New Game Modes

The current game mode plays a lot like a standard RTS game, with the added objective of killing the opponent’s king. It’s fun but I’m experimenting with other modes that can take more advantage of the ability to construct complex structures.

One of the issues with the standard game mode is that there’s no reason to ever have the king move around, so it’s a pretty viable strategy to just encase the king in a giant block of stone.

That’s not very interesting! I’d rather force people to defend an entrance to the king’s chambers. The other issue is that because you have to build so fast to stay competitive, speed ends up trumping layout even though there are strategic advantages to designing a good castle layout.

A variation I’m trying is to divide the game into a series of rounds. You get a ‘build’ phase where you can build anything within the boundary of your territory, but you can’t send enemies into others’ territories. At this point you don’t have a king yet so you have to build with the king in mind for later.

Secondly, there is a short ‘place your king’ phase. Your king spawns at the outside of your territory and you have to move him inside to a safe place. At this point it’s no longer possible to build so there has to be a path into the castle for the king to follow.

Finally there is an ‘attack’ phase where you attempt to kill your opposing king. During this phase you are still not allowed to build, so you have to have created a strong enough defensive structure during the build phase. Because it’s not possible to quickly replace structures, it’s more important to think about a good defensive layout during the build phase.

I haven’t had a play test yet with this mode so I’m looking forward to finding out if it achieves my goals! If not, I’ll keep experimenting with other ideas.

Play Testing Feedback: Pipes & Rail

Recently I’ve been play testing more often, and I’ve been playing more games with people who are new to the game. Overall it’s been a really rewarding experience to see people getting having so much fun, laughing and yelling at each other while playing the game. I keep getting asked when the next play test will be!

It’s also been really good for identifying things that are unclear, frustrating or not matching player’s expectations.

Some types of building blocks need to have connections to other blocks in order to make things work. For example, hydrogen pipes are used to pipe hydrogen gas into buildings that can use it. Railway tracks also need to connect with each other to allow trains to travel between them.

   

I found that hydrogen and rail units weren’t being used very much, even though they have cool abilities. The reason was that players found it frustrating to build connections piece by piece. It takes a lot of time, and meanwhile players still need to focus on attacking and defending. This is especially true for hydrogen pipes because they can move freely through 3D space.

I think this kind of mechanic adds depth to the building aspect of the game, but I wanted to make it easier and faster for players to build what they want. To do this I decided to add an assist feature that finds a path between the start and end points selected by the player.

UX wise, I’m using double height buttons to visually distinguish buttons that build many building blocks at once, while single height buttons build a single building block. The player clicks once to set the start point, and then moves their mouse to the end point while seeing a preview of what will be built.

To implement the feature, I used A* to search for a path between the start and end points. I already have an A* implementation for unit pathfinding, but it’s optimized for very different conditions. In the unit movement case, it makes sense to have relatively slower graph updates when buildings are built in order to make the pathfinding really fast. In this case, the ‘graph’ will update much more frequently than the pathfinding will ever occur, so I decided to construct the graph on the fly during pathfinding. I also wanted to make the implementation generic so that I could plug in different functions for the pipes vs rail case (and other future cases).

The AStar class accepts any type of object as a graph node. It also doesn’t know anything about the relationship between nodes. Instead it requires that 3 delegate functions are passed in. NeighboursDelegate is used during pathfinding to get all the nodes connected to an already explored node. ScoreDelegate is a heuristic function that informs the direction to look, and ActualCostDelegate computes the true cost of a path.

In my implementations for pipes and rails, NeighboursDelegate builds up a graph on the fly by searching the adjacent locations on the map for empty space. It also takes into account the shapes of building blocks that are available, to know what locations are candidates. For example, tracks use curves that are several units long, so it’s not possible to move a single unit to the left or right.

I also use custom cost functions to do things like preferring straight lines over curves, and preferring to have pipes above the ground so that they don’t obstruct units.

Since implementing this system, tracks and hydrogen have been a lot more fun to build, and have been getting a lot more use in competitive play.

Building Construction in Stone Monarch

One of the main design goals of Stone Monarch is to allow free-form 3D construction.  People should be able to build castles, walls and villages however they want.  It’s very important that the construction system works well.   I had these goals in mind for the construction system:

  • It should enable creative freedom
  • It should have strategic value
  • It should be easy to use quickly

Creative Freedom

buildingAnimation

Building a castle entrance

The game provides many small building blocks that players can use to build their base.  I tried to avoid any unnecessary restrictions on building.  Building segments are allowed to overlap each other, and there aren’t any rules for which segments can connect with which other segments.  Segments can attach to existing solid surfaces in any direction, so it’s possible to have giant overhanging structures even if they wouldn’t be entirely plausible in real life.

An example of a more unusual castle

An example of a more unusual castle


Strategic Value

The design choices that a player makes should not be purely cosmetic.  They should have a strategic impact on the game.

Structures that are larger get stronger, so it will be harder to get through a tall wall than a short one.  Units that are higher up get an increase line of sight, and they are more easily able to attack enemies below them.  This gives an advantage to posting guards on walls and towers (at the risk of reduced mobility).  Solid obstacles block attacks, so it makes sense to do things like build a roof over very sensitive locations.

Various structures give additional benefits, such as line of sight (torches), population benefits, resource storage, and transportation (rail, pipes).

Archers placed on top of towers to defend against any enemies coming up the ramp

Archers wait on top of towers to defend against any enemies coming up the ramp

Speed and Ease of Use

Since this is a real-time game, it can’t be too cumbersome to build things under time pressure.  Over rounds of user testing I’ve gradually simplified the building process.

Originally, I followed the traditional RTS building system where villager units need to stand next to a building and construct it.  This ended up being impractical in a 3D world.  It was too difficult for villagers to reach anything high up in order to build it.  Although it was still possible to make this work by building a bunch of temporary scaffolding, it was too slow and cumbersome to do that during an RTS game.  Maybe in a different sort of game it would be an interesting challenge on its own.

I fixed this problem by only requiring villagers to be within a certain radius of the buildings being constructed.  This greatly simplifies building things but it still doesn’t break the game by letting people build anywhere at any time.

After further testing, I still found that it was difficult for people to build complex bases.  The reason was that I was forcing people to wait for segments to build, which took several seconds.  This is a good mechanic in traditional RTS games because it forces people to plan ahead and be ready before an enemy arrives at their doorstep.  It didn’t work in Stone Monarch because you need to have segments already built before you can build other things on top of them.  It’s very difficult to plan a base when you have to keep waiting for each ‘brick’ to appear.

Instead, I allowed instant building, but restricted building when enemy units are too close.  This lets people build easily during peace time, but doesn’t break the game during battles.

Combining Creativity and Strategy

When I was a kid I loved playing with  Playmobil Castle.  My siblings and I would spend hours inventing kingdoms before acting out battles between them.  While the battles were fun, we always spent the longest building our castles.

playmobilCastle

The great thing about Playmobil was it’s modular construction.  We could combine pieces any way we wanted to create our own designs for walls, towers, gates and prisons.  This creative expression was what made it interesting to keep playing over and over.

Once we were a little older, we discovered Age of Empires 2 when my cousin got it for christmas.  I remember spending all afternoon in my grandparents’ basement gathered around their computer, making decisions together to fight a computer player.

What I loved about Age of Empires and other RTS games were the elements of strategy and competition.  I still play it with my family today, because the replay value of coming up with ways to counter someone else’s strategy is so high.  However, the creative construction element that I used to love from playing Playmobil is somewhat lost.  Castles and buildings are all pre-built rectangles and laid out on a 2D plane.  There’s no opportunity to build freeform structures of your own devising.

This is what I want to do with my own game, tentatively titled Monarchs & Masons.  My goal is to make a medieval RTS game with freeform 3D construction to enable both strategy and creative building design.   Here’s a screenshot of the game so far:

base34

In this example, I used simple building blocks to build up a castle on a hill.  Ramps create an easy to defend entrance surrounded by guard towers.  I’ve sent some archers to the tops of the towers to provide protection.  Further back, I built a large keep to add a second level of defense for the king.

The game in it’s current state already works for multiplayer battles and I’ve been regularly playing games with friends and family.  It’s already possible to build, fight and manage resources, and I’ve already been impressed with some of the crazy castle designs that other people have come up with.

hero8

There’s still a long way to go though.  It’s an interesting challenge to balance fine grained control with the time pressure of competition.  I want to make something that enables and rewards finding interesting new uses of structures and units.

Ultimately, I want to make a game that lives up to my vision and that I can enjoy playing for years in the future.  Of course I hope that other people will be interested too.  As I make progress I’ll post updates here.