Good morning/day/evening and welcome!
This update is a little bit different than usual, as it focuses primarily on optimizations and performance gains, as well as some building system and ship destruction upgrades.
And what performance gains are there you ask?
Massive! Insane! Monstrous!
It's all a bit technical however, so if you don't feel like reading the entire thing skip to the part with the group selection and ship breakups.
Let's start from the top:
Physics Engine Upgrade

Long story short, the game uses the Bullet Physics Engine to power all ship ship movement and collisions, BUT until now it was actually not the official version of the engine.
What it did use was a 2004 Java port of it, since well the rest of the game is Java and it was compatible out of the box. Now however it's been replaced by the near-latest official C++ version, interfacing via JNI.
This means that pretty much all physics related lag is gone. Puff. No more problems when approaching stations with infinity class ships, and crashing them into each other is a breeze when you ignore all other explosions and such (like in creative mode for example). Of course mileage may vary with your hardware.
Thread Lightly
The game used multiple threads before, but not on this scale. Now most of the super intensive calculation code is asynchronous and no longer blocks the main rendering thread - so any major lag spikes or stutters should be a thing of the past (when not doing completely outrageous stuff that is :P).
Ship Updates
One of the more intensive processes of updating a ship is rebuilding the so called visual node, which needs to be done at every ship change, be it damage or module addition/removal. A large part of it is now parallel which means that the changes may show up with a slight few milliseconds delay - but in a completely smooth fashion.
Star System Loading
Asynchronous star system loadup pretty much means that warping to other systems is nearly instant, as well as it reduces the final period of the initial game loading time, loading a savefiles, and respawning by loading a save.
Hitting That
...but faster.

We've mostly rewritten the parts of code that do weapon hit detection so they're a bit less accurate (but not enough to notice) and incomparably faster.
Remember how firing off a bunch of splash damage weapons (i.e. flak cannons, nuclear turret or the fusion cannons) would cause pretty significant lag spikes? That should be a thing of the past now for smaller ships and at least workable on ginormous ones.
All other weapons have gotten an immense speedup as well - and with shields up the calculations are culled completely aside from the shield bubble which is pretty fast in the first place.
That has the side effect that while shields are up, nothing can do any non-physical damage to you - including missiles low fps that tend to clip through shields for some unknown reason. Not exactly a full solution but at least the damage problem is solved for now.
Ship Breakups
Everyone can now stop asking "Shouldn't ships not stay in one piece when not connected?" because we have that now. :D
Okay, say you have a ship...
Exhibit A:

And concentrate fire on a certain spot.

The unconnected sections will form new sub-ships.

If they have no command pods then they'll drop off as derelicts, otherwise they'll form new allied ships that will follow you (or your opponent) around and help you in combat once you lock a target.

It's like Titanic all over again, but with more explosions.

In upcoming updates we'll hopefully manage to add a separator/docking port as well so you'll be able to split up some sections to make fighter carriers and such, then seamlessly dock back into one ship.
Group Selection
But now you might say: "So I kind of took a shot into this one single module that was supporting half my ship and it completely broke off. Am I supposed to attach all of that back piece by piece?"
And the answer is no, you don't have to! The group selection will see to that.
1. Hold down
[LMB] and move around to select multiple modules:

2. Pick up the one you want to attach by and move the entire thing:

3. Repeat for desired result:

Good as new!

Here's also a slightly older wip imgur gifv of it in action: https://i.imgur.com/cl901rP.gifv
It also supports union selection if you hold down
[SHIFT] when selecting. It does have a few smaller problems at the moment, you can't rotate the selected group and it doesn't keep the correct firing groups if you drop the group as a separate ship - which may switch them to secondary battery.
SoonTM we may find a way to add a copy and paste option for creative as well :)
As always you can check for the more minor changes in the changelog below:
Changelog:
Additions:
- ships now break up and split into derelicts or fleet ships when not connected
- new npcship stance for ships that are a part of your "fleet" (light blue icons)
- group select function for the building system
- added a blue pulse to the area scan ability
- more system info to crash logs
Changes:
- replaced physics engine with C++ version
- ship saving menu is now more user friendly
- friendly stations now appear as blue like ships
- removed large explosions on npc ship death since it didn't really make sense anymore with the new break up mechanic
- reduced nostradamus thruster rotational thrust slightly
- increased base cargo range a bit
- slightly better smoke effect fade out for nuclear explosions
- major hit detection optimizations
- offloaded a lot of blocking calculations into separate threads, making everything smoother
- the NTB Hornet Launcher now has 4 tubes instead of 9, but the rockets it fires do more damage, go faster and further
- NTB Hornet Launcher and Neutron Torpedo Launcher reload extended by 5 seconds
- disabling "High Quality Particles" in options now yields a lot fewer debris particles
- better occlusion detection for launchers and engines, so they're finally able to fire through all those wide gaps occupied by turrets that really shouldn't have ever been blocked
- module ore wreckage spawn rates are now more consistent and don't scale as much
- updated ships and adjusted small ship tier spawning limits so it should be easier to initially start up with a starter ship
- various tweaks
Fixes:
- fixed memory leaks that caused the game to eat RAM when playing for a long time
- missiles no longer hit through shields at low framerate
- ship loading menu now blocks group selection spamming which could give unexpected results
- derelicts now despawn after a while if you're not anywhere near them (after about 15 mins)
- fixed a cargo rendering issue
- recalibrated warp speed display counter
- fixed the knife random event again, so it only spawns in the Core Worlds
- fixed the huge lag spikes enduced by splash damage weaponry
- the side inventory should no longer sometimes react to mouse clicks when the mouse cursor is not even in the same postcode (hopefully)
- star ambient noise volume scaling fixed and reduced to 40% of previous max volume
- fixed stock exchange background grid's size
- fixed the weird issue where sometimes sounds from the npc ship that kills you persisted afterwards
- minor NPC ship warp AI fix
- a countless amount of small fixes and speedups
- stars now act more like planets when you get close and no longer trap you into an area band in creative mode
For the next update the main focus will be (and for sure this time :P) AI and tractor beam overhaul, more modules and hopefully even NPC shuttles.
And on that bash shell it's time to end, goodbye!
Until next time. :)
[ 2018-04-05 21:59:23 CET ] [ Original post ]