Changelog
All notable changes to the All In One Runtime Building Kit. The format follows Keep a Changelog, and versions follow Semantic Versioning.
[1.0.0] - Unreleased #
The first release.
Building #
- Build pieces: a Piece Definition holds everything about a piece (footprint, sockets, placement modes, slope and distance limits, cost, upgrade) with a stable ID for saves and multiplayer. Your model or prefab is never modified.
- Snapping: pieces join through sockets (foundations side by side, walls on edges, floors and roofs on wall tops), flush on the outer edge so storeys line up. Turn with R or the mouse wheel; flip walls; raise and lower free pieces.
- Grid placement: foundations and floors placed apart line up on a build grid (cell size per piece or per world).
- Furniture on any surface: pieces stand on floors, tabletops and shelves, hang on walls or from ceilings, and must be fully supported ("Hangs over the edge of Table_01").
- Clear reasons: every refused spot says why, e.g. "Overlaps Wall_03", "Slope 38° (max 30°)", "Too far (12.4 m, max 8 m)", "Needs 4 Wood (you have 2)", with a tip when a socket is just out of reach.
- Preview: a see-through copy of the model's meshes only (no colliders, scripts or physics), green or red. Zero memory allocated per frame; about 0.24 ms per refresh with 900 placed pieces (AMD Ryzen 7 5700X3D, in the Editor).
- Build Zones: boxes or spheres where building is forbidden or the only place allowed, each with its own reason and optional piece and category filters.
Placing #
- Turning: rotation steps (per piece too, 0 turns freely), fine steps, free turning with the mouse or a stick, a snap switch, a random turn for decor, each piece keeps its own turn, spinning on walls, optional tilt.
- Surfaces: a piece can go on floors, walls and ceilings in any mix (a lamp for tables and walls), or only on certain pieces or tagged objects ("Goes on Tables only").
- Adjusting: nudge the preview across the surface, a position step so furniture lines up, a held key for off-grid placement and a grid switch for everyone.
- Eyedropper: pick a placed piece's type, turn and look.
- Rows and areas: drag out walls, fences, foundations and floors; the preview shows how many fit and the total cost; each piece is checked and charged; one undo takes them all back.
- Blueprints: copy a building and stamp it again elsewhere, turned; keep them as assets or player files.
- Looks: colours or materials per piece, chosen while placing and changed with the Paint tool; saved and sent to every player.
- Build limits per piece, per player and per category, with plain reasons ("Bed: only 2 per player").
Make it yours #
- Themes: one Build Theme sets how building looks, sounds and reads: preview colours and pulse, tool highlights, crosshair (plus, dot, circle, brackets, your texture or none), fonts, colours and sizes of every line, hotbar, build menu, sounds, place and remove effects, and Build Zones shown in play. Every part can be switched off. Four ready-made themes (Classic, Blueprint, Warm, Minimal), New Theme From Preset, and changes that show at once, in the Game view too.
- Per-piece look: a piece can have its own preview colours, sounds and effects on top of the theme.
- Your words: every word players read comes from a Text Table, ready to translate, with a hook for your localisation.
- Your UI: a ready-made Build HUD, or your own through
IBuildHudView, the Build Presentation's events andIBuildMenu. - Sounds with no audio files: short built-in sounds made by the kit; use your own clips any time.
Gameplay #
- Costs and sandbox: Resource Types, per-piece costs and an
IResourceProviderfor your inventory (a Simple Resource Inventory is included). Sandbox mode builds for free. - Remove, move, upgrade: remove pieces (configurable refund %), pick them up and put them down elsewhere, turn them in place, upgrade them to their next tier in place (a wooden wall to stone), keeping their links.
- Undo and redo of each player's own actions, with costs and refunds reversed exactly.
- Structure: removing a piece that holds others up is refused ("Holds up Wall_01") or removes them too (configurable). No physics collapse.
- Saving: versioned JSON saves through an
ISaveBackend(JSON files by default); loading skips pieces whose definition is missing and names them. - Requests: every change is a request the authority checks again (it never trusts the preview), so your game, a rule of your own or a multiplayer host can refuse it.
Multiplayer #
- Netcode for GameObjects 2.x: host-authoritative building. Clients' requests are checked by the host with the same rules and costs; changes and late joiners' worlds are sent as compact piece records; refusals come back in plain words; forged player IDs and positions are refused; undo per player.
- Permissions:
IBuildPermissiondecides who may change whose pieces; an "owner only" component is included. The host's rules (permission, sandbox, structure, refund %, Build Zones) reach clients so their previews give the same reasons. - Other networking libraries:
NetworkedBuildAuthorityover your ownIBuildMessenger.
Editor #
- Make Buildable: drop in a model, check the measured size (with a one-click Scale for models imported at the wrong size), pick a preset (Foundation, Wall, Floor, Furniture, Wall Mounted), create the piece in your data folder and test it in Play Mode in one click.
- Kit window (Tools > All In One Runtime Building Kit): Home with a quick start and tour, Make Buildable, Pieces with problems and one-click fixes, Settings, Help with support links and Copy support info.
- Edit in Scene: drag a piece's footprint and sockets with handles.
Samples #
- Base Building (a cottage to extend, costs, upgrade, save and load), Furniture and Interior, Third Person and Top Down cameras, the small First Slice, Multiplayer, and a Benchmark that times the preview on your machine. Models from Kenney's Furniture Kit (CC0) plus our own. A build menu with categories and key rebinding. Keyboard, mouse and gamepad; the Input System package or the old Input Manager.
Compatibility #
- Unity 6000.0 or newer (tested on 6000.0, 6000.3 and 6000.6). Built-in Render Pipeline, URP and HDRP. Windows Mono and IL2CPP. No package dependencies; works with Domain Reload off.