Changelog CL14731 (EA3 Release)
Early Access Update 3 is OUT NOW!
This is our third major update to Brickadia Early Access, greatly increasing the amount of interactive game modes you can create, along with more random improvements than we can count. Check it out and let us know what you think! Read on for what's new...
Big Major Stuff
Microchips
You have too many logic gates taking up space in your world? That's a problem of the past, as you can now easily organize your wire contraptions inside hidden, nestable microchips. Place a chip anywhere, build logic gates (or other bricks!) on the virtual grid inside, then collapse the whole thing to hide it away. Copying a microchip brings along a copy of the whole circuit inside. You can also a microchip inside your microchip. And then put that in a microchip again. Oh no.
Text Decals
Have you ever wanted to place arbitrary unicode text in your world? Now you can. Just attach a text component to any brick, including on moving vehicles. The text display is highly customizable, with different fonts, outlines, materials, shading modes, scaling and spacing, etc. You can dynamically control the text and its appearance using wires. It's also incredibly fast, handling hundreds of thousands of texts without issue. During early testing, we've already seen so many crazy ideas realized that we never thought of, this one might be as big as microbricks...
Game Modes
The ancient minigame system with its 150 settings in a single long list has been thrown out and rewritten from scratch as a modular game mode system. Attach only the rules your game mode actually requires, with far less cluttered UI. Game modes can also be shared across different worlds. For EA3, we have mostly aimed at parity with what the old system could do, but there are already quite a few new goodies to play with.
Massive Performance Improvements
Performance has been improved enormously across the board. From loading worlds, to physics, to servers processing replication, to rendering, to VRAM usage, everything is quite a bit better.
New Vehicle Physics
We started working on a new vehicle simulation system for cars. Rather than physically simulating wheels with all the issues like bouncing off plates, wheels are now faked using sweeps and essentially become vfx. As a result, cars using the new system drive vastly better on brick terrain. Old physics based wheel joints are still available for contraptions like physically simulated tank tracks.
Rigid Joints
Bearings too wobbly? You just want to make a door that opens, without being affected by physics, having to place endstops, and a bunch of other bullshit? Want to add a bunch of rotated armor panels to your jeep, without breaking the physics replication with a dozen servos? Now you can! Rigid joints are available in bearing and slider form, and directly weld different grids together at a dynamic offset. The attachment angles can be changed from wires and they automatically interpolate smoothly on the client side.
Weapon Customization
You want a pistol that fires rockets? Well, why the hell not? Let's also make it red, and deal 10 times the damage... Then we can give it a custom name for the HUD, and what if you could fire it twice as fast as normal?
New Logic Gates
We've added a giant pile of new logic gates so your wires can do more things. From projectile spawners, game mode controls, dozens of math functions, new types and arrays, tweening, to persistent data storage, there's something for everyone.
Prefab Spawners
This cursed brick lets your wire contraptions spawn arbitrary prefabs anywhere you want. Very useful for creating dynamic environments for your game modes!
Proximity Voice Chat
Now you can finally talk with your friends. Or your enemies. Or breathe quietly into your microphone. Comes with some fun voice filters too!
Hyper Search
Quickly find the brick, entity or prefab you want to place with a fuzzy search and tab completion.
Full Changelog
Microchips
- Added microchip bricks that spawn a collapsible plane for you to build on.
- Microchip planes can be moved with the manipulator and resized with the resizer.
- Can add custom input and output ports inside the plane that show up on the chip brick when closed.
Logic Gates
- Wires now support more types, such as enums, strings, vectors, rotations, quaternions, and assets.
- Wires now support array variables along with many gates to read and modify them.
- Added more than 150 new logic gates, covering game events and controls, physics controls, vector math, trigonometry, colors, and much more.
- Added tween gates to smoothly animate values over time.
- Added a way to format and draw text on a player's HUD.
- Added a way to create chat commands for players to trigger.
- Added persistent per-player leaderboard data storage.
- Added entity tags and zone collision detection for entities and projectiles.
- Added projectile spawners that can be triggered by wires.
- New unified models for most logic gates.
- Gates can now support error states when their configuration makes no sense.
- Rewrote the Buffer, now has separate on/off timers and no longer flip flops when used as a pulse extender/debouncer.
- Fixed issues with buffers initializing incorrectly when reloaded from a world.
- Fixed issues with exec events being dropped if occurring in the same frame.
Text Decals
- Added extremely efficient GPU driven text renderer that draws arbitrary unicode text in 3d space.
- Imported entire Noto font range to render all sensible unicode, along with many other smaller fonts.
- Use text to display signs, strange symbols, emboss them into bricks with shading modes, apply them as graffiti decals, ...
- Added a rich text adapter for TextDisplay component. Supports following tags:
- </>
- <b>
- <i>
- <br>
- <color="..."> #RGB, #RRGGBB
- <size="..."> 1-256
- <font="AssetName">
- <outline="#hex" width="..." mode="..."> width 0.25�2.5; mode = outlined | inlined | hollow-outlined |
- hollow-inlined | none
- <shading="..." width="..." invert="..."> none | chamfer | fillet | double-chamfer | double-fillet | rounded;
- width 0.25-2.5; invert = 0/1
- <scuff="..."> 0-2.5
- <skew="..."> -45-45
- <spacing="..."> -10-50
- <skew="..."> -45-45
- <spacing="..."> -10-50
- <sharp corners="..." outlines="..."> corners = 0/1; outlines = 0/1; <sharp>, <sharp="off">
- <icon>name</icon>
Game Modes
- Deleted the old minigame system and replaced it with a new modular game rules system.
- Can easily make the game mode do what you want with a less confusing UI.
- Added builder mode, equivalent to leaving the old minigame, except you don't respawn.
- Can now configure whether inventory should be kept on spawn.
- Several gamemodes come with the game to help you learn to use the system.
- DEEP integration with wires and other new features (the whole point)! Build tycoon games, capture point and payload gamemodes, and more.
- Far superior implementations of the old capabilities. Different music for different teams, fully customizable scoreboards with asymmetric stats, multi-round deathmatches, infection without respawning, features like disabling interaction, restricting certain bricks, hiding deaths, restricting the camera, full control of the starting inventory including custom weapons AND MORE!
- Just as important for your freebuild as for your deathmatch. The gamemode helps you make whatever you want to make, rather than getting in the way. A microbrick-free freebuild is just as easy to put together as a zombie survival RPG, and uses the same system.
Bricks
- Added cannon. Spawns a projectile.
- Added thruster. Adds force to a vehicle.
- The maximum size of a brick is now 800 studs.
- All mystery 8-bit linear colors have been converted to srgb, making them have more distinct dark shades.
Resizer
- The resizer can now move bricks by holding ctrl, and move an entire selection.
- The resizer can now resize in two dimensions at once by grabbing a corner handle.
- The resizer can now rotate bricks.
- Added measurement lines showing the size of your brick.
- Added tool bind hints showing how to use the resizer.
- Added grid snapping modes.
Placer
- Can now place mirrored copies of your prefabs.
- Fixed issues where some grids placed as physics did not, in fact, have physics.
- Fixed issues with prefab previews being left behind.
Applicator
- Added brick grid settings similar to entity settings. Alt+click to edit them.
- Can now change the mass, gravity mode and buoyancy on all physics entities.
- Removed strange 2 second timeout on replicating properties of components open in the UI.
- Show output properties of most gates as non-editable fields.
Connector
- Shows the current wire value on hovering a wire port or wire.
- Can now interact with aimed at wires, to start from or replace them.
- Draw an overlay of nearby gate values in real time, enable with middle mouse.
- Can now interact with buttons and switches by pressing E.
- Can now open the applicator edit dialog on gates.
Worlds
- Worlds can now embed prefabs inside themselves, such as the ones used by Prefab Spawners.
- Fixed objects not sleeping correctly on load when saved as sleeping.
Sounds
- Weapon sounds have been added to the one shot audio gate.
- Added Apogee, Canopy of Light and Micro by APX.
- Added additional sound settings.
- Raised the volume of all of Lilyvert's music.
- Sounds are now compressed using Opus codec.
- Fix one shot audio repeat timer not saved if active.
- Fix max focus angle not applied to underlying sound.
Voice Chat
- Added proximity voice chat system.
- Added voice chat settings.
- Added voice chat filters.
Prefabs
- When saving a prefab, the settings of the original brick grid are now saved.
Selector
- The selection manager has been rewritten and now supports a persistent, server-side selection, allowing different tools to interact with the things you have selected.
- Can now expand the selection to contain an entity by clicking it with ctrl.
- Can now start a selection by dragging from the ground.
Building
- Improved the material used for visualizing hidden bricks.
- Allow undoing removal of entities and components that were over the limit of the brick owner.
Vehicles
- Added gyroscope to keep vehicles upright.
- Added new vehicle physics system based on sweeps.
- Build the vehicle as before, using the new wheel joint bricks, but without a custom mass offset.
- Once the engine is connected, wheels will stop being physical objects, and the car will hover over the ground on an internally simulated suspension and tire model.
- Drives vastly better on brick terrain than the old physically simulated wheels.
- Fixed that the steering wasn't calculating the differential to set different drive speeds on different wheels.
- Fixed various issues with the steering math.
Weapons
- Added Road Flare.
- Melee weapons now predict their hits like projectile weapons do.
- Rewrote the hit validation system.
Maps
- Cleaned out the mold from Studio.
Character
- Fixed moving out of your seat sometimes.
- Fixed unable to interact with large bricks.
Chat
- Rewrote the markdown parser to remove strange parsing bugs, improve parity with other programs.
- Fixed several issues with hierarchical rich text parsing causing it to emit segments of closing tags.
UI
- The details panel has been remade from the ground up and now supports arrays, arbitrary nested types, and more, letting us make much better settings menus.
- Added a cache for catalog thumbnails so they don't re-render on every open. They also generate much faster in the first place, now.
- The downloads tab is now sorted by download time and searching it actually works.
- The catalog can now be searched.
- Added hyper search (ctrl B).
- Added a customizable UI scale setting (may be scuffed).
- All in-game text is now rendered using distance fields to prevent hitches from font caching if you scale it.
- Updated fonts used for console and stats display.
- Improved gamepad handling for menus.
- Added a VRAM LOW indicator.
- Added a BAD PING indicator.
- Fixed missing disabled style on input fields.
Physics
- Rewrote the physics replication system. It should now work vastly better for dynamic contraptions.
- It is no longer possible to cause a singularity with degenerate velocities, making the whole server useless.
- We've implemented an experimental filter in the collision algorithms to reduce ghost collisions on edges between bricks.
- All physics entities now use a new mass calculation. Existing contraptions may behave slightly differently.
- All entities now float on water, not just brick grids.
- Fixed buoyancy for fully submerged objects whose origin is not at their center.
- Tuned sleep tolerance scale for the size of the world, so objects no longer freeze unexpectedly.
- Improve hand held grab for long thin objects.
Performance
- Overall, performance has been massively increased while RAM/VRAM requirements have shrunk.
- Brick geometry is now streamed into VRAM as you move through the world, massively reducing GPU requirements.
- Ray tracing geometry is now streamed into VRAM based on a fixed memory budget.
- Rewrote brick cluster mesh manager, now merges some clusters to reduce draw calls, overall faster.
- Bricks no longer use unreal scene components to render, reducing CPU overhead.
- Player parts also no longer use unreal scene components to render.
- Servers no longer process any player animations, greatly reducing CPU usage.
- Clients only process player animations when the player is on screen.
- Optimized Lumen card generation for brick clusters.
- The release build is now compiled with Thin LTO, improving overall performance slightly.
- Iris replication has been significantly optimized to make servers run faster.
- Brick components ticking has been significantly optimized.
- Buoyancy has been significantly optimized.
- Performance of Virtual Shadow Maps when turning the camera has been improved.
- Performance of Lumen Global Illumination has been improved.
- Correctly clamp light radius to max sensible based on brightness.
- Pulling out a placer or hammer no longer hitches the game.
- Resizing a brick too far no longer hitches the game.
- The wire renderer has been significantly optimized.
- The wire graph execution has been optimized.
- Loading worlds has been optimized.
- Physics collision detection and simulation has been optimized with persistent contacts.
- Avatar editor no longer permanently steals 2GB vram when you open it.
- Placing rows of prefabs has been significantly optimized.
- Fixed brick replication sending bricks in seemingly arbitrary order.
- Parallelized much of the render thread work in Unreal Engine.
Rendering
- Bricks and characters now have a more realistic looking material on them.
- Player parts now show up in the Lumen scene for indirect lighting and reflections.
- Lumen now correctly calculates fog in reflection views.
- Added an Extreme Reflections setting that looks nice but is ungodly slow.
- Added additional FOV settings.
- Using new ACES 2 HDR tone mapper.
- Fixed HDR UI blur compositing.
Engine
- Upgraded the game to Unreal Engine 5.8.
- Updated DLSS to 8.6.0-SL2.11.1.
- Updated FSR to version 4.0.3.
- FSR Frame Interpolation is now available.
- Fixed the DLSS transformer setting always selecting preset K, breaking DLSS 4.5.
Debugging
- Added various debug views you can use to investigate the performance and behavior of your server.
- br.DrawDebug.Entities - shows all entities and their physics sleeping state
- br.DrawDebug.Lights - shows where lights are and if they cast shadows
- br.DrawDebug.BrickColliders - shows brick grid collision meshes
- br.DrawDebug.BrickClusters - shows brick geometry streaming state
- br.DrawDebug.ClientUpdates - shows brick and component replication bandwidth
- br.DrawDebug.Constraints - shows physics joints and attached entities
Localization
- Recreated the German translation. It's now actually sensible.
- Improved French translation thanks to community contributions.
- Refreshed translations for all other languages.
Servers
- Many permissions have been reorganized, you will need to review your role setups.
- All project-specific commands are now organized under a br. namespace.
- No longer include Tutorial world with the dedicated server.
- Additional commands to manage entities:
- /FreezeAllEntities (no args)
- /FreezeEntities (no args)
- /FreezeEntities (player)
- /FreezeAllLooseEntities (no args)
- /FreezeLooseEntities (no args)
- /FreezeLooseEntities (player)
- /FreezeAllFarEntities (distance)
- /FreezeFarEntities (distance)
- /FreezeFarEntities (player, distance)
- Remove all commands interacting with brs, add useful new commands interacting with prefabs.
- Removed:
- br.Bricks.Save
- br.Bricks.SaveRegion
- br.Bricks.Load
- br.Bricks.ClearRegion
- br.Bricks.ClearAll
- br.World.LoadAdditive <path> [<offset x> <offset y> <offset z>] [<orientation>]
- Added:
- br.Prefab.Load <Path> [<Offset X> <Offset Y> <Offset Z>] [<At Original Position>] [<Orientation>] [<Root Entity Persistent Index>] [<Mirror Axes>] [<Override User Id>]
- br.Prefab.SaveRegion <Path> <Center X> <Center Y> <Center Z> <Extent X> <Extent Y> <Extent Z> [<Include Entities>] [<Root Entity Persistent Index>] [<Filter User Id>]
- br.World.ClearRegion <Center X> <Center Y> <Center Z> <Extent X> <Extent Y> <Extent Z> [<Clear Bricks>] [<Clear Entities>] [<Filter User Id>]
- br.World.ClearAll [<Clear Bricks>] [<Clear Entities>] [<Silent>]
- Notes:
- Mirror axes: bitmask, X=1 Y=2 Z=4 (e.g. 3 = mirror X and Y).
- Removed:
Crashes
- Fixed server crash possible to trigger by clients saving the world.
- Fixed a crash leaving world after saving a prefab.
- Fixed a crash in the wheel engine.
- Fixed a crash shooting at a bot.
- Fixed cases of physics memory corruption.
Bugs
Hundreds of minor bug fixes that we would need to spend another hour collecting here only for no one to actually read it.
This update is the biggest we've ever shipped, and we tried to summarize it by hand from 2000 lines of commit messages, but there might still be things we forgot. Now go download it!