Combat system update and prototype video

Made good progress on the combat system this week. It now has:

  • Movement mechanics: Left click moves ship to the selected square, right click turns toward the selected square, end turn button cycles to next ship in initiative order
  • A glowing line indicates the path ship will take to the square you have the mouse over
  • A ghost ship shows where your ship will end up and what diredction it will be facing
  • Ships smoothly animate along the selected movement path
  • Ships now have weapons
  • Weapon firing arcs are working and show on the grid when you activate the weapon

To see the system in action, check out the prototype video below. Please post any comments you have on it and I’ll use them to help refine the next iteration.

Next I will add:

  • Attacking other ships by clicking on one in range once the weapon’s active
  • Shield and armour hitpoint system and basic hitpoint meters (will develop a nice UI for this later)
  • Highlighting enemy ships in range when weapon is active
  • The Reactive Strike system
  • Togglable weapon view: See all enemy weapon firing arcs on the map, move mouse over square to see how much damage you could take in a reactive strike if you enter that square
  • UI buttons and hotbar system
  • Non-weapon modules: Shield/armour repairers, afterburners (add movement speed, has a cooldown) etc.

Why turn-based?:

A few people have asked me why I chose to go with a turn-based combat system, so I figured I’d answer it in this blog post. The reason I’m making Predestination is that I want to make the kind of game that I’d love to play, and one of the things I loved about the older generations of 4X games is the level of strategy and tactics involved. I think newer 4X games have lost a lot of the tactical gameplay that the classics had, partly because many of them focus on realtime gameplay and controlling massive fleets of hundreds of ships. So I decided to go with classic turn-based gameplay for the main game and combat based around directly controlling a small number of individual ships.

When it came to the fleet combat system, I was torn between turn-based gameplay or a system where both fleets give their ships commands and then all the ships execute their turns at the same time. The latter system has a lot of tactical potential, as you could limit the number of commands a player can give and ships can be destroyed before carrying out their objectives. I didn’t like the way it disconnects players from their moves, adding a lot of unpredictability to combat so that even if you win it might not feel like you really made it happen. I want a system where your commands are immediately carried out and you instantly see the result, which means it has to be turn-based.

Chess-like tactical gameplay:

The combat system will produce gameplay that feels more like a game of chess than an RTS. If you’re the kind of player who loves to strategise, you’ll have the freedom to sit and think about each move for as long as you need, weighing up the options and considering how the other player will react. You’ll be able to build strategies around clever positioning and blocking off areas of the battlefield, and to employ clever tactics to beat an opposing fleet that outnumbers and outguns you.

If you aren’t interested in playing intergalactic chess, you can design simpler ships that don’t use the Reactive Strike system or tactical weapons, or even disable Reactive Strike altogether when starting a new game. We might even make tactical combat optional for people who just like the colony management side of the game.

 

The response to the combat system has been really positive in the comments and I got some great positive feedback about the idea at QCon. It seems a lot of people are looking forward to tactical turn-based combat where you control individual ships of your own design. As always, if you have any suggestions or feedback, please leave a comment!

Fleet combat hex system first prototype

This week I’ve been working on the fleet combat system for Predestination. When all of the core mechanics are implemented, we’ll be releasing this as our first beta test to get some feedback and improve it. Fleet combat is an important part of a 4X game, and it will have to be iterated on extensively to make it as awesome as possible. Our goal is to create tactical turn-based combat system that’s more like a game of chess than an RTS. We’ve already tested the movement and combat mechanics with a pen-and-paper prototype, and this week I started putting it all in code.

It doesn’t look very pretty yet, but I want to show you what I’ve got so far. I’ve finished the hex grid system and ships can be placed on the grid and rotated to face any of the adjacent hexagons. All ships involved in the combat roll initiative and then take their turns in order. For moving ships, I developed an efficient recursive algorithm that determines the shortest route to a hexagon based on the three simple rules below:

  • Moving into any of the three forward squares costs 1 move point
  • Turning by 60 degrees costs 1 move point.
  • Two ships cannot occupy the same square

The result produced the exact pattern that my prototype design predicted:

With everything in code, I finally got to see what direction the ship would be facing when it got to each square and I wasn’t happy with the results. Since you can move into any of the three squares in front, the ship often didn’t need to turn to face the direction it was moving, so it appeared to be sliding sideways. I fixed this by changing the movement rules slightly to the rules below:

  • Moving into the square directly ahead costs 1 movement point
  • Turning by 60 degrees costs 1 movement point
  • Two ships cannot occupy the same square
  • Every ship gets 1 free 60 degree turn per round.

This produced the exact same movement costs and pattern, but now the ship always turns to face the direction it’s moving in. I’m very happy with the results, and the free 60 degree turn adds an interesting mechanic, as modifying the number of free turns per round changes the movement pattern significantly. Two free turns makes moving sideways as easy as moving forward, three makes a ship able to move the same speed in all directions, and no free turns produces the pattern below:

One of the core elements of Predestination is designing your own ships and making tactical tradeoffs in the design process. You might want long range on your guns, but to get it you have to sacrifice damage or the weapons might take an extra round to recharge. Once you’ve researched the appropriate technology, you’ll be able to do the same with your movement speed and movement pattern. You’ll be able to make tactical tradeoffs by modifying your thrusters to get additional free turns every round. That will make your ship more maneuverable, but as a tradeoff you might lose some speed or have to fit power-hungry thrusters that will reduce the energy available for weapons and defensive modules.

 Ships blocking each other

Since two ships can’t occupy the same square, you can actually block off a ship’s movement by putting other ships in the way, forcing them to take a longer path around. This is something I might make into a big tactical element, perhaps by letting small ships pass through the squares of larger ones. Technologies that let ships phase through each other or teleport instead of moving could also be fun. Below is an example of a ship with its movement blocked off:

 

Updates to follow:

The next things I’ll be adding are:

  • A translucent ghost ship on the square with the mouse over it indicating the direction the ship will be facing if you move to that square. Currently this is done with an arrow, but a ghost ship would be more intuitive and obvious.
  • A line showing the route from the current ship to the target square.
  • Left click moves the ship to the selected square (with movement animations), right click turns toward that square.
  • End turn button to move to the next ship.

After that I’ll get stuck into developing the combat system, and I’ll put up a post on that next week to keep you up to date with how it all works. The current design uses a module hotbar and lets you activate weapons and other modules at any point during your turn, but I’ll go into further detail once I’ve started implementing it and can see that it works. We also plan to have environmental effects like asteroids, gas clouds etc, which I’ll go into more detail on in a later post.

As always, if you have any thoughts, suggestions, ideas, or other feedback, please do leave a comment. I do really appreciate getting feedback on ideas, and I think it’s a vital part of the design process. Thanks for reading :D .