Greeting, Citizens ~
The power update has been finally released.
If you kept track with our last few dev blogs, you will already know how the majority of it works. We did change some features along the way to resolve the issues that were brought up and it might not be a bad idea to go through it once again.
There is an all new power system in this build. Old ships are still loadable and fully usable but the old power and its related blocks are disabled in shops, creative mode and factories. They can be re-enabled in the block editor if needed (set inShop to true) or you can still access them through the admin command /give “player_name” “block_name” if you’re an admin or in single player.
There is an option in the ServerConfig to completely disable the old power system should a server admin want that. It’s advised to not switch from allowed to disallowed and back again constantly though.
If old power is allowed, the system will detect which version to use based on the structure’s root entity (mothership, station or planet) and check if that has any old power blocks. All structures will be counted as “new” power until you place down an old power block at which point they will convert to the old system.
Anything that still uses the old power blocks, will stay like that till the very last old power block is removed. Make sure to clean out your old power before adding the new power components to your ship.
The main motivation to update the power system comes from a few basic issues that the old power system has.
Scaling of power versus the surface area of ships
Filling ships with power and systems is almost impossible to change afterwards without tearing it down completely
Additions of bigger features was hard on existing system
Consumption model was not consistent and didn’t scale well in terms of balance.
Implementation based on partly outdated code
Exploits to abuse power system mechanics
There is a lot more in this update than just the power system itself. Additionally, a change of this system allowed for a massive code overhaul of some very fundamental systems. Not only will that reduce bugs, it will also speed up the process of finding any remaining issues, as well as adding new features a lot faster, easier and streamlined.
Consider this update as a way to prepare the game to enter a phase of rapid development. A lot of foundation had to be made so that adding new stuff wouldn’t cause a problem in the end. While we could have skipped this step, it would have probably cost more time after just adding new features, so we went for the option to fix the foundations first, and then add new stuff, as well as finish other incomplete features.
The new power system is relatively simple but has a lot of depth if you are going for optimal building. However, it can be difficult if you build ships with the old power system in mind and expect similar results. Ships will perform similar as before, yet power regeneration and consumption values were changed drastically and simply can’t be compared easily with the old power system.
Our main goal was to make the power reactor components smaller, making sure that anything that uses power is also kept at a relatively small size.
The only way that this is possible, is if there isn’t a reason to fill up a ship with it. We went through a lot of iterations like restrictions compared to dimensions as well as mass, but all of these had major problems that would enable players to just circumvent the restrictions and fill a ship with systems regardless. Our system should be working with as few special cases as possible.
Reactor <-> Stabilizer
The system we went for is a combination of two blocks:
The Main reactor block
The Stabilizer block
The idea is that a reactor needs to be stabilized beyond a certain value to function properly and that the stabilizer blocks have to be a sufficient enough distance away of the main reactor to be effective. That distance is measured from the stabilizer block to the approximate shape of the main reactor.
The bigger the reactor, the more stabilizers you need and the further away from the reactor they need to be. This puts a minimum span on each reactor size, ensuring that a ship cannot be filled up with reactors entirely.
You get 10 blocks worth of free stabilization for any reactor, so that really small reactors don’t need any stabilization blocks to function. Small ships can be a little bit more compact, as you also need to protect 1 less vital component on your ship.
A reactor is fully operational with a stabilization of 25%, however there is a risk to that. A stabilization below 100% will cause the reactor to suffer from damage penalties. From very little at around 99% up to three times damage taken from all weapons at 0%. The concept of building with low stability is very risky but can of course have high rewards.
Additionally, there is a non-physical connection between your stabilizers and your reactor. A stream can be hit by any weapon projectile, and apply a temporary power regeneration nerf to the reactor. The duration of this nerf depends on the amount of damage that passes through the stream. Protecting these streams is just as important as protecting your reactor and stabilizer components, not only from enemy ship fire, but also from boarding parties.
A stream’s path can be bent and redirected with one or more Stream Node blocks. These blocks can be connected to each other to build a custom path by linking with C + V. Any stabilizer group will connect to the closest Stream Node and follow its path back to the active reactor.
Another important goal was to update and make power consumption more consistent. All power consumers now consume power over time and not instantly on use. This means that there is no instant power drop, and significantly reduces the need to have large amounts of power in storage.
All weapons now consume power when reloading. They also require a lower amount of power per second to keep themselves loaded, as they lose charge over time. If you can’t provide enough power to reload, the weapon will just reload a bit slower. It will only appear discharging if you cannot provide the lower “resting charge”. This means that you can now build weapons far bigger than your reactor technically supports, which will make for some interesting gameplay decisions.
Usable modules like thrusters will, like the old system, only consume power when in use. Some modules that are only active for a certain duration, only require power to charge it up and none when it’s active.
Power Consumption Priority
Additionally to this new consumption system, you can now also customize the priority in which power is consumed. You prefer being able to fly and having shields over your weapons recharging? You can set that now by just dragging your preferred priorities in the new power reactor panel.
One major problem of the old system was the way it handled rails and system inheritance. This is now streamlined and pretty straight forward: Only the mother ship’s reactor can be active. Its docks and turrets are also part of the priority list so you can make sure that your turrets always get power if you want, or you can prevent them to consume so much power that you cannot maneuver anymore. A docked ship’s reactor will go back online once it undocks.
Chambers are an all new feature that will help specialize your ship for certain tasks. All stand-alone effects, all “one-block” functionality and some “one-group” systems have been incorporated into this system. Effect blocks can still be used as-is in combination with weapons, however it would be advisable to not use them too much as they will change within the weapons update. (more information will follow shortly)
The chamber system can be understood as a physical skill tree that is on your ship or station. As an example, while a weak version of the jump drive is now available by default, you can use the chamber system to make it possibly stronger and suit your needs. You can reduce its power consumption, increase its recharge speed, change functionality such as allowing it to hold multiple charges at the same time, etc. Each change, represents a node in the tree and which parts you want is up to you.
Other chambers now include cloaking and jamming. There is also now a way to set artificial gravity, as well as set warp gates to an arbitrary position in reach, that doesn’t even have to have a warp gate on the other end.
To build chambers, you have to place down the basic chamber type and connect it to your main reactor through a chain of touching Reactor Conduit blocks. After that you can select a specification in the Reactor panel or simply press ‘R’ on any reactor component to bring you to that menu. In there you can see how your chambers are currently connected with each other. You can specify what each chamber does.
Adding additional blocks to an already specified chamber will automatically increase that chamber’s size. The minimum size requirement for chambers to function, depends on the size of the reactor.
All of this system is based on a new feature we call the “Effect Config System”. The ECS was implemented to allow for any effect on an entity from any source. At the moment, the only source used is a ship’s own chamber tree, but in the future this system will be used for several other things, including changing sector/system/region conditions depending on where you are in the galaxy (for example nebulae disabling all sensors, etc).
We also implemented an easy to use GUI to mod it, as well as insured that it is very scalable as it syncs between client and server with only a few parameters.
Multiple reactors are possible and encouraged as not only do they provide a fail safe system, they also enable ships to carry multiple sets of chamber trees and of different sizes. Stabilizers can be reused for multiple reactors, but keep in mind that the stabilization distance is calculated based on the biggest reactor.
Switching reactors can be done in the reactor panel. A switch is instantaneous but there is a cooldown to switch again afterwards.
One major advantage of multiple reactors is also, that only an active reactor can be scanned.
A ship’s HP is now determined by the active reactor and its chambers. Reactor HP is tracked for each reactor separately, but only the active one applies for your ship’s health. The reactor tree is consistent and keeps tracks of which blocks have been damaged. If your Reactor HP ends up too low (<20%). Reactor HP will affect more of your ship in the near future with the weapons update.
You can chose the reset the HP to their new maximum to stop overheating, but you only do that out of battle as any damage will reset the timer. This consistency will also eventually lead to a repair mechanism that can replace destroyed reactor blocks.
Shields were always a big pain to balance out especially when rails came out, as they always covered the whole ship, no matter where the shields were placed or where the ship parts were located. This, paired with no extra power cost with capacity increases, not only encouraged players to excessively use shield capacity blocks, but it also enabled far away “islands” to be fully shielded, something that has much more of an impact with the new power system. Shield sharing within rails also was the cause of major exploits and confusion when building ships.
Shields no longer apply on your entire ship through inheriting. Now each shield recharger group has its own radius that it will shield blocks from damage. Any shield capacity group within this shield bubble, will auto link to that recharger group and provide it shield HP.
The radius of a shield recharger group, depends on its size.
You’re able to have more than one of these shield groups on your ship as each one has its own recharge and shield HP, allowing you distribute its strength to different parts of your ship and in different proportions. These spheres can overlap partially, but as soon as the recharge group (the center of a sphere) is placed within the influence of another sphere, it will disable itself. If a block that is within the radius of multiple shields is taking damage, each shield will receive the damage.
Stealth vs Recon System
This new system is incorporated in the chamber system. You can setup your chambers to gain stealth/recon strength. When your scanner or stealth drive is active, this strength is applied to your ship or structure.
The system compares your current scan strength with all nearby entities (and vice versa for stealth strength -> scan strength). Depending on the difference between you and a target, you’ll get different results. If your scan strength vastly outweighs the target’s stealth strength, you see every bit of information possible and also counter all of the target’s active stealth drive effects. Cloaker and jammer are now addons for the stealth drive, so these can be countered by scanners still provided your scan strength is high enough.
To counter Jamming, your ship needs an equal amount of recon strength than the other ship’s stealth strength
To counter Cloak, your ship needs 1 recon strength less than the other ship’s stealth strength.
For scanning weapons, your ship needs 1 recon strength more than the other ship’s stealth strength
For scanning chambers, your ship needs 1 recon strength more than the other ship’s stealth strength
For scanning reactors, your ship needs 2 recon strength more than the other ship’s stealth strength
Unrelated to power, to combat general exploitation of shapes of systems, a new mechanic has been introduced: integrity.
Essentially, if a group of modules is below a certain density, it will receive additional damage when being hit. Generally this will not affect most builds, as long as there are no overly long lines or giant plates of systems being built.
For each group of systems, there’s a starting value of 200 integrity which will go up or down depending on how many blocks each block touches within that group. The penalty only applies if your integrity goes below 0, so small ships generally don’t have to worry about it at all.
Touches 0 blocks: - 10 integrity
Touches 1 blocks: - 8.5 integrity
Touches 2 blocks: - 7 integrity
Touches 3 blocks: - 4 integrity
Touches 4 blocks: - 2 integrity
Touches 5 blocks: + 0.5 integrity
Touches 6 blocks: + 2 integrity
The integrity mechanic applies to all usable systems, but not hull.
There are a few special groups worth mentioning:
Thrusters will be considered as the same group, they all share the same integrity value.
Stabilizers group if close enough, get combined into a single group. This can easily be seen when looking at their outline in build mode with a stabilizer block selected in the hotbar.
Shield integrity will take the lowest integrity of both rechargers and capacitors within a shield radius. A shield with low integrity will also receive damage on a shield hit, which means that this is the only module where integrity is an absolute necessity.
User Interface Changes
There was a large amount of GUI items to add for the new power system, along the way we’ve changed other ones too:
All new build information panel
New power reactor panel
Font sizes have been adapted to be more readable at higher resolutions
GUI drawing optimizations
Effect Config System GUI
Several help and information bits based on context
Updates to chat (more to come in weapons update)
Several message popup fixes
Right click on brush size scrollbar resets it
A faction member’s position can now be set as waypoint in the faction member list
C+V on remote logic (was already in but we missed mentioning it)
The infographics you see in this post are available in the game as a quick reference in the top left corner when building a ship.
Ship Information Panel
The information panel you see in build mode has been updated to be more dynamic, and to be less in your way. Each section gives you information of a specific system and can be minimized, allowing you to customize the amount of info you see on screen. The entire panel can be minimized too if needed.
Any large value that doesn’t fit will display as a tooltip if you hover over it.
This panel also has more functionality tied to it, such as faction module options and AI options.
Even if set to “none”, you will still a few power related ones in build mode as they are need to know information and doesn’t get in the way either as it depends on the block you’re looking at, and the one you have selected on your hotbar.
Manual Turret Aiming
Turrets have now the option to be manually controlled. To do that, just set the checkbox in the bobby AI panel. Then you can assign the control for all manually controlled turrets on the hotbar of your mothership. As long as the icon isn’t selected on the hotbar, the turret will be using normal AI targeting. If it is selected it will switch to manual aiming. Additionally, using right shift to look around when manual turret aiming is selected will enable you to aim in all directions (right shift will be the old normal behavior if manual turret aiming isn’t selected).
A new block has been added that enables you to build hovercrafts and other contraptions. This block essentially works like a directional magnet that always pushes yourself away. This block is based on the physics system, so you will have to find the right balance for your ship. There are some options in the Thruster configuration for it, too.
Storage/factory pull/push limits
You can now put individual limits on how much a storage can pull of each item and how much a factory can produce. This should make managing factories and inventories a lot easier. Keep in mind that factories will also pull enough resources for one extra production step.
Graphics Config Presets
Since StarMade’s graphics config in its development state is a bit hard to manage, we added simple config presets for all kind of systems. All old options have been moved into an advanced config tab and can be accessed and set as they could before.
A large amount of config values were added to the blockBehaviorConfg and effectConfig, giving you the ability to modify and change system values completely. This is not only to enable basic modding, but also for us to explore and experiment with different setups in the game.
Several optimization have been made to different parts of the game.
Sped up general chunk loading by streamlining client requests
Sped up module group calculations by avoiding unnecessary runs
Reduced general RAM usage of ships, stations and asteroids by using dynamic chunk compression.
Fixed several memory leaks
Optimized RAM usage in several other places
General drawing optimizations
Several bottlenecks removed
Reduced VRAM being used considerably by overhauling frame buffers.
Fixed and reduced VRAM usage for antialiasing.
Fixes for 4k resolutions
Beam drawing optimizations
Several block editing optimizations
Use of advanced graphics card functions for cards that support it
Faster debris handling
Planets have been made smaller by default to not have them impact performance until they are replaced completely.
Fixed building while flying at high speed
Fixed normal mapping tangent space
Fixed many small fixes for textures
Fixed several crashes (without issue attached)
: Weapon output added to HUD context
: Added safety checks for removal of an in-use inventory, warpgate with set destination, faction module and shop module
: Fixed sounds not playing after 5 plays.
Tutorial videos are not up to date yet. Update video will follow shortly.
NPC Assets are not using power 2.0 yet, will be converted along the way.
Lighting bug on some sprites and girder
Long range scanner not functional yet (placeholder for universe update, will be temporarily serving as the scanning module of the old version)
Sensor block currently doesn’t function with the reactor. To fix it will probably be sensing the current consumption versus recharge percentage.
. Exploits or any other method of abusing mechanics can also be reported here, as bug tasks are private on creation.
Now that everyone is able to use Power 2.0 in a state that it’s supposed to be, we’ll continue to tweak it when balance or mechanical issues arise.
While the QA team keeps a watchful eye, the rest of us will work on the next update to revamp Weapons and possibly some support tools.
Here’s an overview of what we plan for our next update. Changes can still be made as we haven’t decided on everything just yet. If you have any ideas, concerns or suggestions related to these changes, make sure to share that with us on the forum.
Although weapons will change quite drastically, the base combination system (master + slave + effect) will remain the same as there’s fundamentally nothing wrong with it. The combination themselves will be tweaked though to make each one of them stand out more.
Cannon and Beam Damage model
Just like with missiles, we set out to change the damage model of Cannons and Beams to fulfill several requirements:
Performance, it has to have as little impact as possible on both the client and the server.
Scales better, the ultimate goal of a 1:1 damage to block damage ratio with no penetration loss. (over penetration is OK though)
Adjustable damage model to create unique variants
The biggest problem we have with performance, is that it all has to happen within a single update. If a weapon is capable of destroying 20 000 blocks, it has to find, calculate and destroy 20 000 blocks within a single update, something that is simply not possible without major hiccups.
The damage to block damage ratio, is also terrible, as each projectile can only deal damage in a single line. This requires you to make a lot more outputs to up your block destruction, but this extreme number of projectiles also drags performance down.
As a solution to both, we decided to handle destruction over a period of time, something we currently call the “acid” damage model.
A projectile that hits, registers a line of blocks to apply its damage too, just like it is in the current release version. Each one of those blocks gets a portion of the projectile’s damage (this can be weighted, the front section can have more than the back) and the damage will creep outwards from each one of those registered blocks over several updates.
This process happens fast and does not cause any performance problems as it can handle a small enough amount of calculations every update.
Further hits on the same area that is still applying acid damage will get handled at the same time too. This will result in minor damage loss as some areas can overlap, but since that area is already taking damage, it doesn’t make a noticable difference.
The radius it creeps out can be till it runs out of blocks, yet also depends on how much damage it starts with or it won’t reach far or deep enough. We can also set an actual radius to it.
That’s why we give the player the option to adjust their weapon’s output width which will decide how far it will creep outwards.
If your output width is too big for the projectile’s damage, you’ll get a wide but a very shallow hole.
If your output width is too small, you’ll most likely overpenetrate and end up with a lot of wasted damage.
Of course, what you want can vary from situation to situation. We can also apply modifiers to the weapon based on the projectile’s width to further encourage using a variation of projectile sizes for different weapons and uses.
Scaling your projectile will be done through building, it changes with how many blocks are touching the output block, perpendicular to the firing direction. There’ll be mechanics in place to prevent you from extremely underpowered but large projectiles though.
This damage model also allows us to distribute damage along the line however we fit and create different damage patterns to make beams and cannons that much more different from each other.
Point Defense Prioritization
We already have a system to assign Health Points to every fired missile, but point defense itself does not prioritize properly for this to work well. Missiles will be assigned to several damage categories (low, medium, high) and each Point Defense AI can be set to prioritize one category of missiles over the other.
The HP of each missile will ensure that you need to apply a certain amount of damage to it before it dies, instead of the current system where any hit kills the missile.
It may not surprise you, but we’re removing damage pulse from the game.
As a standalone weapon, it’s extremely situational to the point where it’s just useless.
As a support, it can be useful but it has the same effect as the Beam support so there’s no real reason to keep them.
We’re still figuring them all out and it’s too early to share the details already but if you have any ideas yourself, make sure to share them on the forums.
The new weapon update will also introduce an all standalone weapon system: the minelayer.
The system will consist of a mine layer core block and a set of unique blocks that can be put next to it. A mine layer can have up to 6 touching blocks and these will determine the type and damage composition of that specific mine.
There can be a wide range of types, from mines that shoot on proximity to the ones that turn into a heat seeking missile when triggered, maybe even mines that temporarily create a disruption field around them. Mines when placed down, are static and also save with the sector. They’re persistent but when triggered, they can do pretty much anything we want as they are a one time use.
Putting down a mine basically involves constructing it on the spot, like a mobile shipyard that uses a template/design. You need to have it connected to an inventory since constructing mines requires actual blocks. The minelayer core and the 6 touching blocks act as template, and when constructed simply put down a copy of themselves. The raw strength/damage of a mine depends on how many times more blocks you want to use for each.
The mines themselves will for performance and gameplay reasons not be displayed as blocks but rather as a 3D model that will have several stages of level of detail to allow for bigger amounts of them to be shown on screen. Even though it will be a fairly high amount, there will still be a limit on the amount of mines per sector.
This minelayer system won’t be part of the weapon combination system though, as it’s simply too different to any of the other 3 weapons.
Armor is currently underwhelming, and most weapons simply melt through it. With the new power system, everything’s more localized so in theory you already need less armor blocks to provide the same amount protection and perhaps this might make it already much more powerful than it used to be. It’s hard to say what we’ll need to do exactly with armor as the weapon damage model change will affect it as well.
A major issue is that it does not scale well, as we cannot make armor blocks individually stronger for larger ships, without also making it overpowered for smaller ships.
We do have several ideas to work with, to buff and nerf armor where needed. Some of these ideas may not end up in the actual release, or be scrapped entirely so keep that in mind.
Armor rating will be changed to be a linear factor. Currently the armor rating of a block is between 0.0 and 1.0, not allowing us to increases its effective HP dynamically without running into scaling issues. 0.5 armor rating doubles your HP, yet 0.99 armor rating increases it a hundredfold and that is a huge issue as you can not have a simple rule to adjust armor rating and expect a similar increase of effective HP.
It will just be a simple multiplier now, so that we can do this during damage calculations:
Effective HP = HP * (1 + armor rating).
This allows us to dynamically scale your armor block’s strength based on your AHP. Each one of the 3 armor types, basic, standard, and advanced, most likely will end up having an independent minimum armor rating and maximum armor rating, starting and ending at fixed values of your current AHP. This makes the same armor type individually less tanky on smaller ships, while bringing it up for larger ships.
Armor HP Absorption
Damage Absorption through AHP will be removed, and instead you lose AHP from receiving armor block damage.
A large amount of small ships will not be able to punch through capital armor, but they will trickle away the AHP of that ship and start dealing more and more damage as the armor rating starts declining.
Depending on how acid damage applies to your AHP, it may need to change a bit but the idea stays the same.
While Armor HP gives you a good indication of how many armor blocks are on your ship, it does not give any information of a particular spot.
The real benefit here is that we can end up with different bonuses depending on the composition. Advanced armor touching 6 basic hull blocks may end up behaving completely different than if it was just a solid plate of advanced armor.
This reinforces the armor at the point of contact, but also applies to every other block where damage propagates towards. Thicker and wide armor plates will be exceptional stronger.
We will also be looking at making a simple weapon damage type system. It will be fairly simple and will also apply to natural damage, like taking damage from being too close to a sun.
A weapon’s output would be one of those types or a combination.
(names are WiP)
Cannons would do mostly kinetic and a bit of proton, while beams are mostly proton with a bit of heat. Missiles would do mostly heat and a bit of kinetic.
This system will be represented as weapon effect blocks to change your weapon’s basic damage type to what you prefer. The majority of the current in-game effect blocks will also be replaced by them.
Armor blocks and shields will also have specific damage resistance values. The Shield damage resistance type could be adjusted through chamber effects while the 3 basic armor types would just have a fixed resistance.
For the universe update this means something very interesting. Since the plan is to make regions different from each other, with extremes in some stellar phenomenons, certain weapon and armor types will be a lot better in some regions than others. So it will not only matter what ship you fight with, but where you fight with it.
To help with long range combat, a zoom function will be provided while in ship mode. Similar how the sniper rifle works right now.
Most likely this will end up being part of a chamber, with a hotkey to quickly access it while flying.
Docks and Physics
Docks have always been a performance problem, especially with internal docked structures coming loose if its rail was destroyed.
Entities will not undock anymore if their rail docker, or the rail it is docked to, is destroyed.
Instead, that entity simply does not get power inherited anymore or at least get penalties to it, preferably something that scales more dynamic.
You can still undock those entities manually ,as the hotbar undocking is global and still usable. The entities who lost their rail, will also have it displayed in their name and have a different signature colour, so it should be easy to find them after a battle.
Storage Damage System
We will also change how damage on storage and cargo works to make fighting more strategic. Projectile will pass through cargo and directly destroy its content. This means that the storage will empty out when being shot. This of course makes the decision to fire on a cargo ship a lot tougher, if you had plans to acquire its content.
All decorative blocks will be flagged as such in the blockConfig, to make them stand out from any of the real armor or system blocks. They’ll propagate damage differently as it simply gets destroyed when hit but does not register as a real hit.
After the weapons update
After the weapons update, we will begin on the universe update which will be the hot phase in the game. This will not only consist of new features, but also contain the completion and fixing of existing ones like AI, Fleets, and others. Also, of course, it will contain tons of optimizations and bugfixes.
The development cycle for the universe update will be rather long, but that will enable us to work more efficiently, especially since I (schema) can now work again like I did in the very beginning of development, which I look forward to very much. Updates will be made in the form of dev builds, which of course will be very unstable, but they should provide a good snapshot of progress.
Thanks for playing StarMade,
~ The Schine Team