The Spatials V3 devblog 2015-11-23

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

TL;DR: first batch of pre-made camps is being used, civ objects report their alignment, reputation can block construction.

- add pre-made civ camps to build (without baked gfx for now, still using debug folders)

Last week the surface generator implemented the ability to spawn civ camps and was tested with a few human camps. Now the initial work for the all the civ camps is done and they have been added to the planet surface generator. Here's some examples of the result:

Randomly placed camps
Randomly placed camps
Randomly placed camps

- reputation model: add reputation amts required for different permissions
    (stages are solid but desc is just an idea)
    at war: civ wants to attack the station
    hostile: player is KOS and their planet structures are attacked
    friendly: civ will visit the station as tourists
    allied: civ allows to extract resources in their vicinity on planets
- add component for (some) camp entities to declare their civ
    hardcoded testing for now
- add civ alignment and tentative hp to existing V2 and V3 objects
    use TSV (V2: carlos, V3: max)
- properly "plant" camp buildings when doing random camps, instead of leaving them in editor mode
    solution for floors
    make it even more visible the current object collection is unbundled and temporary
- tsv reader in scheme
    promote some string tools in dynbuild.scm to system.scm
    fifth row is schema, data follows
    missing rows are ok
    missing cells are ok (yield missing keys in hashtables)
    reads into a list of hashtables
- establish rules-like vars for planet objects in the default env
    to stop hardcoding cross-mod stuff
- more optional metadata for objects
    remove hardcoded civ alignment and use from tsv metas
    use anim-duration instead of heuristic when available
    both for v2 and v3 objects
- try randomize object animations so they dont sync on planet load

The reputation system is slowly taking shape and is now being taking into account for player constructions on planet surfaces. Enhancing the current debug/development system for adding new objects to V3, a "hints" file has been implemented, which can easily and in bulk describe special attributes for objects. For now it describes the civ aligment of objects, and their animation speed when required. It also has tentative support for

It has to be said that this object model for entities is completely optional. The engine does not impose any model, it just expects an entity and a collection of components. V3 will make use of a few different object models, and it is possible for mods to ignore all of them and use their own if desired.

- disallow construction near enemy objects
- need better ui to communicate building restrictions
    allow can-build? to return string instead of bool (so === #t is valid, otherwise error)
    continuous display of text string in building cursor when not valid

Here's a first effect of the reputation system in action. The game won't allow the player to build objets too close to enemy objects on planet surfaces:

Cannot build objects too close to enemy camps

And even if they are built far away, they are still subject to the effects of attrition for being on an hostile planet. This will be fleshed out next week.