UI and part behaviour improvements

Hey all, here’s an update on what I’ve been up to over the past several weeks.  I’ve mostly been focused on providing more UI feedback for players in game, and improving part behaviour control.

UI overlays

I’ve overhauled the in-game UI overlays to show the player what actions are available to them depending on the current context.  These overlays show which keys are bound to these actions, so that they can always see what can be done at any given moment.  I’m thinking this will replace the current text based hints, as it pretty much renders those redundant.

Below you can see the player overlay on the bottom left, the toolbar overlay in the middle, and the part overlay on the right.  Each of these overlays have been modified to show various available actions and their key bindings.


The player overlay now shows the current camera mode and whether free flight is enabled.  The toolbar overlay shows which keys to press for the tool and construction menus, and the part overlay now shows whether the part behaviour is active and which key to press for the part behaviour UI.

I’ve also added new overlays in the top left corner to show the available actions depending on which tool is active:-

Selection overlay (for select, delete, attach, detach, etc.) and transform overlay (for translate, rotate, resize, etc.):


Material overlay (apply and pick):


Link overlay (add / remove, and delete all):


Paint overlay (apply, remove and pick):


My plan is that eventually the tool models themselves will also show additional status information, for example the painter tool will show the currently selected paint colour.

Gear engagement indicator

While attaching gears and trying to align them so that they’re engaged, it’s not always totally clear whether the game thinks they’re actually engaged or not, at least until the construction is unfrozen and the player perhaps finds that things aren’t working the way they expected.

So I’ve implemented a gear engagement indicator – when a gear is highlighted, arrows point to the other gear(s) it’s currently engaged with.  Here’s an example where the idler bevel gear in a differential is highlighted, showing the other two bevel gears it’s engaged with:


It also works while aligning a gear during construction, so that the player knows what to expect once they attach it:


Part behaviour improvements

I’ve unified the way key bindings work between the actions you can configure in the controls options screen and those in the part behaviour UI.  This allows part behaviours to now use modifier keys, and to have a secondary key binding.

Controllable part behaviours can now be configured so that their bound keys either toggle activation on and off, or have to be held down to keep the behaviour activated.

I added a parameter to controllable part behaviours to configure input smoothing.  When smoothing is set to a higher value, input is less responsive but it’s easier to hold it at a roughly constant value by tapping the key.  Conversely, when smoothing is set to a lower value, control is more immediate and responsive.

This can be really useful when using servos for vehicle steering for example.  Increasing the servo’s maximum RPM while also increasing input smoothing provides responsive but still nicely controllable steering:


Finally, I also added a parameter to the electric motor part behaviour to invert the motor’s direction.  This works regardless of whether keys are bound to control the motor or not, but obviously is particularly useful when they’re not.

I’m planning on releasing a demo update with these changes soon, so keep an eye out for that!