sorry for the long time without an update. There was a lot of smaller technical stuff, as well as some research and other projects which made it hard to talk about specific things. What I can do, however, is give you a summary about the upcoming items we'll be working on for the Universe update in the following months:
- Graphics Engine Update
- Switch to deferred rendering for dynamic lighting: Deferred rendering will greatly increase the quality of rendering as it allows for a lot more light sources than forward rendering. The nice thing about this is that it will be possible to use the prebaked information as part of the deferred rendering to simulate ambient occlusion. And since even deferred rendering has limits in terms of light amount (around 50-100 light sources), we can use the prebaked system in a LoD system being able to still show unlimited amount of lights without slowdown.
- An all new backwards LoD system that will decrease the number of polygons very significantly.
- Fast treebased occlusion culling, so areas that wouldn't be visible can be discarded before drawing.
- Block container revamp
- This is basically refactoring how block types, rotations, etc are handled. This will make it much easier to deal with bugs and to introduce new blocks.
- Block Engine Update
- The load system for sectors will be revamped. The goal is to preload data more efficiently, so that sector changes would be virtually unnoticable.
- Saving and the block save structure will be revamped to be more efficient and safer (more guards against data loss/corruption, as well as features to prevent newer players from losing work due to a ship getting blown up (automatic versioned save feature on ships))
- Moving all block data to direct memory, as well as possibly moving more expensive functions to native c++ code (lighting calculation, saving/loading)
- Audio System
- Research completed on best designs. System will make it possible to live edit sound effects ingame
- Particle System
- AI Collision System
- AI LoD (Collision sphere sweeping)
- Crowd AI (AI positioning without fighting over space)
- AI behavior layering (macro actions like getting to a position in the universe and micro like fighting against another ship)
- AI mission system
- AI behavior
- Universe recreation
- New structure
- Hirachial Region System
- Region ownership system
- New NPC structure
- overall NPC behavior
- Place of Interest creation
- Key area creation
- Area specification
- New stellar objects
- New planet injection
- Difficulty flow (for single player)
- Event System
- Void System
- New structure
- Population system
- Low level NPC population
- Population resources
I'll be talking more about each item during and after it is implemented (some of which are already partly done)
Thanks you for playing StarMade,
- The Schine Team
- Graphics Engine Update
- Fixed cargo permissions not loading correctly
- Fixed issue for beams that would apply shield effect to damage even if shield is down
- Fixed several crashes
- Added new stabilizer bonus version (currently inactive in blockbehavior) that makes bonus depend on angle between stabilizers instead of dimensions
- Fixed loading issue that would not let some machines connect to the local server
(more fixes coming soon)
- Logic toggle trigger to activate beams didn't work correctly and timed out on
- Factory on/off switch didn't synch (and several other similar issues)
- Astronaut not mining ore/shards on first beam hit
here is a small feature and fix update. There will be several of those along the universe update roadmap. Durking the update, we'll be working ~1 week per month on fixes and small features (especially for the rule system), while spending the rest of the time on the universe update.
Universe update Roadmap News: On the universe update, we are currently in the middle of GUI scaling, and close to starting to implement the sound system.
This update features a lot of new conditions and actions. The system now supports rules of different types, depending on the target (players, factions, sectors, etc). Actions are transferable to other entities: e.g. if condition on a ship is true, you can execute a player action for all players on that ship.
Here is the full changelog:
- added minimize button to advanced build mode panels on the right
- Player Mod Faction Points
- Player Set Faction Points
- Entity Mod Faction Points
- Entity Set Faction Points
- DateTime fixes
- Entity Weekly duration
- Action Bridges
- Entity -> Sector / Player / Faction
- Sector -> Entities / Players / Factions
- Player -> Sector / entered Entity / Faction
- Faction -> Players
- 'Entity system claimed by' condition
- player warp to sector action
- player set credits action
- player mod credits action
- player kick action
- player ban action
- player in sector cond
- player say cond (regexp)
- player send message action
- player last joined condition
- player kick out of ship action
- player kill action
- segment controller in sector range condition
- all faction condition parameters now range
- sector chmod condition
- sector range condition
- sector contains entity count condition
- sector chmod action
- sector admin command action
- Added inverse conditions (condition group feature)
- recurring actions
- player: add credits over time
- player: add blocks
- player: add blocks over time
- fixed missing integrity triggers
- fixed beams not active on server when using logic to toggle them (logic salvage beam not working)
- fixed linear reactor level calcs
- fixed activatable modules not synching correctly (cloak drive)
- fixed torch damaging stick shops
- fixed error that would respawn Asteroids over and over if they were moved
- blockBehaviorConfig now has global defense of blocks based on type (shield, armor, block) additionally to the previous individual block effect defense (which would be a mess to adjust)
Note: it's now possible to set defense value for all block types depending on if it's armor, normal or shield that is hit. The defense value is put against the offense value of the weapon. This now enables a balance where some weapons can be better/worse against shield/armor/normal
- beams now use calculated armor values for damage reduction
Note: Beams now do damage calculations in a similat way as cannons in that the armor depth is calculated upon hitting a surface. The damage of the beam is reduced depending on armor thickness. Values have been added to config.
- General Balance Note: The current config values for the new balance additions are currently experimental and in no way final
Thank you for playing StarMade,
- The schine team
This will be the first of hopefully many Roadmap updates for the Universe Update.
The universe update requires a lot of groundwork, and while there have been already some things prepared and done over the last year, there is still a lot left as well as fitting the pieces together.
First of all, let me give you a rough outline of the timeline of the Universe update.
The update is going to be comprised of three Phases. Each phase primarily consists of similar types of updates.
- Phase #1: Library upgrades, basic system refactoring and basic system enhancements
- Phase #2: Engine upgrades and System optimization
- Phase #3: Universe redesign and content creation
In the following, I will talk about what has already been done, and what the next steps are.
Upgrade to Java 11
There are several reasons for this: Java 11 is is not only more optimized on its own, it also provides new functions for cleaner code, game optimizations, as well as better compatibility. Furthermore, it is future proof, especially since a lot of newer versions of 3rd party libraries the game uses rely on a newer version of java. Another nice thing about it is that the runtime provided can be customized, meaning that we can deploy the game with a much smaller customized package that only contains the modules needed to run the game (and of course you would never have to install java to play the game).
Upgrade other major libraries
Major libraries like hlsql (for databases) have been upgraded with new versions and the code had been refactored to support them.
Upgrade to Lwjgl 3
Not only does lwjgl provide a closer interface to the hardware, it also comes with GLFW:
a universal interface, which is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop. It provides a simple API for creating windows, contexts and surfaces, receiving input and events.
GLFW is written in C and has native support for Windows, macOS and many Unix-like systems using the X Window System, such as Linux and FreeBSD.
Most of the upgrade work was already done in the background over the last year, so this major undertaking didn’t take as much time.
One major part of upgrading was also implementing some functionality (like text render management) that the previous version of lwjgl provided, since the new version is a lot less bloated, but instead a lot more modular and slick.
Another major advantage of lwjgl is that it comes with a lot of add-on libraries that can potentially optimize starmade or create new features like a faster compression lib. Also, Vulcan is fully available to us now.
Furthermore, there is a full library for Steamworks, which will make the planned implementation of steam functions (join game, etc) a lot faster and easier.
Redesigning the Input System
Status: DONE <- We are here
Since GLFW uses a whole different way to interface with input (keyboard, mouse, joysticks), I took the opportunity to rewrite StarMade’s input system to make it a lot more versatile, more responsive, and a lot less bug prone. The main advantage from the update, however, is that now every action in the game can be assigned to any device and button (including mouse wheel). This means firing with the keyboard, or switching slots with a joystick is now easily possible. The system can also handle modifier keys (key combinations), as well as any number of alternative inputs for an action.
Rest of Phase #1
- Integrate new lwjgl3 libs
- Steamworks (join game, achievements, etc, workshop support probably later)
- GUI Scaling (100%, 150%, 200%) to cover everything from 1k to 4k
- Sound System (and a sound manager)
- There might be a few steps still in Phase #1. Time wise I hope to be done with this first phase somewhere in February.
Phase #2 is comprised of engine upgrades and system optimizations. There are a lot of plan to speed up block loading as well as block drawing by possibly a few magnitudes. This is necessary not only, but especially for the new planets.
This phase will also contain moving more things than ever to c++ code. I’m planning to move the physics to c++ fully, which will also natively support multiprocessor/threading.
Additionally, I’ll put the lighting calculations on c++ to speed up chunk graphics generation. With this, all processor heavy functions will be running in native c++, while maintaining the ease of project management that java provides.
On top of that, the graphics engine will be upgraded with a lot of functionality. Starting with simplifying a lot of block graphics data management, the main upgrade would be a new pipeline containing deferred rendering and dynamic lighting. Since dynamic lighting on its own never really works for voxel games of this scale, it will be built to be used in tandem with the baked lighting. This means that everything up close (or further away depending on the power of the graphics card) will be lit dynamically, meaning that light will look a lot better as well as affect other objects (cross entity lighting), while light in far away areas will be used the baked lighting as an approximation giving us optimal performance mixed with much better-looking visuals.
Another upgrade in phase #2 will be the content loader for sectors. If everything goes to plan, a sector switch will hopefully be virtually undetectable by a player.
This phase will also contain a rewrite of all the AI functions (might be moved to phase 3)
I will talk more in detail about Phase #2 when we get there.
TimeLine: This is in no way certain but I hope to finish with this phase in the first half of 2019.
The actual content phase. After phase #1 and #2, the engine should be in a great state. This phase includes redesigning the whole universe to a more condensed playing field filled with content and gameplay.
I can’t reveal too much about it yet since there are still some uncertain details that depend on the prior phases, but I will talk a lot more about more about these things in the updates during and after phase #2.
I hope that this will give you a nice overview of the current status of development. Everyone at Schine will continue to work at full power to make this the defining update to StarMade worthy of giving it the subtitle: StarMade 2020.
Thanks for playing StarMade,
- The Schine team
- Fixed factory setting on button/activator recipes
- Fixed physics bug that would lock the player character in place upon touching blocks with certain properties
new conditions/rules in dev build:
- Duration Active
- Under Attack
- Same Sector Contains
- Adj. Sector Contains
- Same System Contains
- Is In Fleet
- Is In Specific Faction
- Is AI Active
- Set Faction
- Activate AI
- Run Admin Command
- draw-block-connection is now a flag in the block config (and no longer active for small buttons)
- Several minor crash fixes
- Added recipes for small button/activator
- Fixed faction rank permission resetting (didn't happen in small tests anymore, but due to the nature of the bug happening more on servers with 5+ people on, I can't confirm the fix 100% yet)
- Fix for servers with custom config coming up (not being able to move astronaut, crashes and other various issues this bug caused)
- Fix for torch beam (didn't do enough damage to compensate for the fullhp encoding (has to do at least one byte of damage)
- Fixed possible crash when applying rules when entities apply changes at the same time
- Fixed rail logic so only adjacent activation and basic button activate (still any logic block can be connected with c+v) (fix of hotfix#1 didn't apply yet)
- Fixed crash in rule dialog (checkbox cleanup when the field wasn't initialized yet)
- Fixed error when spawning ships from blueprint items.
- Fixed missing icons for new blocks
- Fixed rail logic so only adjacent activation and basic button activate (still any logic block can be connected with c+v)
- Fixed manual turret aim to be off by default to fix AI mobs not firing their turrets
A new update is out. This will be the last major update before going into the heavy codebase changes of the Universe update. This will include updating lwjgl, java, and a lot of other things to their latest stable major releases, so a lot of refactoring has to be done. During this period until the universe update there will still be updates for the current versions along the way, but they will be mostly minor features, fixes and balance changes, as we will fully focus on the universe update from here.
As said in the latest dev build, chasing a balance that would satisfy all types of players is nearly impossible, so the vanilla game is going to focus on the game as I envision it, while at the same time creating features so players can play the game like they want it to. Not only does this save a lot of time in development in the long run it also removes a lot of issues with balance since in the end it is subjective to the type of player.
The rule system is essentially the beginning of an in-game modding system. It is built very general from the ground up and will be able to support any type of condition/action imaginable in the game. It comes with a full GUI in the main menu and in-game, which is capable of uploading and applying changes automatically while in-game.
You can also import and export any amount of rules. This enables server admins to quickly setup a certain type of server without having to do all the configuration themselves. They can download and import anything they need.
This update focused on getting the rule system to run. It also focused on making rules as performant as possible, which means that a rule is only checked if any parameter of a condition for the targeted object changes. It has a fair number of conditions and actions already present but there will be a LOT more to add along the way.
Eventually the rules system will possibly also be used to create quests and other gameplay elements, so it can already be considered a very small part of the universe update in a way.
Tracking & Marking
With rules there is now also a way for admins to track ships. Conditions can be used to place a tracker on ships. Admins can also now mark ships. This is mainly for admins to manually check ships that trigger their conditions.
New Admin commands:
- player_get_block_amount (fixed target inventory)
(all commands also work with *_UID)
New 3D Assets
Saber and Kupu finished some beautiful new 3D assets. There have been slight tweaks to existing model unwraps and their textures, and many new additions. New models include (from left to right):
- Grate Wedge (previous Grate Wedge has been renamed to Grate Slope)
- Metal Corner and Metal Bar
- Beacon and Colored Light Corners and Light Bars
- Light Rods
- Paint Cans and Resource Capsules
- Small Button and Small Activator
- Red, Orange, Green Consoles and Console Inner and Outer Corners
We also improved the block editor to make it a lot easier to import and create new 3D assets.
Additionally, some 3D assets now have different states when they are activated. We will expand that eventually to full animations on blocks for actions or just them being in idle state. This means you will be able to place animated modules on your ship.
*Paint Cans and Resource Capsules have had their default orientation rotated 90 degrees so they place vertically like the Pipe model. These will need to be replaced in old builds.*
3D Collision Meshes
3D assets now have full detail collision detection for astronauts as well as small enough projectiles/beams. This means you can now even shoot between the bars of grates.
Two major changes to balance are:
- Stabilization beam between reactor and stabilizers is removed
- Integrity is removed
However, with the rules system both of these functions can be restored.
We’re currently working with community members on the Quickfire discord (a community driven initiative to help balance StarMade) to bring the games balance into a good state. The first step of doing that was to fix some essential bugs as well as provide more config capabilities and mechanics.
Here are a few major and some minor changes to the balance already:
- Removed integrity (can be re-added by rules)
- Remove reactor stabilization beam (can be re-added by rules)
- increased cannon speed from 25x to 40x server max speed
- Increased armor bonus from 0.1 to 0.5 (bonus added on armor thickness)
- Halved vertical cursor recoil
- Beam damage reduction based on armor value of the block hit. 20% of armor value of block reduced per tick. (config option)
- 2.5% flat cannon damage reduced if armor if penetrated (config option)
- Config Option to add additional damage reduction based on armor thickness (currently unused)
There will likely be a lot more once the balance proposal is worked through. I have to disclaim though that I can’t promise that everything proposed will make it in.
- Rule System
- Full rule system with condition and actions to affect entities
- Cascading Condition groups
- Global rule assignment
- Individual rule assignment
- Full config export/import
- Export/import of individual rulesets
- Full GUI in ‘tools’ main menu
- Full GUI ingame with live synch feature
- New ingame file browser
- Added basic conditions (more to come)
- Added basic actions (more to come)
- Tracking feature
- fixed advanced build mode raytrace bug where an imprecise physics test would sometimes select the wrong blocks
- fixed physics bug where cannon shots would sometimes skip a chunk and do damage inside a structure
- 3D assets can now use any existing shape to be represented
- 3D assets can now use any arbitrary meshes as physics mesh to be represented
- 3D assets can now have activated state meshes
- Improved pipeline for mesh import with the block editor
- turrets will no longer be able to shoot through other docked entities (they won’t do damage to their docks)
- improved fleet formation by refreshing ship sizes more frequently and taking ship size more into account for spacing between ships
- Fixed Fleet not slowing down after move order (edited)
- Added delay between weapon switches of AI. delay only applies to within type (from a cannon computer to another cannon computer etc.)
- Added ai_weapon_switch_delay server config and admin command.
- added effect SHIELD_HOTSPOT_RECHARGE_MODE to set to rely on recharge instead of capacity
- added and exposed formula switching for power reactor
- player_get_block_amount fixed target inventory
- all commands with *_UID
- docked pull/push permission now saved in blueprint (edited)
- server.cfg option to allow factories on ships (ALLOW_FACTORY_ON_SHIPS)
- beacon light now is a flag in the block config
- logic block is now a flag in the block config
- updated loading screen tips to reflect game changes
- Refactoring work
- Increase missile tickrate to be more precise
- Added and adapted server config missile target prediction value to prevent missiles from going after a target’s previous position. Added admin command /missile_target_prediction <ticks>. Make sure no missiles are spawned when using or those missiles might get confused.
- Fixed race gates power usage
- Fixed ‘draw beams’ game option
- Self cleaning “waiting for for entities to dock” message for the case that the object isn’t in the db anymore. Reduced frequency of message for all other cases
- Can now load blueprints directly onto docks
- Server.cfg option to remove need to build shipyard structure (SHIPYARD_IGNORE_STRUCTURE)
- Reduced roll speed to balance between rotational axis (more turn speed balance will come)
- Orange and Blue Light Block color adjusted to differentiate from Yellow and Teal
- AI ships now auto charge stealth drive (should fix fleet cloak/uncloak/jam)
Balance (all points are non final and might still change)
- Removed integrity (can be re-added by rules)
- Remove reactor stabilization beam (can be re-added by rules)
- Balance: increased cannon speed from 25x to 40x server max speed
- Balance: Increased armor bonus from 0.1 to 0.5 (bonus added on armor thickness)
- Balance: Halved vertical cursor recoil
- Balance: Beam damage reduction based on armor value of the block hit. 20% of armor value of block reduced per tick. (config option)
- Balance: 2.5% flat cannon damage reduced if armor if penetrated (config option)
- Balance: Config Option to add additional damage reduction based on armor thickness (currently unused)
If you find any issue please let us know in our discord and we will get get right into hotfixing.
We wish you an awesome holidays and a very happy new year,
Thank you for playing StarMade,
- The Schine Team
Since the weapon update there have been a lot of smaller updates along the way which fixed several issues and added smaller features. For this one, we wanted to make a seperate release announcement for some bigger features as well as more bug fixes.
You now have have another tab on the left side of your advanced build mode. This can be used for quickly building up and managing a ship. It has all the previously missing information for weapons and other modules. There is a quick overview of what blocks you need and how many you have for each ship system. The build button will automatically put the block in your hotbar and select it to build. You can also choose to add blocks for an existing weapon, which selects the computer and puts the module into your hotbar.
In the future, this mode is going to be enhanced to be a non-intrusive tutorial for new players. When placing a ship core the buttons will light up to lead the players on what modules to build and how to build them. This eliminates the need to watch lengthy non-interactive videos or having to check on the wiki.
Build Mode Camera Drones
A long requested feature. Players can now be seen when in build mode. They will each fly in a small camera drone (made by Saber). These drones can also be seen if watching outside of build mode.
The drones come equipped with a flashlight (toggles on ‘P’ by default or in the display setting in adv. Build mode), as well as the option to display the name of the player below the drone.
Adjustable Cockpit view
Another long requested feature. It is now possible to adjust the view of your cockpit blocks individually. Just press ‘P’ while in a cockpit in flight mode to unlock the camera and freely move it. Press ‘P’ again to lock the new view in place. This mode is fully persistent, meaning it will not only save between sessions and apply for other players that fly your ship, it will also save within the blueprint.
Keep in mind that this mode is currently still a bit experimental, as there are some minor issues and more features coming for this. One of those features will be delayed camera movement to make flying a lot more fun all around, as well as HUD updates. There will be fixes to handle differently orientated cockpit blocks better as well as other fixes for the “aim at” check.
Block Editor Model Tab
The block editor has been cleaned up to make block editing a lot faster and easier.
An all new tab has been added for the Block Editor. This tab contains all information and management for the models in the game. This will speed up development and integration of models considerably in the future, especially for the universe update.
Kupu completed specular mapping, made a unique texture for the Area Trigger and the Cargo Space, Green Forcefield, as well as the Green Cascade deco block.
Logic will now only transmit the end state of the blocks. Fast logic clocks caused over 500 state changes per update, which was not only a performance drain but also bandwidth.
To compensate for the necessity of having fast clocks, modules now stay active when a logic block is connected that was switched to active. Currently the activity will reset if the entity unloads, in which case the logic block would have to be turned off and on again. Persistence for that will be added in the next update.
Pin AI Targets
Pilots can now specify (pin) targets for AI targeting. When having a target selected, press ‘x’ in flight mode to specify this target for AI fire, while the pilot can select a different entity.
The more important bugfixes will be listed first.
Possible Fix for missing/reverted chunks
This bug seems to be finally fixed (can’t call it 100% fixed yet without long term experience on production, since we had no way of reproducing it). The bug was possibly caused by save events marking chunks as not validated on the server, but at the same time not queuing them for validation cause of another event at the same time. This caused those chunks to not be saved in that session.
Fixed all crashes due to malformed translation Strings
If there was an error in a translation string format (e.g. using malformed arguments), the game would previously crash. These bugs would be fairly hard to track down since they would only happen in that specific language. The system has now been updated to compensate for those bugs and automatically replace the string with an error.
Fixed pirate/tg spawning when attacking a station
Fix for missing Area Trigger icon, + icons for new blocks.
Custom texture for cargo block in build mode
Fix for cargo draw issues (on transparent blocks)
Torch beam damage upped from 1 to 4
Fixed nullpointer on UI when active reactor changes
Fixed bug that would prevent newly spawned planets and asteroids from being saved when edited (existing ones had no problem).
Removed popup when opening storage
Added more info in the build mode entity info
Temporary shield disable now affects whole structure incl. all docks, instead of just the entity it was triggered on.
Fixed crash after setting the "Pull up to" value of Cargo to 0.
Turn rate config values exposed and explained in blockBehaviorConfig
Fixed custom block texture handling
Fixes map drawing
Fixes crash when changing certain graphics settings ingame.
Fixes shield message spam
Fixed client crash when shipyard anchor was removed when a design was loaded
We will release further fix and cleanup updates while we are working on the universe update. If you have an issue a request, please join the discord. We’re always ready to add smaller features as well as handle bugs when I get the necessary information.
Thank you for playing StarMade,
The Schine Team