StarMade v0.305.11 - Catalog Tags and PSA
This update adds tagging and better searching for blueprints and templates, overhauls how shipyards report problems, and brings a large round of performance and memory improvements, balance tweaks, and bug fixes.
Blueprint & Template Tags
Blueprints and templates can now be tagged, color-coded and searched by tag, making large catalogs much easier to find your way around.
Adding Tags
- In-game catalog: a new TAGS button on an expanded blueprint entry (owner or admin only).
- Main menu Catalog Manager: a new EDIT TAGS button on both the Blueprints and Templates tabs.
- Build mode template panel: a new Edit Template button lets you rename a template and edit its tags in one window.
- Tags are entered as a comma-separated list. Every edit window also shows all existing tags as clickable chips:
- Left-click a chip's name to add that tag.
- Left-click its color swatch to change the tag's color.
- Right-click a chip to delete that tag everywhere.
- Tags are shown as colored chips in a new, sortable Tags column in the in-game catalog and the main menu lists.
Tag Colors
- Tag colors are set with a color picker (including a hex #RRGGBB field) and apply to every entry that uses that tag.
- On servers, only admins or players who own a catalog blueprint using that tag can change its color.
Searching & Grouping
- The in-game catalog search is now SEARCH BY NAME / TAGS.
- The main menu lists and the build mode template dropdown accept several space-separated terms. Each term must match either the name or a tag.
- A new Group by Classification toggle on the in-game Available and Admin tabs, and on the main menu Blueprints tab. Groups can be collapsed and expanded.
Other Catalog & Template Changes
- Rename (owner or admin): renames a blueprint on the server. Ratings and tags carry over.
- Class (owner or admin): change a blueprint's classification from a dropdown.
- New Turret ship classification.
- Build mode now has Delete Template (with confirmation) alongside Edit Template.
- Admins can delete a tag from every catalog blueprint at once.
- Blueprint tags and colors are stored on the server ( blueprints/index.json ) and synced to all players. Template tags are stored locally ( templates/index.json ). Losing either file only loses the tags, never the blueprints or templates themselves.
Shipyards
Shipyards have received a large round of fixes, and they now tell you why something went wrong instead of silently greying out every order.
Fixes
- Shipyards no longer freeze while a design loads. Before, the shipyard waited for the whole station, plus everything docked to it, to finish loading. With very large designs or a stuck dock that never happened, which left every order greyed out and the design impossible to unload. The shipyard now only waits for the design itself. If the design still hasn't finished loading after 30 seconds, the shipyard carries on and warns you to check it before building.
- Designs no longer get deleted after a restart. A shipyard that had built a real ship could remember its old design ID. On reload, that design re-docked onto the occupied anchor, collided with the ship and was permanently deleted.
- "Unload Design" is available again for designs that no longer fit. Previously the shipyard stopped sending its state to the client in this situation, so the button never appeared.
- Oversized designs are now unloaded automatically after continuously failing the fit check for a short grace period. Before, they stayed loaded while every order was greyed out. Loading the same oversized design again is refused immediately until the shipyard structure changes.
- The shipyard's overlap check was meant to run every 600ms but was running every tick. It now runs on schedule, which saves server time.
- "Blueprint saved!" is now shown as an info message instead of an error.
Better Shipyard Feedback
- Shipyard messages now reach whoever placed the order, even if they have flown away. The message is prefixed with the shipyard's name and position.
- The Loaded Entity bar in the shipyard panel shows exactly why a design doesn't fit, e.g. too large: 3 blocks past +Z, 1 blocks past -Z .
- A new Last Failure row in the shipyard panel shows the most recent failure and how long ago it happened. Players who were offline when it happened can still see it.
- Overlap errors now name the structure that's in the way: Removing Design because it overlaps with <name> .
- Failure markers: when a shipyard fails, it shows wireframes for 30 seconds: the build volume (amber), the offending design or blocking structure (red), and the parts that stick out (orange), plus a floating label with the message.
- Admin debug overlay: admins can hold the player list key F1 and press F10 to open the physics debug view. It now also shows every shipyard in the sector: its build volume, each unit group (blue when valid, pink when broken), the core anchor, a live fit test, and a stats label with the shipyard's state, power, size, fit and last failure.
- Every shipyard failure is also written to the server log as [noparse][SERVER][SHIPYARD][FAILURE]
[/noparse].
New Server Settings
- SHIPYARD_REFUSE_OVERSIZED_DESIGNS (default true ): unloads designs that don't fit the shipyard's build volume. If designs that clearly fit are being rejected, turn this off and please report it.
- SHIPYARD_OVERSIZED_GRACE_MS (default 3000 ): how long a design must keep measuring as too large before it gets unloaded. This stops a design from being unloaded because of a bad reading while it is still docking.
Gameplay & Balance
Shield Recharge Under Fire
- Shields now stay in "under fire" mode for 60 seconds after being hit (was 30).
- While under fire, shield recharge now scales smoothly from 100% (full shields) down to 50% (20% shields or lower). Previously the curve was broken: shields just above 20% recharged at close to 0%, and fully depleted shields didn't recharge at all until the under fire timer ran out.
- A new ShieldLocalRechargeUnderFireMaxPercent config value controls the top of that curve.
Mines
- Mines must now be laid at least 75 meters apart (was 10).
- Projectiles now only hit mines they actually pass through during their flight. Before, a mine could be hit by any projectile merely aimed at it, from any range.
- Mine hit detection now uses a spatial grid instead of checking every mine in the sector for every projectile. This makes minefields far cheaper for the server.
Warheads & Factions
- Warhead explosions now count as attacks for faction relations, so detonating warheads on another faction's entities triggers the same hostility and war declaration response as other weapons. Blowing up your own entities, or entities docked or railed to you, does not count.
Beams
- Beams with a limited burst time now reset their charge at the end of each firing cycle. Before, holding the fire button let a charged beam skip its charge time on every cycle after the first.
AI
- Ram ships: ships with warheads and no other weapons now charge straight at their target and detonate on contact, instead of orbiting uselessly around 1km out.
- Rail command module: the Activate Docked AI and Toggle Docked AI commands now actually work. They were changing the AI of the ship the rail sits on instead of the entity docked to it, and they didn't apply server-side.
- Docked turrets and overheating: a docked entity whose mothership has active reactors no longer overheats on its own when its core is shot out.
Station Spawning
- The blueprint spawn dialogs (inventory and catalog) now have a Spawn in center of sector checkbox for stations. It is on by default. Untick it to spawn the station at your position instead.
- The /load, /load_as_faction, /load_station_neutral, /load_station_pirate and /load_station_trading_guild admin commands have a new optional CenterStationInSector parameter (default true ).
Display Modules
Display module variables and math have received several fixes and a few new tools. It's now possible to build things like an elevator floor counter out of nothing but display modules and logic.
Fixes
- Custom display variables ([noparse][var:name]
[/noparse]) now work in multiplayer. Before, they only worked in single-player and always showed up empty for multiplayer clients.
- [noparse][var:name]
[/noparse] now updates live when the variable changes. Before, a display only picked up the new value when its own text was edited.
- Tags can now be nested. For example, [noparse][set:floor=[=max([var:floor]-1,1)]]
[/noparse] now stores the calculated number. Before, the tag was cut off at the first ] and broken text was stored instead.
- Variables that are unset or don't contain a number now count as 0 in expressions instead of causing an error, so a counter can be incremented before it's ever been set.
- Variable values containing $ or no longer break a display's text.
New Features
- Inline expressions: put [noparse][=expression]
[/noparse] anywhere in a display's text to show its result, and it updates live. For example: [noparse]Floors to go: [=3-elevator_floor][/noparse]. This is separate from the existing [noparse][=]expression[/noparse], which writes its result to a connected target display.
- Comparisons: <, <=, >, >=, ==, != return 1 or 0, so min(a, b) works as AND and max(a, b) works as OR.
- New functions: if(condition, then, else) and not(x).
- Text conditionals:[noparse][if:condition|then|else]
[/noparse] shows one of two pieces of text, and the else part can be left out. Both branches can contain other tags. A [noparse][set:][/noparse] inside the chosen branch is applied, so a single display can both pick a branch and store a value.
- Examples:
- [noparse][if:elevator_floor==3|Top Floor|Floor [var:elevator_floor]]
[/noparse]: shows "Top Floor" on floor 3, otherwise the floor number.
- [noparse][set:elevator_floor=[=max([var:elevator_floor]-1,1)]]
[/noparse]: steps the floor down, but never below 1.
- [noparse][set:elevator_floor=[=min(elevator_floor+1,3)]]
[/noparse]: steps the floor up, but never above 3.
- The in-game display module help text has been updated with the new syntax.
Graphics & Client
Integrated Graphics
- When the game detects it's running on Intel integrated graphics, it now shows a one-time warning at the main menu. The warning explains how to make the game use your dedicated graphics card if you have one. It can be dismissed with don't show again.
- On GPUs that don't have enough texture units for the current texture pack (common on Intel iGPUs), the game now turns off normal mapping automatically. Before, the shaders failed to load entirely.
Rendering Fixes
- Fixed normal maps sampling the wrong texture layer when texture arrays are enabled.
- Fixed damage/ore overlays and the shininess lookup when texture arrays are enabled.
- Anti-aliasing on macOS: if the driver rejects the chosen sample count (Apple's OpenGL does not support 8x), the game now steps down to the next supported level. Before, anti-aliasing and the multisampled buffers both failed.
- Fixed muzzle flashes occasionally flickering or disappearing because of how they were tracked internally.
Window Focus & Linux Freezes
- Fixed a hard freeze on Linux when tabbing out of or covering the game window. The game no longer tries to present frames while the window is hidden.
- V-Sync is now turned off while the window is unfocused or minimized, and a frame cap is always applied in that state (15 FPS with "Limit FPS when unfocused" on, 60 FPS otherwise). This stops the game from running uncapped in the background.
Thruster Plumes
- Thruster plume grouping now runs on a background thread instead of the render thread, which removes hitches when large ships are built, damaged or come into view.
- Plume bookkeeping now scales with the number of active plume groups instead of the total number of thrusters. The whole plume system switches off when plumes are disabled or a ship is out of range.
- The server no longer calculates thruster plumes at all, since it never draws them.
Performance & Memory
This release includes a large pass on memory use and allocation churn, especially around large ships and heavy combat.
- Large ships no longer pin memory: collections, mesh pools and scratch buffers now shrink again after a big ship is gone, instead of keeping their largest size for the rest of the session.
- Block removal under fire: heavy damage now collapses many small removals into a single rebuild instead of recalculating after every hit.
- Physics: the collision broadphase tree and ray/convex casting no longer allocate memory on every call.
- Explosions: the explosion hit cache shrinks after very large explosions instead of holding onto that memory.
- Mines: see the spatial grid change above.
- Fixed the server thread dying silently on out-of-memory errors. These are now logged, including any crashes that happen after the first one.
- Fixed a race in how bulk block changes (e.g. explosion damage) are sent to clients. During heavy combat a batch could be recycled before every client had received it, which caused block desync.
- Fixed projectiles freezing in place after quitting to the main menu and starting another single-player session.
Modding API
- Block IDs now persist correctly across updates. Each world's Universal Registry is now the only source of truth for block IDs registered through the API. Before, an update to the game or a mod could renumber those blocks, which corrupted saved ships that used them.
- Block custom data is now synced to clients. Clients receive the list of blocks that carry custom data when an entity loads, and fetch each block's data when they need it with requestBlockCustomData . Server-side changes are pushed to clients automatically. Clients cannot overwrite server data.
- Block custom data storage is now reference-counted. This fixes a leak when data was overwritten and removes a slowdown when clearing large areas.
- Mod packets are sent immediately instead of waiting for the next engine packet, which greatly reduces mod network round-trip times.
- Mod packet IDs are now derived from the packet's class name instead of the order it was registered in. Client and server therefore always agree on IDs, even if they enable mods in a different order.
- New BlockFacingArrowAPI : lets mods choose which face the build mode orientation arrow points at for their blocks (e.g. conveyors that output through their top face).
- AdvancedGUIGroup.getMainElement() is now public, so mods can add their own groups to the advanced build mode panel.
- Fixed Mixin transformer startup races that could flood the log with "Terminating MixinTransformer instance" errors.
- Mod unloading: disabling a mod now removes only that mod's fast listeners, instead of every mod's and vanilla's. Events are no longer fired to listeners belonging to disabled mods. New FastListenerCommon.register(list, listener, mod) / unregister(listener) methods track listeners by mod.
- New ModRuntime.isEnabled(...) / isDisabled(...) helpers for guarding mixin handlers when their mod is disabled.
- New ModClassTracker diagnostics: when a mod unloads, it logs any listeners, commands and runnables the mod left behind.
- SegmentPieceConsoleInteractListener now actually fires, once for each block linked to a console the player activates. It was never called before.
Commands
- /help with no arguments now lists all available commands (admin commands are only shown to admins).
- Fixed mod chat commands getting a blank argument when none was given, which broke commands like /config and /list_mods.
Bug Fixes
- Docked entities disappearing on reload: fixed ships and stations that had been damaged and repaired randomly losing their docked turrets or ships when reloaded.
- Build mode undo: undo can no longer remove the build block you are currently using, which used to softlock build mode.
- Block HP: heavily damaged blocks with a sliver of HP left are no longer rounded down to 0 HP.
- Template search: typing in the build mode template search no longer moves the camera or triggers keybinds.
- Template import: fixed the main menu's duplicate name check when importing templates.
- Station classification: stations can no longer end up with a ship-only classification.
- Target cycling exploit: cloaked, jammed and admin-invisible entities can no longer be selected with the target cycling keys or nearest-target. A target that cloaks or jams after you select it is deselected.
- Ship rotation: fixed ship rotation being applied with the wrong time step.
- Docked thrust sharing: fixed docked thrust sharing calculating wrong (even negative) thrust totals on every ship after the first. Also removed a flood of unnecessary thrust recalculations.
- Galaxy map: clicking a map GUI button no longer also opens the radial menu or counts towards a double-click on the map behind it.
- Warp gate command module: the target input now receives focus when it opens.
- Faction invitations: fixed a crash when first opening the outgoing invitations panel.
New Foundations Update (Universe Update) Status and PSA
The New Foundations update is nearing completion, and we are aiming for a release later this year or early next year. NF represents the culmination of over a decade of development work, and will be the largest single update in StarMade history by a significant amount. It is a complete overhaul of the engine and rendering systems, as well as in-game resources, manufacturing, generation, and many, many other improvements and changes. Due to the sheer volume and scale of the overhaul, we need to be clear with players: Old world saves will be incompatible with the update once it drops. Sector exports, blueprints, and templates will still be compatible and loadable; however, actual world SAVE data cannot be migrated directly. We understand the frustration this will cause and are looking into ways to mitigate this somehow, possibly via a world "select sector" migration system. With that important PSA out of the way, please enjoy some cool screenshots from the work that's been done so far, and be sure to try out the new features by creating a new install and setting it to the PRE branch. If you find any issues, please report them in the issue tracker here. And, as always, thank you for playing StarMade!
This announcement was originally published by Schine GmbH on Steam on Oct 12, 2026.
Open the original on Steam