The Spatials V3 devblog 2016-04-18

Internal development notes, very slightly cleaned up and commented a week later.

TL;DR: new backgrounds; ghost mode entities; new builder robot that can move on the outside; new images for destroyed station objects; remove all floor object restrictions; separate floor and object build tool; redesign object build tool as a two tier menu; many small fixes.

- new backgrounds
- fix background zoom in galaxy view

New backgrounds

We've more than doubled the amount of galaxy backgrounds, and they are now in 16:9 ratio, to better match most users screen resolutions.

- ghost mode for PhysicsComponent
- new builder robot
    moves like a ceiling fixture
    can move outside of the station
        huge problem for how pathfinding works now
        finally implement entity-dependant path finding
            first case is ghost mode entities, like this robot
- allow job sm to work with ghost entities
    only pathfinding has the last word about walkability
    pivot-position can recognize ghost users and returns non-walkables to them
- floor construction does not set offset anymore
    it is handled transparently by pivot-postion plus ghost plus ecs-preferred-position
    if bordering empty also enable job spawn
- floor destruction as a job

New builder robots

A new robot builder has been implemented with very particular mechanics, and the reason is a curious one.

One of the big changes for V3 station gameplay is combat. Tactical decisions when laying out your station will be important. But there was a V2 tool that didn't fit in this plan: the floor eraser. In V2 you can just select a rectangle and as long as it doesn't include any built objects, the floor is instantly deleted. This is not a problem in V2. But in V3 it would mean a very easy way to cheese up the challenge of fending off station invaders. Just pause the game and delete any corridors or room tiles necessary to isolate them.

For this reason it was clear that floor destruction required a redesign. The idea was to make it work like any other job: a worker (robot or officer) will walk to the tile, work on it, and after some seconds it would de destroyed. They could also be attacked in the meantime. This will make floor destroying a much less useful way to deal with invasions.

The problem is that implementing an AI that doesn't isolates itself from the rest of the station while removing floor tiles is very hard. There's some heuristics that help, but the only "correct" solutions involve very slow N-to-N pathfinding over potentially big areas of tiles.

For this reason a new kind of builder robot has been implemented that travel outside your station. It's slow, but it will get the job done without isolating itself.

- add default dead pose to in-station objects

Destroyed station objects

Station objects were still using the planet placeholders for their dead pose. New graphics have been added for them.

- make all objects floor-free
    at tool rules level, floor: is still used for menu building

Build any object anywhere

A huge change that took a single line of code. It's now possible to build any kind of object, on any kind of floor. We want to see how creative our users get!

- make build menu two-tiered
- separate floor tool from object tool
    new mode setting for build tool that only shows floors
    remove floor tools from the object mode
- fix ordering for floor/build tool in toolbar

Two tier build menu

Along with the previous change, the build tool has been divided in two tools, one for floors and another one for objects. Aditionally the object tool is now two-tiered, with a first menu for the object group (for now it's still using the old room organization, but it will be replaced with more generic categories) and a second menu for the objects.

- library: pick comic or book, sit down to consume (as a fun vital action for now)
- dancefloor!
- add security door
- add closed status to doors
- do not show active state for blueprint buildings
- add special offset for using the spa baths
- flag component for pallets to be posed action when stocked, not when on action
    proper implementation of both object and user posing via pivot data
- object menu: display all layers
- decent color picker
- center ship bridge map
- add bg to officer portraits (pass bool or func for it)
- add color to officers (random for now, no classes yet)
- fix incorrect sorting for animation frames in some cases

We are moving internally towards a quality checkpoint deadline, because of some PR-related materials we are preparing. For this reason a batch of small fixes has been done, with more to come in the next few weeks.