EDIT: Hotfix 0.189997: fixed sector claims sometimes not working, as well as removed a library that is flagged by some antivirus softwares (it was an IRC lib I was planning to use for the new chat system. It wasn't used at all in the version, anyway)
this version is mostly for fixes to the current version. It got a little delayed to figure out the various graphical glitches a lot of ATI users have. Some shader fixes have been done to fix some drawing problems, but there is now also a draw option disabled for ATI users, which can be re-enabled in the in-game options (named 'MultiDraw' in the graphics settings) for machines where the gamed worked before,a s it saves some OpenGL call overhead.
Also, some problems are due to some ATI drivers and can be solved by switching on Framebuffer in the advanced options.
Furthermore the price setting for personal shops have been re-enabled and can be done by shop owners in the main shop menu.
There are also some updates to balance:
We changed a few things on punch through and piercing effect blocks again. After some more testing we noticed a bug. You would always deal 2 times more damage than we intended.
The listed damage would apply more total hull damage than the listed number.
Example: a 10 000 damage listed weapon would on punch through do: 10,000 -> 5,000 -> 2,500 -> 1,250 -> 625 -> ...
If you make the sum of that, you get near 20,000 damage which is not what we want.
This has now been fixed, that means these 2 effects will deal 50% times less damage (still a whole lot better than not using any hull effect).
We also noticed that piercing effect, even though it does double block damage and has an armor efficiency bonus, it was slightly less effective against non-armored blocks than a double sized punch through array.
Because of that, the damage loss on the next block is less than punch through now. Piercing will go around 2-3 blocks deeper, providing you have the damage of course.
We hope that this is now enough to justify the 100% shield damage debuff.
Thanks for playing StarMade,
- schema and the Schine Team
this update is something very special. While we are still working on a lot of new features, we took the time to take an indepth look at several systems. Mainly the graphics and the network code.
A lot of this game’s choices in terms of style and design have been made to make the game as big and as scalable as possible. This is the whole reason we stayed with the block only system as opposed to detailed polygon graphics, as blocks present a unique set of optimizations and designs that would be lost in a conventional LoD (level of detail) polygon system.
To tell the results upfront, we managed to increase the performance of both graphics and network immensely.
In numbers, this means an almost doubled framerate (depending on hardware), and a decrease of average network traffic to about 10% of what it was previously (profiled by stress tests on the server).
These kind of improvements are some of the most technical ones to be made for any program. A vast amount of hours went into analyzing and profiling, while in other areas like the network that even required to write additional modules to make analyzation even possible.
A big thanks to servers who gave us profiling information as well as the tester team and players creating stress tests to verify and improve the changes.
For any one interested, there is a more technical explanation of methods used and designs on the end of this post.
before/after the optimization on the same planet with the same settings
But while we have a lot of more features in queue to come very soon, there are also some additional little features added to this version:
Custom Starter Gear
Servers are now able to define their own starter gear for new players. This includes credits, blocks, meta items, and blueprints (filled or not).
To edit the starter items, after the first start in this version a GameConfig.xml will appear in the starmade base directory, which should be fairly self-explanatory to edit.
This new door types added by kupu adds wonderful looking new doors.
Faction permission changes
A lot more options for customization has been added to faction roles. There are now permissions to control relationship changes (declare war, personal enemies, etc), faction news posting, taking/abandoning a homebase, and territory claiming/clearing. If you are a faction leader be sure to check and adapt your roles accordingly.
Calbiri, Lancake, as well as the tester team modified and gave feedback to a whole bunch of balance changes.
Hull blocks have been buffed in order to improve the survivability of ships:
Normal hull has 75 HP now.
Standard armor now has 60 armor and 100 HP, bringing it to 250 EHP.
Advanced armor now has 75 armor and 250 HP, bringing it to 1000 EHP.
Power supply beams have been buffed to bring it back to near pre-rework levels.
They are slightly less effective compared to what they used to be but they still offer around 5 to 6 times more power regen than their onboard equivalent in pure power regen blocks.
Power supply/tick: 40 -> 240
Power consumption/tick: 50 -> 270
The piercing defensive effect cap has been decreased but the amount of blocks you need to achieve max percentage has been decreased. This will bring the max achievable EHP to 2500!
Shield capacitors have now 2 times more shield HP, this is to make fights last longer and increase the chance of surviving high alpha damage.
Regen rate has remained unchanged.
Shield Capacity Total Mul: 55 -> 110
Warheads (dis-integrators) have doubled block damage.
Missile + Pulse
Radius has been nerfed to 48, with explosive you can get 58
Slightly faster, nerf: 4 -> 3
Does more damage, buff: 1 -> 2
Missile + Beam
Slower so anti missile turrets have less chance of missing buff: 2 -> 1
Ingots and crystals are 2 times cheaper to make it easier to craft advanced and crystal armor.
Shield cap and rechargers are 2 times cheaper.
HP of the more expensive systems, mainly weapons and support tools, has been increased by a factor of 2-3 in most cases.
The punch through damage system now has an effective penetration depth of around 7 blocks.
It used to make the other hull damage effects more or less obsolete and is in large groups gamebreaking. It is now equal to the piercing and explosive system in terms of block destruction per hit.
The piercing effect blocks are now switched over to the punch through damage system, with its double damage for blocks it would be ideal to use this system to destroy heavily armored ships.
This is also great for low damage weapons but with the drawback of doing no to low shield damage, depending on effect ratio.
The punch through effect blocks use the piercing damage system, making it capable of damaging blocks below armor without really destroying the armor itself first. It did lose its armor efficiency bonus though so if you want to destroy armor, piercing is the way to go. It doesn’t have a shield debuff though.
Explosive has not changed. It doesn’t exactly penetrate but it can damage a wide surface area with a minimum of weapon groups.
To clear things up, these are the current 3 hull damage types (not blocks):
Piercing damage system: Damage applied on a block gets halved and goes to the next block. This will automatically lead to a softcap at around 7 blocks deep. This also makes it able to destroy/damage blocks below armor plates without destroying that first.
Punchthrough damage system: Damage applied on a block gets deducted with that block’s EHP, then it is halved and passes to the next block. This also has a softcap at around 7 blocks.
Explosive damage system: ⅙ of damage gets applied to all touching blocks.
Unfortunately these changes do require an overhaul in ship design. Because of the stronger shields, and more durable hull, it would be highly recommended to put more armor and weapon blocks on your ships and sacrifice some shields.
Any constructive feedback is appreciated.
Bug 1769: Nocx Charged Circuit Wedge (typo bug)
Bug 565: Pentas are actually Heptas
All fixed prices have been adjusted so that they are around 1.5-3 times higher than their dynamic price.
There also have been some bugfixes to combat the slowdown of sound played, as well as more rare problems like driver crashes from the new GUI, and a lot of smaller bugfixes that caused crashes and glitches.
Technical explanation of optimizations
To begin with, these optimizations will only work with occlusion culling off. Occlusion culling is a nice concept with a fata backdraw: It’s very hardware dependant and will be slower, cause glitches, or straight up crash on crash on some systems.
For graphics the main work was to find out the bottleneck of the graphics systems. There were two main bottlenecks, which are either CPU or GPU bound. StarMade graphics are not CPU bound right now, which means there is something in the GPU processing causing the longest wait per frame.
Since OpenGL is a pipeline design, waits are not identifiable by just checking how long the code needs to execute on the specific commands. What happens is that the graphics card works asynchronous to the program execution. That means that all calls to openGL may be executed at an undefined time within the frame. If the program is GPU bounds it usually takes longer for the instruction to synch change to the next frame at the end, as the CPU waits for all the instructions that haven’t finished yet.
To actually find out what part in the code there has to be a deep analysis of graphics processing, which means switching of parts of graphics processing one by one to identify where exactly a framedrop happens, while keeping the graphics card processing large amounts of work.
In openGL (and other systems) there are 5 main bottlenecks to check: Framebuffer Fillrate, Vertex processing, Fragment Processing, Light processing and Texture Fetches.
By turning off specific parts of graphics processing combinations of what parts make the graphics run faster can be used to identify the bottleneck.
In StarMade’s case, there was a severe bottleneck going on with fragment processing (putting the pixels into the polygons and the screen). This started the second tier of finding the bottleneck within the fragment shader. It turned out to be the shire load of passing interpolated variables like occlusion and normals to the fragment shader.
To combat that I first changed the simpler per vertex lighting to look exactly like the per pixel lighting, and that would have worked overall, but it would look worse at close distance as wella s completely disable bump/normal mapping which depend on per pixel normals.
The solution to finally break this was to do preprocessed shaders, which use a simpler lighting on distance and a more advanced up close. The result was immense giving about 70% more fps to a planet of ~230 radius.
The next bottleneck identified was fillrate of textures. Since on high res, the textures have to lookup and interpolate pixels a lot more than on low res, another optimization was made to use low res textures at a distance. This also had the nice effect of eliminating texture noise when viewing objects at a distance.
Lastly the render queue has been optimized to greatly reduce draw calls and depth lookups by separating drawing in opaque and transparent parts, and also using chunked multi-drawing to the chunks of whole objects called with just one command.
Overall the optimizations yielded that a frame with large objects on it can be drawn in half the time it used to, which essentially doubles the graphics performance.
Furthermore these optimizations will also greatly benefit the shadow system, which also should be a lot faster now.
Network profiling is a lot more tricky as all you see on a basic level is individual bytes. Even listing packets is not very efficient as for one it itself costs a lot of performance, and secondly, it’s very hard to interpret.
Thanks to the design of our network protocol it was easy to aggregate per class and fields of time, which made it possible to exactly analyze network traffic and where it came from.
Furthermore, a profiling tool was build to help catch any fluctuation in the traffic by sent and received. It can even save individual timeframes for later analysis. if you are interested, you can look at it with F12, as well as turn on the live graphs in the options.
There were several bottlenecks identified immediately:
Block modification: All modifications to blocks, be it by battle, or by building were sent to all players which meant a huge load for players that have nothing to do with what happens in another part of the Galaxy. These are now made into private channels to only be sent to people in the area. Other players entering the area will get all the changed with the usual chunk requests. (note that making private channels is not advisable for everything as the cost for building and sending individual packets can outweigh what private channels would actually save).
There were a lot of other small places where making things private saved a lot of basic bandwidth.
The biggest optimization however was to bigger ships and their control structure. In order for client and server to synchronize, the data of what block connects to what has to be transmitted as soon as that ship is loaded. This was already done on a private channel, but a bigger ship, even with compression and everything turned on, cost 2.8 mb of data per player in the area. That is of course not acceptable, as it caused servers to burst data, and depending on provider entering a slow mode to compensate.
This was solved with a specially developed algorithm. By taking advantage of the block system once again and how ship systems work, a 2D map based on the shortest two dimensions can be made and per line regression can be applied. While this is a little to complicated to explain in details, here is the result: That 2.8mb ship now only took 14Kb, which is an improvement by 2000 times
What comes next
As said a lot of features are in queue. Foremost the rail system and the advanced chat (maybe even with IRC interface)
Thanks for playing StarMade,
schema and the Schine Team
this update contains a fix for servers freezing up (clients can't connect but the server will not hard crash).
It also contains a few other fixes like asteroids turning brown after revisiting a sector. All asteroids that were affected by it will turn back retroactively, as long as they have not been moved or edited.
Some GUI fixes are also done like new sliders with better usability as you can now click in the lane and new progress bars, as well as some smaller functionality fixes.
Oh and one bigger thing is that you can now switch to chests or factories from the inside of your ship/build block. The new option "cargo" is in the ship/station dropdown on the top task bar. You can also access all the named inventories from any chest from the panel's dropdown in the top right.
You first have to rename at least one chest/factory though which can be done from within the inventory panel. You can name up to 16 inventories per structure for the moment, but it is going to maybe get raised depending on its data usage on servers.
Thanks for playing StarMade,
- schema and the Schine Team
here is a quick update to fix a lot of GUI related bugs and missing element:
- fixed display block dialog and input font
- fixed text limit on trash items
- fixed list optimization
- fixed list vram leak
- fixed catalog delete button
- fixed navigation panel nullpointer exception
- fixed personal weapon indexoutofbounds exception
- fixed reload indications for personal weapons
- fixed active indication for cloaker etc
- current recipe now displayed when factory inactive
- fixed home-base display on own faction. added home-base in faction details in the diplomacy panel
- added main size in the weapon panel
- added name of weapon in the weapon panel. I'm still unhappy with this panel and it will probably be redesigned from scratch
- re-added search for last ship in navigation
- re-added scan history in navigation
- re-added change owner for catalog (admins only)
- updated player list (tab) with new style and sorting
- texture fixed/changes (by Kupu)
- added slot numbers to hotbar
- minor fixed for graphics
- new inventory slot background
- added new sprite for several function to make them more clear visually (will be integrated to game in a later update)
- fixed list reset on updates
Thanks for playing StarMade,
- schema and the Schine Team
the new GUI is finally done. I know it took a little, but now the normal update cycle will start again.
Designing, programming, and testing a GUI is a very time consuming process, especially when it’s replacing an already existing one.
This update might seem lacking in new features, because it replaces a lot of things. But we hope it will make gameplay and usability a lot more comfortable.
GUI System Main Features
All of the art has been made by the awesome Kupu. Besides the new look, a lot of basic functionality has been added to the GUI. While the foundations for the new GUI designs are in, we are aware some older windows need replacing and further work will be continued.
Window position and size save
Every window can now be resized and moved. Also the position of each window is saved and restored even after exiting the game.
Dynamic window resize
All key element of windows will dynamically resize with the window.
Large lists will no longer cause lag.
List filters, sorting, and searches
Virtually every list in the game has now responsive search bars, filters, and sorting on every column. One feature many people requested for a long time was for example a shop search, which comes for free in the new GUI.
Also the fixed tabs have been replaced with a menu bar on top for easy access to every panel.
A lot of GUI elements like buttons give a lot better feedback to the user now.
HUD System main features
The radar in the top right has been replaced with a completely new system that will show other entities relative to the player’s current horizon.
You can also switch on a bigger version in the options.
New Message popup System
The message system has been redone to be less obtrusive. There is still some work to do to get rid of unnecessary messages.
Effect and Feedback System
A pilot will now get feedback on what effects are currently affecting him. Also more instant information like power failure, being hit by a weapon with a side effect and much more will now appear in the HUD for the pilot to see.
Cleaned up HUD
The HUD has been made much cleaner with much less unnecessary info. Speed and other information is now in bars to the side. Information on what bar is what will display when changing into flight mode and then blend out to make the screen more free.
The 3 icons on the top right are “shop in distance”, “new mail”, and “trading” (which will be implemented very soon)
Small additions improving usability
Selecting an object now displays shield and power on the top left. Also if the name is too long, it will automatically scroll the name back and forth.
Options have been restructured to be much easier to navigate.
Relations of other factions are now accessible in the diplomacy tab.
Asteroid resource specs are now displayed in its name and also accessible in the navigation tab.
Item description is now available in the inventory.
Items can now be destroyed from the inventory
If the game window isn’t focused (alt+tabbed), the first click on the window will be consumed, as it’s pretty much random for the mouse system where the first focusing click went. This means no accidentally shooting a weapon or other unwanted actions upon returning to the game.
Other features added
Players can now set up to 20 bookmarks (can be changed in server config) of sectors, and name them.
Stations now behave exactly like normal blueprints. You can now save your station from within a build block, and buy the blueprint of it. Buying the blueprint from the shop will cost 1m credits. This price can now also be changed in the server config.
Updated shop descriptions
Calbiri updated the shop description for missing entries and correcting spelling etc. More balancing will follow in the coming updates.
New Decorative Blocks
Kupu has added three awesome new decorative blocks;
Also the icons got updated to be more visible (e.g. for the glas).
Some issues, large and small, have been fixed.
Something to mention is a fix for players that would prevent the world from saving at all.
Another new server config option is now also the separation of total thread pool and cpu thread pool. The default value of CPU thread pool has been lowered to combat the issue of some machines slowing down to the point freezes.
Minor fix : Yellow Lights and Yellow Rods now have a working “OFF” state.
There will be some cleanup required for the old graphics and code. Also the new GUI will be made more organized so that it can be made into GUI/HUD packs that will be put on the content page for sharing.
GUI layouts will receive a little more polish and some placeholder sprites will be replaced.
The big messages on screen will be cleaned up to not be as intrusive as they are now.
Also a new chat system with groups tabs and all the good stuff will be made (That’s why we held of changing the chat system for now)
A lot of servers reported performance problems when a lot of people are playing. Thanks to their reports I already found a lot of areas to optimize the pipeline to hopefully eliminate the problems.
The new docking system along with the rail system will be the next main project for gameplay.
We’ll also will do further work on the game API.
thanks for playing StarMade,
- Schema and the Schine Team