Developer postOriginal post (opens in a new tab)

Part 1: StarMade v0.19282: Putting more fun into battles. Also, boarding!

Hello Players,

This update is all about fixing a lot of things that still felt wrong in the game, and adding some more fundamental design changes, which will once again change a part of the game’s meta completely.

We redesigned how ship battles work, adding a completely new system, called the “HP-System”. There are also a lot of other enhancements and fixes in the update.

Here is a video that explains the new features:

https://www.youtube.com/watch?v=iF0fe6EBMuA

Hitpoints

System-HP

One of the biggest constructive criticisms we get for the game is that ship battles are basically a race on who can take out the core of the other ship. Which makes it a single focus point for everything. We long wanted to fix this problem, but first had to solve a lot of other problems along the way, ensuring that the new system is not more boring or broken than the old one, but intuitive and fun.

A Hit Point System was the goal, but while it sounds easy on paper, it actually required a lot of problems to be solved for integration.

Here are some of the problems that came up along the way:

HP is always represented by two values: Maximal HP which indicates how many Hit Points an entity has, and current HP which indicates how many Hit Points the entity currently has left.

The first problem was with determining how to keep track of HP.

One idea that seems natural was to keep a copy of the ship in the status of full hp. This however would cause a lot of problems, as it would essentially double the size of ships in RAM, on disk, and cause problems managing it, as every change that modifies max HP would also modify that copy. All that for just two values seemed a very bad deal in cost-value.

To combat that problem we are using a block count system, which has existed anyway. This however means that HP is based on the blocks, so if a block is damaged it still provides HP as long as it’s not destroyed.

This means we can have a very small and fast way of keeping track of maxHP vs currentHP.

Now, what is the max HP based on? If you would add a block to a ship, you would want your maximumHP to go up based on what you have placed. The same would have to happen if you removed a block.

This all works fine, but what happens if you lose a block due to damage. Naturally you wouldn’t lose maximumHP, but only current HP of course. However, what happens then if you place a block? Would you get the HP back? Would that mean if you place another you would have more HP than maximumHP, would both HP and maximumHP go up? What is the actual ship’s state that the max HP is based on?

  • If your HP is at 100% adding and removing blocks will instantly update your HP keeping your HP at 100%.
  • If you are below 100% placing a block will NOT give you any HP, but still increase your maxHP.
  • If you are below 100% removing a block will deduct from your current HP, but not decrease your max HP. This means you will lose percentage when removing blocks from a damaged ship.
  • If you reach certain damage below 100% you will get negative effects like power/shield regeneration loss, loss of thrust, control, and at the end the “overheating” state. This means that you don’t have to kill every single block to kill a ship, but only a certain percentage.

So, what can you do to get back to 100% once you have lost blocks? The solution was to add a mechanism called “Reboot”.

A reboot takes your max HP to what the ship’s blocks currently represent, and also brings your current HP to 100%.

You probably already saw the potential problem that brings: Just quickly reboot in battle and you will be at 100% again. However, rebooting actually takes time. The time is based on the damage taken, as well as the overall mass of the ship. You also can neither modify or fly a ship that is currently being rebooted, and power and shields go down to 0. It is also canceled if more damage is done. All these things make it relatively silly to try to reboot in combat.

The most Hit Points are provided by system blocks like power, weapons, support, etc. So ships now have actual weakpoints.

Furthermore on overheating you will no longer die instantly. You will get thrown out of your ship (it is now implemented that you automatically align to a ship when exiting it) and you can get to your escape pod, or stay and fend off a possible boarding party. You can’t enter your ship while it is overheating, and your only way to stop it is to reboot by pressing ‘r’ on the core. When a core is rebooting from overheating, you will not be able to enter it until it is done overheating.

Armor-HP

To further add more depth to ship battles, armor HP has also been introduced. Armor HP is the complement to System HP. The only blocks providing armor HP are actual armor blocks like hulls.

Armor HP provides a damage reduction to all damage taken to an armor block. Upon damage, 50% (config value) of the damage is going to Armor HP and the other half will be the damage on the ship, as long as there are any Armor Hit Points left.

Armor HP does NOT reset with a reboot, and can only be repaired at ships (or future ship yards) for credits. Ships can also reboot instantly at shops for credits.

Losing armor HP will not give you any negative effects, but they are a vital resource to have on a good ship.

Both System-HP and Armor-HP give a whole new feeling to ship battles, making them a lot more fun and exciting. All values of course are not final, because as always we took care that all essential values are available in the blockBehaviorConfig.xml. You can also go back to ship core based combat from the serverConfig if you would like to do so.

Center of Mass

Center of Mass is also no longer the core. It will now calculate the center of mass of a ship precisely on any mass placed anywhere.

This doesn’t yet include docked entities, but it will soon. Also, in the future there will be options to have a more realistic physical model based on the shape of the ship in terms of being able to turn the ship.

Implementation wise, the new Center of Mass system doesn’t cost any performance and is updated immediately (best to try it out on a planet)

AI has also been updated to now aim at the Center of Mass which gives them a much better chance to hit something vital.

You can also switch on an indicator for center of mass in the advanced build mode.

Individual Block Mass

With the new center of mass implementation it was also time to integrate individual block masses. This means, decorative elements will now barely add any mass to the ship, while armor and other blocks will add more than usual. Of course the center of mass will also reflect individual masses.

This update is continued in Part 2, as we couldn't fit everything into Steam's post limit.