Hello, and welcome to StarMade,
Edit#2: A fix (0.1401) is uploaded to fix the ClassCastException and the exception you get in the options if no controller is attached
Edit: I'm uploading a version now, which will override the "USE_NEW_PLAYER_MODEL" options to true, since for client updates it were set to false, and they werent getting dave without a manual settings change. No server update required.
Finally, the new update is in release state. There might still be some bugs, as this is a huge update with mostly core design upgrades, and there are only so many testers. If you have problems starting, please try to change your settings and send in a report (especially shadow, texture resolution, multi-sampling/anti-aliasing, and normal mapping)
Important New Features
Graphic Effects
Shadows
What started as a little one-day experiment turned into one of the best looking graphical upgrades of the update. Due to limitations in the size of shadow map textures, long range shadows need a lot more parts and are harder to implement. StarMade is using "Cascading Shadow Maps", which is a technique to combine shadow textures rendered from multiple distances to archive the best quality vs distance.
(Thanks to Tomino-sama and the mushroom fleet for some of the pictures)
Normal Mapping (Bump Mapping)
Normal mapping is a standard graphics effect used in most modern game. The milestone of that feature is less the implementation, but the work of Tom (Kupu) creating the actual normal maps for each texture.
Lighting Model update & fixes
Not only was the lighting model upgraded to pre-calculate the lighting a lot faster, but also the shaders were upgraded to better represent darker areas and to distinct better between lighting from block-light-sources and lighting from outside. Additionally, StarMade switched to per-pixel lighting to make lighting look a lot better. Furthermore, most of the lighting bugs resulting from angled shapes have been fixed. There are however still some lighting errors on some resulting from incorrect normals. I'll try to fix those in the coming updates.
Procedural Backgrounds
Since the static "sky-box" was getting boring, new procedurally generated backgrounds have been implemented. They will be unique to each star system (16x16x16 sectors), and persistent in the universe. This will also help players to recognize familiar territory.
Textures
Texture Packs
One of the biggest upgrades is a complete new look for StarMade.
Tom (Kupu) created 3 all new texture packs for StarMade. You can now choose between "Cartoon", "Realistic", and "Pixel". You can still switch back to the old texture, but please keep in mind that additional blocks might have a different art style in that texture pack.
Furthermore you can now choose higher resolution texture packs if they exist for a texture pack (currently for "Cartoon", and "Realistic"), and your graphics cards support it.
"Pixel" Texture Pack
"Cartoon" Texture Pack
"Realistic" Texture Pack
New skin files
A new format for skins has been implemented, as skins now include multiple textures. More about that in the next section.
Player Model
Dave
Another one of the biggest changes is the new player model called "Dave". Keaton (Omni) created this new model as well as a lot of animations for it. He also created its texture model (UV-Map) and default-skin. Templates for your own custom skin can be found in StarMade/data/SkinningResources/. But we didn't just replace the system one to one; a whole new system to have all kinds of models and animations has been developed and implemented. More about that in "New Animation System".
All new models and accessories now have a emission map additionally to the standard texture. This map basically makes part of the texture glow even in shadows.
Helmet Item
In addition to Dave himself, we added a new item: the helmet. It's currently purely decorative, but it will serve gameplay functions later. You can put your helmet on and off at will. You can even customize your helmet texture, as it is now part of the new skin-format.
Fabricator
An all new tool was implemented. At the moment the fabricator will be equipped automatically when placing and removing blocks in astronaut mode, and can be seen on the arm of other players, or in 3rd person mode. Removing has been replaced with a time based personal salvage beam of the fabricator for balance reasons. Upgrades to this tool are planned.
New Animation & Model System
Part of the reason this upgrade took a little longer was the creation of an abstract animation and model interface. This interface will help to add new models without having to do a single line of programming code, as they can now be defined in XML configuration files. This will also help with modding, as new models can be added without having to modify the game's code.
Abstract Creature toolbox
The major reason for having this new animation system was to prepare for a major content update that will be added soon. The system is the foundation to have critters, aliens, monsters, and all sorts of entities on planets, ships, and stations. The system enables us to combine different parts of creatures into new creatures, clearing the way to randomly generate a virtually infinite amount of unique looking and behaving creatures.
Controls
Joystick & Gamepad Support
An abstract system was implemented to support every kind of joystick and gamepad. Input axes can be defined and edited: their sensitivity, as well as the option to invert, can be customized individually.
UI fixes
A lot of fixes have been made to make the GUI more easy to use. We are still planning a complete overhaul, so I held back on some redesignes to not have to do twice the work. One major change is the addition of sliders in various parts to make tedious setting changes a lot more convenient.
Cockpit Docking beam
A minor change, but an often requested one, is that the docking beam will now originate from the cockpit. This will help especially larger ship in the docking procedure.
Log Panel
This new panel (activated from main game menu, or by pressing F1) will help you keep track of every message in the game. You can apply filters, so it's a lot more comfortable to read. It also makes chatting privately to other players a lot easier. Just select a player from the dropdown, and as long as the panel is open, pressing enter will automatically prepare a private message to that player.
Additional Block & Shapes
The basic block format has been changed to allow up to 32 styles of blocks. The migration of the old format to the new will be done on-the-fly, so there are no version compatibility issues. The only downside is that segments(chunks) will load a little slower one single time. Once they are loaded and saved in the new format they will have no downside at all. Please make sure either way you have all your important data backed up!
All Corners
All different rotations of the corner blocks are now finally usable.
Penta
A new block style that has 7 sides. It's basically a cube with one corner chopped off.
Tetra
The part that is missing on a penta block
Gravity Orientations
Gravity can now be orientated and used in a 6 directions. That means you can walk on walls, the ceiling, or use gravity elevators.
Flower Orientations
Flowers and other spite-style blocks can now be orientated to all sides
Universe
Advanced shops
For the new AI, there is now a new slightly different type of shop that will spawn with an NPC. Those shops will spawn in 2,2,2 on new universes, and can always be found in not yet explored parts of the universe with a lower probability as normal shops. To find them in navigation, look for the NPC indicator rather than the shop.
Planet rotation versus system rotation
Since rotating a cube on a grid had too many logical problems, which in the end resulted in endless bugs like teleportation, etc, and since the only real gain of them was to have a day/night cycle on planets, the rotation has been moved from star-systems to individual planets rotating. Everything in a planet's sector will be rotating with that. There is still a minor issue that objects build over the sector borders of planet sectors have no collision, as that caused a lot of potential for lag and bugs. I'll try to make it solid again in the future.
The main gain from using that system is that a lot of problems - lag, warps, and unwanted orientation changes resulting from the system rotation - are now a thing of the past, which makes traveling a lot easier
Faction
Personal Enemies
A new option has be added for factions to have personal enemies. Also setting your faction to "declare war on hostile action" won't set your faction to attack all neutrals anymore if attacked by a neutral player. It will now add that player to the personal enemies of the faction.
NPC & AI
NPC system
With the NPC system, a whole new logic system behind it was implemented. The NPC system is made to have all kinds of monsters, people, critters, etc, with an artificial intelligence populate the StarMade universe in the future. For now, only humanoid NPCs are spawned in the game, but that will change very soon.
Path Finding
One major part of the implantation of character AI was the addition of an efficient block based path finding algorithm. Because the requirements for such an algorithm were such, that the details of movement could change (moving in gravity or without, different model scale, etc), I took a lot of time to design a modular system that can be customized for any requirement. The path-finding is fully threaded, and will therefore work in the background while the game can still run without lag.
I chose to use a modified A* (A-Star) algorithm, which builds the path based on heuristics on the cost to move to a position. This way implementing penalties for jumping, or in the future moving on bad terrain is possible.
NPC Crew
You can now hire your own AI controlled crew. This is currently only possible at advanced shops when talking (press R) to the shop NPC there. Upon buying an NPC, he will be in your current crew. You can then control that NPC with holding down the control button. The options to control the AI will be on the left of the screen. You can also modify his name and control it from the AI panel, which is now always accessible. Your group can have 5 NPCs at max, but that doesn't mean you only get 5 NPCs in total. You can place them on your ship and dismiss them from your command to get more NPCs. They will be waiting for you.
Please keep in mind that there are still a few hiccups with NPCs. The system at the moment is that they need to have an "affinity" to a structure. The NPC will behave relative to that structure. To change that affinity, the best way is to make the NPC follow you and then order it to a point on the object you want that NPC to belong to. Without ordering it to move to the new object, the NPC will remain in the last affinity it belonged to.
AI Difficulty
You can now also change the single player difficulty in the login screen. This will only affect single-player.
Lua Interface
StarMade now has support for the scripting language Lua. For now, the interface is only used officially for the conversation system, but will be expanded onto other parts. This especially will help modders to make changes to the program without having to dive into the code and having to create a custom build.
Conversation system
The conversation system is fully based on Lua and gives a first taste of what is to come. The scripts are located in /data/scripts if you want to experiment (please backup first). The conversations are fully networked so when an admin modifies them, the text and options will be transferred to the clients without them needing the scripts. Also, all decisions are executed on the server for maximum security. Please be careful when modifying the scripts, as there is no real debugging yet, and script errors might result in a server crash.
Plans
As Lua is a script language, doing complex operations can be very expensive. That's why I'm trying to provide several interfaces to make Java do most of the work. One plan is, for example, to create an interface for the structure generation. Admins can then place generation scripts for space stations (even using a random generator) in the game, leading to space stations being created from that script. This will take care of the problem that space stations always looking the same.
Tools
Gif Recording
Players can now - exactly like screenshots - create gifs in-game. Press the "break" button to start recording and press it again to finish. Size and framerate of the gif can be customized in the settings.cfg file.
Orbital Cam
To make it even easier to record ships, an orbital camera (activated by holding backslash (tilde, depending on the keyboard layout; can be reassigned in the options)) was added. This camera will fly around the current position of the player, and the mouse wheel can be used to zoom.
Optimization and Redesigns
Most of the work of the update went into finding the weak points of the core and redesigning those to be more scalable, less error prone and easier to expand upon.
Here are some examples (not all) of core changes. More can be found in the change log:
Redesigned Topology of Segments (chunks) on Higher Level
One problem in the old version was that empty segments took away performance on multiple levels: Memory consumption (of course not as much as filled ones), organization (for operations on non-empty segments the system still had to iterate over empty as well as non-empty segments), and physics (those checks between regions of segments were expensive and caused lots of lag even when two object weren't even touching).
The redesign was implementing the top level from a two-layer region map to array was redesigned into a region to octree structure with a very small memory footprint. Empty segment now take no memory at all, and segments in an area can be iterated skipping empty regions naturally.
Network Segment Signature Requesting
To minimize unnecessary client requests and performance spent on finding out what to request, the logical step was to first request a bitmap of a region, so each client knows with minimal effort which segments have to be requested and which are surely empty.
The current system works great and improves loading times for structures by a lot. That, coupled with a lot of other optimizations, as well as the new octree topology, brings down the loading time of examples from over 3 minutes to under 20 seconds.
Controller Structure
Loading what blocks are connected to each other, is a lot of work and data. Modularizing the system cuts the memory usage more than in half and speeds up processing.
Vertex Buffer Batches
For some graphics cards, using many small vertex buffer objects was a bottleneck. The new system combines those into bigger buffers. The size can be customized in the options, as its perfect setting directly depends on the graphics card driver, so you may have to try different settings for the best performance (in advanced settings on start-up).
Now, the work on the next update begins. The game will be updated more frequently from now on, since most of the coming things won't have core changes.
Thank you for playing StarMade,
- schema
Here is the full change log (missing a few internal things that are hard to explain):
Edit#2: A fix (0.1401) is uploaded to fix the ClassCastException and the exception you get in the options if no controller is attached
Edit: I'm uploading a version now, which will override the "USE_NEW_PLAYER_MODEL" options to true, since for client updates it were set to false, and they werent getting dave without a manual settings change. No server update required.
Finally, the new update is in release state. There might still be some bugs, as this is a huge update with mostly core design upgrades, and there are only so many testers. If you have problems starting, please try to change your settings and send in a report (especially shadow, texture resolution, multi-sampling/anti-aliasing, and normal mapping)
Important New Features
Graphic Effects
Shadows
What started as a little one-day experiment turned into one of the best looking graphical upgrades of the update. Due to limitations in the size of shadow map textures, long range shadows need a lot more parts and are harder to implement. StarMade is using "Cascading Shadow Maps", which is a technique to combine shadow textures rendered from multiple distances to archive the best quality vs distance.
(Thanks to Tomino-sama and the mushroom fleet for some of the pictures)
Normal Mapping (Bump Mapping)
Normal mapping is a standard graphics effect used in most modern game. The milestone of that feature is less the implementation, but the work of Tom (Kupu) creating the actual normal maps for each texture.
Lighting Model update & fixes
Not only was the lighting model upgraded to pre-calculate the lighting a lot faster, but also the shaders were upgraded to better represent darker areas and to distinct better between lighting from block-light-sources and lighting from outside. Additionally, StarMade switched to per-pixel lighting to make lighting look a lot better. Furthermore, most of the lighting bugs resulting from angled shapes have been fixed. There are however still some lighting errors on some resulting from incorrect normals. I'll try to fix those in the coming updates.
Procedural Backgrounds
Since the static "sky-box" was getting boring, new procedurally generated backgrounds have been implemented. They will be unique to each star system (16x16x16 sectors), and persistent in the universe. This will also help players to recognize familiar territory.
Textures
Texture Packs
One of the biggest upgrades is a complete new look for StarMade.
Tom (Kupu) created 3 all new texture packs for StarMade. You can now choose between "Cartoon", "Realistic", and "Pixel". You can still switch back to the old texture, but please keep in mind that additional blocks might have a different art style in that texture pack.
Furthermore you can now choose higher resolution texture packs if they exist for a texture pack (currently for "Cartoon", and "Realistic"), and your graphics cards support it.
"Pixel" Texture Pack
"Cartoon" Texture Pack
"Realistic" Texture Pack
New skin files
A new format for skins has been implemented, as skins now include multiple textures. More about that in the next section.
Player Model
Dave
Another one of the biggest changes is the new player model called "Dave". Keaton (Omni) created this new model as well as a lot of animations for it. He also created its texture model (UV-Map) and default-skin. Templates for your own custom skin can be found in StarMade/data/SkinningResources/. But we didn't just replace the system one to one; a whole new system to have all kinds of models and animations has been developed and implemented. More about that in "New Animation System".
All new models and accessories now have a emission map additionally to the standard texture. This map basically makes part of the texture glow even in shadows.
Helmet Item
In addition to Dave himself, we added a new item: the helmet. It's currently purely decorative, but it will serve gameplay functions later. You can put your helmet on and off at will. You can even customize your helmet texture, as it is now part of the new skin-format.
Fabricator
An all new tool was implemented. At the moment the fabricator will be equipped automatically when placing and removing blocks in astronaut mode, and can be seen on the arm of other players, or in 3rd person mode. Removing has been replaced with a time based personal salvage beam of the fabricator for balance reasons. Upgrades to this tool are planned.
New Animation & Model System
Part of the reason this upgrade took a little longer was the creation of an abstract animation and model interface. This interface will help to add new models without having to do a single line of programming code, as they can now be defined in XML configuration files. This will also help with modding, as new models can be added without having to modify the game's code.
Abstract Creature toolbox
The major reason for having this new animation system was to prepare for a major content update that will be added soon. The system is the foundation to have critters, aliens, monsters, and all sorts of entities on planets, ships, and stations. The system enables us to combine different parts of creatures into new creatures, clearing the way to randomly generate a virtually infinite amount of unique looking and behaving creatures.
Controls
Joystick & Gamepad Support
An abstract system was implemented to support every kind of joystick and gamepad. Input axes can be defined and edited: their sensitivity, as well as the option to invert, can be customized individually.
UI fixes
A lot of fixes have been made to make the GUI more easy to use. We are still planning a complete overhaul, so I held back on some redesignes to not have to do twice the work. One major change is the addition of sliders in various parts to make tedious setting changes a lot more convenient.
Cockpit Docking beam
A minor change, but an often requested one, is that the docking beam will now originate from the cockpit. This will help especially larger ship in the docking procedure.
Log Panel
This new panel (activated from main game menu, or by pressing F1) will help you keep track of every message in the game. You can apply filters, so it's a lot more comfortable to read. It also makes chatting privately to other players a lot easier. Just select a player from the dropdown, and as long as the panel is open, pressing enter will automatically prepare a private message to that player.
Additional Block & Shapes
The basic block format has been changed to allow up to 32 styles of blocks. The migration of the old format to the new will be done on-the-fly, so there are no version compatibility issues. The only downside is that segments(chunks) will load a little slower one single time. Once they are loaded and saved in the new format they will have no downside at all. Please make sure either way you have all your important data backed up!
All Corners
All different rotations of the corner blocks are now finally usable.
Penta
A new block style that has 7 sides. It's basically a cube with one corner chopped off.
Tetra
The part that is missing on a penta block
Gravity Orientations
Gravity can now be orientated and used in a 6 directions. That means you can walk on walls, the ceiling, or use gravity elevators.
Flower Orientations
Flowers and other spite-style blocks can now be orientated to all sides
Universe
Advanced shops
For the new AI, there is now a new slightly different type of shop that will spawn with an NPC. Those shops will spawn in 2,2,2 on new universes, and can always be found in not yet explored parts of the universe with a lower probability as normal shops. To find them in navigation, look for the NPC indicator rather than the shop.
Planet rotation versus system rotation
Since rotating a cube on a grid had too many logical problems, which in the end resulted in endless bugs like teleportation, etc, and since the only real gain of them was to have a day/night cycle on planets, the rotation has been moved from star-systems to individual planets rotating. Everything in a planet's sector will be rotating with that. There is still a minor issue that objects build over the sector borders of planet sectors have no collision, as that caused a lot of potential for lag and bugs. I'll try to make it solid again in the future.
The main gain from using that system is that a lot of problems - lag, warps, and unwanted orientation changes resulting from the system rotation - are now a thing of the past, which makes traveling a lot easier
Faction
Personal Enemies
A new option has be added for factions to have personal enemies. Also setting your faction to "declare war on hostile action" won't set your faction to attack all neutrals anymore if attacked by a neutral player. It will now add that player to the personal enemies of the faction.
NPC & AI
NPC system
With the NPC system, a whole new logic system behind it was implemented. The NPC system is made to have all kinds of monsters, people, critters, etc, with an artificial intelligence populate the StarMade universe in the future. For now, only humanoid NPCs are spawned in the game, but that will change very soon.
Path Finding
One major part of the implantation of character AI was the addition of an efficient block based path finding algorithm. Because the requirements for such an algorithm were such, that the details of movement could change (moving in gravity or without, different model scale, etc), I took a lot of time to design a modular system that can be customized for any requirement. The path-finding is fully threaded, and will therefore work in the background while the game can still run without lag.
I chose to use a modified A* (A-Star) algorithm, which builds the path based on heuristics on the cost to move to a position. This way implementing penalties for jumping, or in the future moving on bad terrain is possible.
NPC Crew
You can now hire your own AI controlled crew. This is currently only possible at advanced shops when talking (press R) to the shop NPC there. Upon buying an NPC, he will be in your current crew. You can then control that NPC with holding down the control button. The options to control the AI will be on the left of the screen. You can also modify his name and control it from the AI panel, which is now always accessible. Your group can have 5 NPCs at max, but that doesn't mean you only get 5 NPCs in total. You can place them on your ship and dismiss them from your command to get more NPCs. They will be waiting for you.
Please keep in mind that there are still a few hiccups with NPCs. The system at the moment is that they need to have an "affinity" to a structure. The NPC will behave relative to that structure. To change that affinity, the best way is to make the NPC follow you and then order it to a point on the object you want that NPC to belong to. Without ordering it to move to the new object, the NPC will remain in the last affinity it belonged to.
AI Difficulty
You can now also change the single player difficulty in the login screen. This will only affect single-player.
Lua Interface
StarMade now has support for the scripting language Lua. For now, the interface is only used officially for the conversation system, but will be expanded onto other parts. This especially will help modders to make changes to the program without having to dive into the code and having to create a custom build.
Conversation system
The conversation system is fully based on Lua and gives a first taste of what is to come. The scripts are located in /data/scripts if you want to experiment (please backup first). The conversations are fully networked so when an admin modifies them, the text and options will be transferred to the clients without them needing the scripts. Also, all decisions are executed on the server for maximum security. Please be careful when modifying the scripts, as there is no real debugging yet, and script errors might result in a server crash.
Plans
As Lua is a script language, doing complex operations can be very expensive. That's why I'm trying to provide several interfaces to make Java do most of the work. One plan is, for example, to create an interface for the structure generation. Admins can then place generation scripts for space stations (even using a random generator) in the game, leading to space stations being created from that script. This will take care of the problem that space stations always looking the same.
Tools
Gif Recording
Players can now - exactly like screenshots - create gifs in-game. Press the "break" button to start recording and press it again to finish. Size and framerate of the gif can be customized in the settings.cfg file.
Orbital Cam
To make it even easier to record ships, an orbital camera (activated by holding backslash (tilde, depending on the keyboard layout; can be reassigned in the options)) was added. This camera will fly around the current position of the player, and the mouse wheel can be used to zoom.
Optimization and Redesigns
Most of the work of the update went into finding the weak points of the core and redesigning those to be more scalable, less error prone and easier to expand upon.
Here are some examples (not all) of core changes. More can be found in the change log:
Redesigned Topology of Segments (chunks) on Higher Level
One problem in the old version was that empty segments took away performance on multiple levels: Memory consumption (of course not as much as filled ones), organization (for operations on non-empty segments the system still had to iterate over empty as well as non-empty segments), and physics (those checks between regions of segments were expensive and caused lots of lag even when two object weren't even touching).
The redesign was implementing the top level from a two-layer region map to array was redesigned into a region to octree structure with a very small memory footprint. Empty segment now take no memory at all, and segments in an area can be iterated skipping empty regions naturally.
Network Segment Signature Requesting
To minimize unnecessary client requests and performance spent on finding out what to request, the logical step was to first request a bitmap of a region, so each client knows with minimal effort which segments have to be requested and which are surely empty.
The current system works great and improves loading times for structures by a lot. That, coupled with a lot of other optimizations, as well as the new octree topology, brings down the loading time of examples from over 3 minutes to under 20 seconds.
Controller Structure
Loading what blocks are connected to each other, is a lot of work and data. Modularizing the system cuts the memory usage more than in half and speeds up processing.
Vertex Buffer Batches
For some graphics cards, using many small vertex buffer objects was a bottleneck. The new system combines those into bigger buffers. The size can be customized in the options, as its perfect setting directly depends on the graphics card driver, so you may have to try different settings for the best performance (in advanced settings on start-up).
Now, the work on the next update begins. The game will be updated more frequently from now on, since most of the coming things won't have core changes.
Thank you for playing StarMade,
- schema
Here is the full change log (missing a few internal things that are hard to explain):
- improved character physics (hopefully no more gliding through lifts)
- improved transformation pipeline in physics, so objects no longer fall out of other moving objects if bound (astronaut in gravity falling out of ship)
- changed universe rotation system to local rotation of planet sectors
- usernames now case insensitive (means, all variations of cases of the same name point to the same account [e.g. "Test", "test", "teSt" all point to the same player save-file, and have the same protection]. Same goes for
- white/black lists, as well as admins. It will be applied automatically, so admins won't have to rewrite any files)
- fixed crash on recipe (number overflow)
- soft migration for block structure to allow for additional orientations. things get migrated as they are loaded, so no version compatibility issues will occur (unless a newly saved blueprint is loaded into an old starmade version).
- old->new: ok, new->old: not ok
- added additional corners front/back
- added additional corners left/right
- cleaned up orientation system (confusing bit of code) with migration
- spawn_entity command now works from console
- built system to automatically include all symmetry options for all new and old shapes
- astronauts can now align themselves with a ship by pressing the jump button. the alignment works just like in gravity without actual gravity
- improved block-orientation system to remember last selected for each block type
- optimized character physics further (100 characters on the same planet from 10 to >200 fps)
- fixed lighting not updating all surrounding segments when a block is added/removed
- complete redesign of mid level segment data structure into a dynamic octree structure (on top of the existing low level octree)
- integrated new structure for more performance in memory, light calculation, physics, simple iteration, etc. (especially on structure with lots of empty space)
- fixed ugly little graphical glitch in planet atmosphere
- fixed a memory leak that would fill up over a longer time (mostly on clients)
- fixed occlusion bug that would cause areas to be brighter when there is non-opaque objects near (flora, glass, etc)
- fixed bug that may have cause faction ids to be wrongly set on server restart
- fixed bug where case of the names of members in a faction would cause bugs when logged in with a different case
- implemented cascading shadow maps with zoom fitted frustum
- improved shadow quality and fixed some bugs in the system
- implemented shader preprocessor to efficiently handle options and backwards compatibility
- fixed bug from new system where single blocks are not updated on server
- fixed turrets not being controllable by players
- a set-recipe a player buys (coarse/refine) will now refund credits instead of blocks if the recipe cost credits
- fixed command auto-complete
- added player name auto-complete to all command parameter as well as /pm and /f
- improved method to check on modified blueprints (hopefully won't misfire modification)
- fixed turret movement in chain docking
- turrets no longer reset rotation when entered (and flight mode is used)
- made restricted camera (turrets) homogeneous to be much easier to use for advanced application
- turret rotation is now persistent (does not reset when turret get loaded after being unloaded)
- chain docked objects are no longer excluded from faction home base protection
- player movement speed in gravity now independent from look direction
- added key for player walking in gravity (default left shift)
- implemented multiple texture packs chooser
- fixed graphical glitch where stars/sun would be visible on glass/water (or through any other transparent object) even when there is a solid block somewhere in the background
- fixed client turret glitching if rotation has been already modified by another client before the client enters a the sector containing the turret
- fixed docked structures becoming physical on client when the docking process was not completed yet (major lag)
- improved loading times of structures by setting initial sizes of maps from expected data
- improved blueprint loading time using a faster method to transfer block connection data
- improved general block-block physics collision performance
- debug mode no longer stays active when joining a multiplayer game after activating it on single player
- fixed faction offer/relation id's possibly colliding leading to random war/peace declarations
- added error handling for texture packs (to check if all files are there and if they have the right resolution), so modders get good feedback
- added fixed helmet animation triggers
- fixed character getting stuck on ceiling when jumping
- implemented directional gravity blocks. Players can walk on walls/ceiling
- fixed new-block-transmission not generating segments other then 0,0,0
- further improved shadow quality (not quite there)
- fixed bug that caused clients to have a 5-10 second delay when adding/removing/harvesting blocks or open/closing doors
- decreased network overhead by using pure primitives for buffers when applicable
- fixed background when using frame-buffer only
- implemented signature fetching: clients request a map of what the server knows for sure at the time and the region file is going to be empty. This decreases load times and network overhead because empty segments don't have to be processed in the segment-manager at all. And thanks to the octree system, the update of empty segments takes 0 memory and is very fast
- fixed out-of-direct-memory danger for 32-bit java when using texture arrays
- fished shadows of characters being falsely frustum culled
- fixed method of saving virtual memory (memory outside the heap). Out-Of-Memory crashes on 32-bit systems should now be eliminated
- added auto-rotate camera
- added gif recorder
- chain-docked objects now also in home-base protection (if origin is home-base)
- fixed faction home not resetting when removing faction block
- added info to track a faction home change (faction news) to track eventual bug causing faction home resets (made that already more robust already, also)
- redesigned AI panel
- added crew tab
- added fleet tab
- implemented crew AI control
- implemented fabricator animation control
- docking beam origin is now currently used cockpit
- fixed 6 sided gravity
- implemented fabricator to harvest blocks instead of being able to remove at once
- added scaling to bone implementation
- added rest of the new blocks to the config
- fixed bug that would cause brightness on blocks when a ship is exited when using shadows
- integrated Luaj libraries for full Lua support
- implemented Lua interface
- implemented new conversation System
- implemented system to create conversations with Lua
- implemented networked conversation
- fixed block modding tool not to crash when reflection reports non accessible field
- improved shadows to not "shine through" far away objects when close up to something else that normally should be shadowed from that far away object
- fixed some shader issues for mac-graphics card drivers
- added failsafe for path calculation to stop after a threshold is reached
- implemented normal maps
- fixed source of bugs: on unloading entities were triggered to save twice. one time for the sector unload, and one time on unload of the object itself. This was a source of various random bugs like Objects completely vanishing
- fixed characters controlled by players falling of moving objects when in gravity (or in sector change)
- implemented skin files
- implemented transmission for full skins
- removed lag from flying through open doors
- further improved physics performance with advanced lookup tables
- removed unnecessary non-scaling transformation from physics cube-cube collision process
- improved performance of single block-updates by a lot (building, salvaging, opening doors)
- reduced lag from load of missiles in one place by a lot
- improved A-Star path finding to avoid turning if possible
- implemented basic path smoothing
- implemented settings sliders
- integrated sliders for advanced build mode
- advanced build mode size now saved by ship entered
- integrated sliders for weapon settings
- implemented OAuth2 test communication
- server config option for collision damage (damage and physical response is not yet calculated perfectly, but fast block transmission to handle from physics works)
- minor physics optimizations
- fixed small synch problem with octrees (server didn't apply the data it sent to clients (marking a segment as empty), and since the clients had teh data, empty segments where never requested and therefor checks if a segment has been loaded returned false on the server which sometimes lead to gravity not being applied
- fixed several chunk error sources
- fixed hidden flag not being updated correctly after docking process
- implemented message log
- implemented message log filters
- implemented message log fast chat (system will place /f for faction chat or "/pm name" automatically if chat is used in message log panel with the according filter selected
- fixed lag/bug on docked structures after the object has already loaded in, the server tells the client that the object is physics active
- fixed extension error in skin transmission
- implemented structure to handle unloaded AI entity for clients (in the future when a controlled entity e.g. fleet is not necessarily fully loaded and has to be simulated in the database)
- fixed pirates attacking the NPC character in shops
- redesigned AI crew Panel buttons and fixed functionality
- added AI settings
- implemented basic customizable AI behavior for NPC crew
- fixed bug where gravity block cannot be turned off
- explosion blocks (disintegrator) now cause chain reaction with each other
- explosion blocks (disintegrator) now explode on damage
- draw distance no longer an option (calculated over "max segments" now)
- navigation filter setting is now saved on the client
- fixed migration problem when a sprite style block was activated
- fixed bug where object would be displayed from cache after spawning if before an object with the same name was deleted
- buying from catalog with blocks now includes value of docked ships
- if not enough blocks to buy from catalog, a list of total blocks needed will be sent to the player (using new chatlog panel to view)
- core can now be entered on the same ship if someone already is in the build block
- now skipping docked structures that are already occupied when up/down was pressed in flight mode
- fixed bug where would not be able to pick up core as astronaut
- fixed docking beam not resetting to core when cockpit changed to core
- auto-completion of player name not puts right case
- auto-completion of player name now works outside of commands
- docking on faction base with faction exception will no longer change faction of the docked ship
- possible fix for AI not firing on turrets
- fixed bug where cache would be considered newer even if object has been modified in absence
- fixed mass calculation in docking situations
- fixed build orientation arrow
- fixed bug where docking zone is not drawn in build-mode when the ship itself is docked
- fixed possible crash in shutdown
- fixed shield hit effect
- home-base protection now extends to all docked ships (e.g. if faction permission block was used)
- ship indicators of docked ships are now again displayed in structure (in build mode)
- fixed missile sector positioning for new system
- immensely decreased lag from loading in big structures with a lot of usable blocks (weapons etc) by first eliminating an unnecessary network transmission, using a better data structure in the grouping algorithm, and removing an unefficient exception
- changed faction_create to include name of initial member, and added faction_create_as to also include faction Id to create faction as (useful when importing sectors)
- fixed several bugs that might cause a crash of the lighting threads
- fixed synchronization bug that lead to crash or other glitches when re-requesting segments (missile battles)
- Turret/ship AI no longer engages targets in invisibility mode
- fixed freeze on faulty transformation orientation
- fixed narrow-octree invalidation by repeatedly removing the same position
- AI now shoots on turrets
- improved AI engagement behavior
- improved menu vs in-game activity behavior
- reorganized initial items a bit and added helmet
- fixed exploding block update not triggering
- fixed stations not being collectible by faction members
- faction owned blocks can now be activated by docking beam of a ship without a faction signature, but being flown by the pilot of that faction
- fixed missile head graphics
- increased maximal number of missile trails
- further decreased lag from missiles
- improved long term performance of server by fixing a bug that could possibly prevent sector from unloading (even if players are no longer present)
- fixed clustering of shops (for newly generated sectors)
- implemented personal enemies of factions
- made personal enemies of factions consistent
- added GUI options for personal enemies of factions consistent. Editable if the rank of the faction member has permission to edit
- attack on hostile action now will add a non-faction-player to the personal enemies, and no longer consider all neutrals enemies
- fixed naming in AI dialog
- added option to rehire/discharge AI by dialog
- filled in some shop employee dialog
- implemented buttons light up on mouse over (used in dialog options to make navigation easier on the eyes)
- fixed AI exception (caused by another bugfix)
- used chance for migration to set all 3-sided (e.g. grass patches) blocks as TOP orientation in preparation for them to be able to be rotated in any direction
- fixed texure bug for some graphics cards (mac)
- fixed possible server block service hang-up when placing auto-connected blocks like disintegrator (ty tominosama)
- implemented texture compression
- improved graphics memory cleanup function
- improved physics performance by removing lag from removing calculation after microscopic fluctuations of object positions
- fixed crash from pressing tab on some dialog text entries
- added player name auto-complete to text input panels that require player names
- added advanced options to deal with possible graphics driver bugs (compression, and mipmap options)
- improved synchronization of server segment requests to hopefully get rid of physical chunk errors (those that won't go away after restart and cache clear)
- fixed migration crash when trying to migrate block type that is not known in the block config (custom blocks)
- compressed inventory-changed transmission for factory blocks to be more scalable
- fixed AI error (FSMException) on servers
- fixed bug that would cause crash on startup (ResourceException)
- improved segment sorter to be more thread safe
- fixed bug where player character could be considered neutral for a short time. player character now set faction id to player's faction id before spawning
- fixed bug where sector information would not be updated correctly in sql database (causing protection mode of sector not to save, re-spawning asteroids etc)
- added mining effect
- improved responsiveness of all beams
- hopefully fixed crash from sorting factions by relation in teh faction hub panel
- implemented procedurally generated background (still a little slow, can be turned on in the in-game options)
- fixed crash on loading shop AI skin (NullPointer)
- inserted more tests to find a specific bug causing a gl exception
- switched to regular textures for better compression and mipmap handling (some graphics card threw OUT_OF_MEMORY, despite having plenty on using compressed texture arrays)
- decreased texture size of ultra quality shadows (not noticeable, but cuts memory consumption in half)
- implemented adapting procedural backgrounds in different qualities (resolution. Please note that some graphics cards don't support 4096)
- fixed NullPointer crash when joining multiplayer in the vicinity of an NPC player
- fixed jiggling when traveling in docked ship or turret
- slightly optimized object position transmission to reduce data that has to be sent on update
- fixed crash when system tries to draw floating item that doesn't exist
- added (probably) final vertex component mask for cube shader
- added correct normals for wedges
- added correct normals for corners
- added correct normals for penta
- added correct normals for tetra
- fixed GL_INVALID_OPERATION Error happening in build mode. Happened when using multi-sampled frame buffers and reading pixels from it (in advanced build mode to check for mouse position)
- improved lighting
- reduced green color in procedural backgrounds
- implemented admin-command "/delay_save seconds" for server admins to safely create backups. Make sure to wait a bit after using this command since in case there are running write requests, they will continue to run and finish.
- (/delay_save 0 will turn the delay off immediately)
- fixed possible server crash on invalid docking update
- fixed object being declared as modified blueprint after it already has fully spawned (and then blocks where added afterwards)
- fixed gravity bug where player would already be in velocity when activating the gravity block
- fixed gravity (pointing somewhere other than downwards) warping the player to a seemingly random position
- fixed glitching of active object when astronaut gets suddenly thrown out of an object(e.g. /destroy_entity was used on a ship with a player in it)
- in case of emergency shutdown (forced termination from outside by an admin) the database will no longer attempt to compact itself (as that may under rare circumstances cause corruption)
- fixed gravity bug where player would suddenly be put out of gravity. Also made some gravity blocks look like they weren't working at all (since it was instantly stopped). Gravity lifts should now finally be usable
- added gradient to advanced build mode block preview
- added extra alpha for block preview in advanced build mode, so that blocks that are completely transparent cans till be easily seen
- improved lighting for back-shading being better handled with block light
- fixed shadow not working in the last version
- improved lighting for block light to illuminate shadowed areas better
- fixed crash in sun sectors with shadows (light was at zero pos)
- included tolerance for modified blueprints (server.cfg). New version blueprints should be more resilient against falsely triggering blueprint modification. Still, please make sure the object is fully loaded before saving a blueprint
- kupu updated normal maps further
- fixed build box flickering when trying to build in build mode on a moving object
- fixed bug in recursive price calculation of blueprints+docked
- fixed normal/bump mapping (some wrong vectors caused the lighting to change, and the bump look wrong)
- improved self-illumination of light source blocks
- fixed shaders for some graphics card (ATI (mostly mac ones))
- fixed further 'vector-zero-length' exception
- when GUI is disabled, indicators in build mode are no longer drawn
- settings no longer reset to default if one setting is no longer valid
- using bitwise operations on shader for graphics cards that support them (small fps boost for those cards)
- fixed crash when more then one item is sold to a player shop at a price of 0 credits (divide by zero)
- fixed crash when recording screenshot or give with frame-buffers and anti-aliasing activated (still minor bug with white background on screenshot)
- improved error response when shadows are not supported on a graphics cards
- fixed crash when in rotating cam mode and changing sectors
- fixed occasional crash in cubatom panel when dragging from hotbar
- put in some extra debug info to find the GL_INVALID_OPERATION that is happening on some cards
- fixed one more GL_INVALID_OPERATION crash on 100% (on some graphics cards)
- reduced memory consumption in several places
- decreased consumption from lots of small groups of usable blocks
- decreased consumption from control structure
- improved control structure performance by using unified indexing data structure a lot better to handle in collections
- fixed light shining through closed doors
- implemented "lighten" mode for advanced build mode (makes blocks brighter)
- fixed "NullPointerException: Exception: REQUESTED TYPE 0 IS NULL" client crash (happened when a block-connection came in too late after the source was already removed)
- improved bulk-block-connection function to be more scalable and faster
- (hopefully) fixed [KINEMATICCONTROLLER][UPDATEACTION] Exception possibly crashing the server on sector change in some situations
- fixed faction protection from personal salvage beam
- fixed NullPointer from AI trying to walk on object that no longer exists
- fixed sudden change of background when changing systems (needs testing)
- fixed huge video memory consumption when using high res procedural backgrounds with multi-sample (couldn't even start on powerful machines)
- fixed mouse inversion when control is pressed
- fixed crash when trying to talk to an NPC that has no affinity
- fixed crash when using texture arrays
- fixed server crash when update for a not existing network object comes in (after the object was deleted). It's normally already caught, but the debug message actually caused the crash in some situations
- fixed server crash/freeze when a hacked old blueprint was uploaded to a server
- added security that on other positions so the same method of getting the server to freeze can't be used there
- fixed chunk error problem
- added separate selling price and buying price for every shop
- implemented abstract controller support
- implemented controller custom axis support
- implemented controller custom button support
- implemented abstract system to apply the same system as for keyboard to any controller
- implemented controller button duplication check
- implemented controller saving
- implemented controller loading
- implemented individual controller axis sensivity
- improved GUI a bit: no more moving when keys pressed in some menus; no more firing weapons when deactivating menus (might still be some menus missing to be included)
- prevented OS from giving initial value for controllers (rotation when starting until controller touched)
- integrated controller into camera system
- implemented remote debug system to check on raw server positions
- removed sector physics mirroring from sectors to a planet and vice versa (physics glitches possible, but will take care of possible heavy lag and random warps, until better solution found)
- structure panel now available for any usable structure
- fixed some missiles not showing up
- fixed GUI texture compression (washed out GUI textures)
- fixed a accuracy problem in segment sorting (small alpha errors on transparent blocks can still occur)
- removed unaffected segments within missile blast radius from missile block update (missile performance)
- missile damage now sends segment update directly instead of issuing re-requests on client (faster update when missile hits & better synchronization)
- fixed possible bug in updating whole segments when missiles hit (collections (ship properties) not updating correctly)
- implemented system in the pre-light calculation system to handle angles
- fixed bug where on server restart an entry would reset to being enemy usable even it was turned off before
- optimization in several areas (network protocol, group calculation, light calculation)
- fixed another bug in segment sorting (distance was not calculated to the middle but the corner)
- moved segment/chunk impact to synchronized chunk revalidating instead of doing it threaded (no gain in doing that except synch issues). This will hopefully take care of a lot sources of bug, like the mass being calculated wrong and several others that could happen absolutely randomly
- fixed minor source of bugs: initially newly loaded objects had no way to know their sector for one update when the object was updated before the data was inserted as a network object. Bypassing that now for the server to check directly
- right mouse click on docking beam now ignores activatable blocks (doors)
- maxDrawnSegments can now be changed ingame without problems, and with correct cleaning up (problem was always to get all threads to either finish or stop at a point where they don't currently own mesh themselves)
- categorized and reordered options GUI
- fixed a cause of server disconnects (tried to change an object on server that no longer existed. Could happen when the server removed the object and the change didn't yet reach the client)
- fixed crash when changing options
- further optimized lighting calculations for faster segment(chunk) loading
- fixed server crash when replacing only empty segment on a structure
- fixed server NullPointer when projectiles fly in inactive sector
- increased diffuse lighting
- fixed data problem when generating new planets (discovered due to the synch update of earlier patch)
- optimized block collection calculation to faster ditch requested updates from removed objects in the queue
- new drawing optimization should improve display performance of blocks by ~10% (depending on graphics card/driver. Fallback available to switch and customize optimization) using bigger Vertex Buffer Objects and dynamically allocating and filling them reduces costly openGL calls since multiple chunks can be drawn from the same buffer context (drawback: more video RAM overhead due to fragmentation, but does not scale)
- "file does not exist" should no longer spam log on multiplayer (skin files that cannot be sent will stop trying after the 5th time)
- inventory slot merge may be fixed (synchronization issue)
- fixed NPC-Command menu not working when exiting ship in build mode
- fixed personal enemies of faction not working
- personal shop buy/sell permission now working
- fixed bug with collection not updating on block removal (e.g. weapons keep working even if all the weapon blocks got removed or shot off)
- faction members can now salvage faction home in astronaut mode
- fixed possible deadlock (server freeze) when writing universe data
- fixed bug where both inventory stacks of the same type would vanish when trying to merge and the sum of both exceeds the maximum stack size
- possible fix for frame-buffer error happening on some hardware when using shadows
- fixed another inventory merge bug (when changing slots while server is still subtracting blocks from building)
- personal shop permission should now cover all shopping transactions
- fixed AI not shooting at objects
- fixed serverAI transmission not being in synch (lead to heavy rubberbanding and server/client position differences of AI ships)
- fixed permissions to edit AI config (admins can now edit objects by selecting them and open the AI control panel)
- fixed possible source for segment(chunk) errors: server took re-requests of segments which hints at a synch error
- fixed serious server bug, where in case a sector was loaded while saving (inactive sector becomes active again), there could be a several bugs (foremost docked ships undocking without reason)
- fixed bug where docked object were not hittable by missiles
- fixed eject from enterable block when block gets destroyed
- fixed core overheating timer when core destroyed by missile
- added another texture pack from kupu
- added some character model fixes from omni
- reactivated head tilting (only without helmet)
- fixed bug in animation structure where deactivated animation would prevent other animations