In this update15
Full notes
Full Homebrew - Patent Unknown update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Performance
- Gameplay
- Server
- UI and audio
- Balance
- Workshop
Homebrew - Patent Unknown changes
We have a lot to talk about in this post so feel free to scroll down and read about the subjects that matter most to you.
Overall performance gains
Baking our vehicles has always been about optimizing the result. We are glad to have found additional ways to optimize our vehicles even more. Especially for highly detailed vehicles where a lot of pipes, plates and shapes can be found.
Fewer objects
First we found a way to remove pipe, plate and shape objects after baking the vehicle. Reducing the amount of objects means that rotating or moving these vehicle pieces has much better performance.
This example went from 432 objects to 3379 objects removed:
Fewer center of gravity points
We were also able to combine center of gravity points in a better way than before. Fewer center of gravity points means less computation is needed in real time. Again giving the most performance gain on detailed vehicles.
Here we went from 711 CoG points to just 8:
Smoother shader
We also took a look at the vehicle shader and found that it was doing some unnecessary things. So we simplified it and can see a significant reduction on the GPU load whilst looking at a vehicle.
Lightweight network IDs
And finally we went over the networking pipeline and were able to reduce the size of IDs sent with each network package. While this give a light performance gain on its own it does reduce network traffic a lot.
Voxel collision
Colliders play a big role in the handling and performance of your vehicle. Up until now the builder has been adding colliders for each part, pipe, plate or shape. As you can imagine for high detailed vehicles this results in loads and loads of colliders while this does give a decent approximation of your vehicle shape it is not so good on performance
So for this update, we introduce voxel collision. Voxel collision slices your vehicle in small pieces and adds colliders accordingly, resulting in fewer colliders in most cases while still providing a decent approximation of your vehicle shape.
We provided you with the choice between object collision vs voxel collision found in the utility bar. When we test our vehicle, we can now see how many colliders have been built for comparison reasons.
Weapons
Aah weapons... yes
We knew fixing weapons was an absolute must for this update... or else!
So looking at the code we saw a lot of issues. First, the system was so complex that our noodles could not make sense of it. We noticed that the teams system responsible for 70% of the complexity accounted for almost 0% gameplay since we never really use teams, except for that one time... maybe... So we removed the teams system and were left with something we could actually fix.
Remembering how damage used to be, the biggest issues are that we don't have per-part based damage, that we don't get to see damage, HP and armor feedback, and that gunner seats for other players are basically useless as the gunner seat lags behind due to ownership of the vehicle. There is more to improve but these outline the most prominent sucky parts of our damage system.
Damage and armor feedback
To give user feedback we now show damage and armor on the hitmarker whenever we make a hit.
HP feedback
Whenever we hit a vehicle we get to see an HP bar showing the remaining health of the vehicle. Know that damage is still split per vehicle piece, meaning not every hit will reduce the overall HP of the vehicle and the HP bar doesn't have to be fully depleted for a vehicle to be destroyed beyond the point of working.
Gunner seats
To fix the gunner seat issue we had to introduce a new wire type. From now on each weapon has to be linked to a seat using the weapon wire.
Linking the wire with a seat makes the weapon respond instantly to the player that is in that seat regardless of who owns the vehicle at this time. It also allow the weapon to know which player is actually doing the damage.
Overall weapons now rotate smoothly for non vehicle owners if it's welded onto a weapon mount or hemi servo, using the vector wire as input.
Tweaking damage on servers
Damage can now be tweaked via server settings. we can set damage and armor multipliers and we can cap the armor so it won't go above a certain value.
Known issues
While the damage system has been improved, some issues still remain that we can't fix right away. For example, tweaking the HP and armor coefficients requires us to run the system in a natural environment looking at all sorts of vehicles. So don't expect the damage to be tweaked perfectly yet, we will tweak the numbers as we go via the server settings, we will see what works best and provide updates as we go.
While the damage system has been improved there is still more to do like per-part based damage, missiles and bombs etc... We will dive more into weapons in future updates.
Christmas
One of our beloved community members Being Bright started a snow mod a while ago. We were looking for something to do for Christmas, while looking at his mod we saw a perfect match. We contacted Being Bright right away and improved the mod where needed. This mod will automatically activate between Nov and Feb, bringing snow to our world.
Vector Math Box
For our Math Heads we've added a "Vector Math Box" containing all the vector operations a proper Math Head would want. We can also convert from float wires to vector wires and back using this box:
Mod versioning
Mods now live in the current lua version folder, found at userdata/lua/ /... This means that you will have to move your mods to this new folder. A readme.txt file can be found in userdata/lua telling you what to do with your mods. you will also see a chat message giving you a warning that mods need to be moved, triggered only when you have mods installed and no mods are found at the new location.
Homebrew Devkit
Devkit? What's a devkit? Well, simply put, a devkit is a bag of tools that helps you develop certain things. In our case the devkit helps us to create or edit parts and world assets.
https://github.com/copybugpaste/Homebrew-Devkit/tree/master
The devkit is new but powerful already, it has both modders and devs in mind and will make both of our lives easier when it comes to creating new content that can be released in updates or uploaded to the Warehouse.
Spawner gadget
We have made the gadget load faster when you select it, and added effects that make it look better.
Default vehicles
As of now default vehicles will install for new players only. If you are not a new player you can still install them by using the "/installdefault" chat command.
Conclusion
This is a big update, we have done our best to keep track of all the changes and mention the highlights in this post. We can't guarantee everything will work perfectly at first, we may find things to tweak as it goes public. We will be on the lookout for bugs, so please report them ASAP so we can get the "hot fixes" rolling.
Here is the remaining list of fixes and additions:
fixed issue where HBU path functions returned backward slashes
fixed issue where the bounding function would return incorrect results in some cases
fixed issue where the game runs on more than 60 fps in the loading menu
fixed issue where vehicles could not be loaded after saving in rare cases
fixed issue where plates could be created with all vertices on 1 point, resulting in physics issues
fixed issue where AddTool would place parts with the wrong rotation
fixed issue where tiremarks could creep their way onto your vehicle in the builder, resulting in physics issues
fixed issue where cloned or symmetrical parts could not be selected in some cases
fixed issue where HBU.CopyAsset logged an error while it was working correctly
fixed issue where solar panels do not work on vehicles built in the new builder
fixed issue where Hide Tool hides pipes and plates inside rotators when parts are set to hidden
fixed issue where the adjust tool would not show pipe or plate properties in some cases
fixed issue where ctrl+click while editing nodes, selected a plate or pipe behind the node
fixed issue where toggle boxes did not initialize correctly, not providing the correct state in the inspector panel
fixed issue where adjust tool lock selection option displayed true while it is false
fixed issue where in and output properties had propertyname in the link property field in the inspector panel
fixed issue where the move tool would try to access a non existing function
fixed issue where game would lock when spawning a corrupt vehicle
fixed issue where network package could be dropped due to incorrect package size
fixed issue where vehicle mass as NaN would result in a crash
fixed issue where selecting the adjust tool with a pipe already selected not displaying properties in the inspector panel
fixed issue where adding keybinds to the seat would not rename the keybind
fixed issue where deleting parts would not register a change in the builder, meaning that it would not ask to save before closing
fixed issue where toggle properties on the parts would not show correct state
fixed issue where mass would not be calculated properly on some symmetrical parts
fixed issue where mass would not bake correctly resulting in a difference in weight in the builder vs the world
fixed issue where wing surface area could go negative resulting in infinite power
fixed issue where jet engine would provide infinite power by flying backwards at high speeds
fixed issue where blimps would fly in reverse
fixed issue where mass was incorrect in the old builder
fixed issue where player would not reset its components correctly when using the /cva command
fixed issue where weapons failed to deal damage
fixed issue where weapons did not transfer ownership with the vehicle
fixed issue where builder was unable to locate the assembly while the assembly was hidden
fixed issue where wrong components would be added to sub-pieces of your vehicle
fixed issue where when you enter a vehicle in multiplayer it would glitch to the origin point of the world for a few frames
fixed issue where weapon dots would not display correctly for other players in that vehicle
fixed issue where weapons would fire twice in single player
fixed issue where rigidbody would fall asleep when there was nearly no motion, resulting in issues in waking up
fixed issue where using the functions CreateEmptyPart() or CreateEmptyAdjustablePart() would not assign RefrenceID components resulting in unlinkable parts
fixed issue on single sequence box where the time property would always revert to 0
fixed memory leak in the save/load system
fixed memory leak when using Forms
fixed memory leak in "other" player objects in multiplayer
added vector math box
added /installdefault command to install default vehicles anyways
added HBU.ShouldNotifyUpgradingMods() for modders to use, this will tell us if a user needs to move his mods to the new version folder
added chat message when we detect that a user has installed mods and needs to move them to the new version folder
added part script to get a readout on health, for modders to use ( no part has been built using this script yet )
added a vector wire output to the GPS box
added readme file installed when the game starts into the lua folder, for modders to read
added a set of spring materials for future use
added HBU.AddLuaComponentPath() that accepts absolute path to the mod, for modders to use
added a HP bar that will be shown when you hit a vehicle
added damage and armor stats that show on the hit marker when you hit a vehicle
added voxel collision method for baking your vehicle, this can result in less colliders, giving you better performance
added HBU.LoadH3D and SaveH3D functions for modders to use ( these are HB native model formats )
added extra checks for loading mods, checking if the script can be loaded otherwise resulting in error spam
added part script for blend shapes for modders to use ( no part has been build using this script yet )
Added HBU.GetModLuaFolder() for modders to use
Added HBU.GetBuilderLuaFolder() for modders to use
Added HBU.GetGadgetLuaFolder() for modders to use
Added HBU.GetOfficialModLuaFolder() for modders to use
Added HBU.GetOfficialBuilderLuaFolder() for modders to use
Added HBU.GetOfficialGadgetLuaFolder() for modders to use
Added /streamingassets chat command -> will open streamingAssets folder
Added /lua chat command -> will open lua folder
Added /version chat command
added part script to move objects for modders to use, works similar like a hemi but for movement instead of rotation
added versioning structure for mods
added general purpose StringDataContainer component for modders to use
added occlusion area, improves performance on camera occlusion
added a bunch of generic materials for modders/content creators to use
removed tons of warning messages when the game starts
removed teams system knowing that we set ourself as spectator 99% of the time anyways
removed issue where too much drag to the vehicle would be added via the use of dragboxes
removed redundant checks in VersionManager and SteamManager
removed the box that would ask to import workshop vehicles when the game starts
exposed System.DateTime to lua for modders to use
exposed System.TimeSpan to lua for modders to use
exposed System.IO.FileInfo to lua for modders to use
exposed System.IO.DirectoryInfo to lua for modders to use
exposed certain variables on springs to lua, for modders to use
optimized performance of the loading screen
optimized performance of rotating objects by the rotator part or hemi part
optimized the vehicle baker, cleaning up gameobjects that are not necessary, giving you better performance
optimized box collider method resulting in fewer gameobjects needed on your final vehicle, giving you better overall performance
optimized network traffic used by weapons
optimized network traffic by using shortened IDs
optimized color tool initialization by removing generated colors and adding the color properties one by one in the inspector panel
builder stores last opened project
separated the tool bar from the main builder script into its own module
separated the utility bar from the main builder script into its own module
equalized the spaces in the utility bar
renamed "projectile physics" settings to "weapons"
wheels dislocate when your vehicle is destroyed
disabling weapons will now stop all damage given and taken
upgraded to unity version 5.6.7f1 ( no notable changes, only security related changes )
lua folders now get created if they don't exist yet when the game starts
hinges break when your vehicle is destroyed
when your vehicle is destroyed it will spawn explosions instead of just smoke
seat now has a new output wire type, meant to be linked to weapons, this is how the weapon will know who did the damage
tweaked skybox colors
improved terrain shader to have overall color and contrast values
when copy pasting parts the wires will try and stay linked within the selection you are copying
the inspector panel now updates when a part changes its own properties, like how the solid fuel rocket does
transparent color material is a bit more transparent now
default vehicles will only install automatically for new players
We hope you guys like the update and can look past the long long delay. In the next post we will talk about how we are going to move forward from now on.
As always, we'll keep our eyes open on Steam, DISCORD and our other channels.
DREAM - BUILD - ENJOY
Copybugpaste Team
Version 15.1 - 637093565581787752
Source
Changelog.gg summarizes and formats this update. How we read updates.
