The Spatials: Galactology cover
The Spatials: Galactology screenshot
Linux PC Mac Steam
Genre: Role-playing (RPG), Simulator, Strategy, Indie

The Spatials: Galactology

Development update 2016-08-24

Development is progressing nicely in fleshing out the specs system for officers.

The concept of meta jobs has been added. Most jobs in the game are about performing tasks in the station, but some others go beyond. For example, combat tasks are not only performed in the station, and they are not part of the work system. For this reason a new kind of job has been introduced, one that's not exposed in the job matrix.



The first two meta jobs are combat and navigation. Combat still needs work and will be the subject of another patch, but navigation has been implemented.



When officers gain experience flying on a space ship, they will contribute to increasing its speed. Redshirts will be very limited in this experience, but if you spec your redshirts into diplomats and then navigators, a large potential speed bonus will be possible.

A new game system, the ownership system, has been implemented. Some objects are now able to be setup to use for anybody:



Or, if desired, to be exclusively used by only one officer:



Only the ownership part has been implemented for now, with the usage exclusivity pending for this week (the reason is the complexity of object usage in V3. If you want to make a private shower for only one officer, is the officer also supposed to handle the soap restocking? Or its repairs? Master level specs may not even allow such tasks to be performed by them).

This system will also give support to another feature coming soon: officer demands. As your officers progress they may demand private living quarters with specific needs. In order to make assigning ownership to objects more efficient a new kind of bed has been introduced, which also automatically delimits the officer room and auto assigns ownership to any object inside:


Development update 2016-08-17

Job XP has been implemented. The more officers perform a job, the more experienced they become in that job, adding 1 XP point for each task performed:



This in turn can give some bonuses, depending on the job. Many of them will receive a speed bonus. Some others, like production-centric jobs (cooking in the screenshot) now divide their recipes into difficulty tiers, and you need more experience officers in order to reliably make more difficult recipes.

But getting to high levels of expertise involves being specialized and some sacrifices, like in real life. This leads to a new major feature, officer specs.

The concept of an "officer spec" is now in the game, and all officers start in a certainly familiar one:



Redshirts are jack of all trades, masters of none. The spec of an officer dictates what jobs they can perform, and initially there's no restrictions, but it enforces a cap on how much XP (and thus benefits) can be gained from a certain job.

The staff UI now exposes the possible upgrades to the current spec:



In the screenshot, the redshirt officer has 4 possible upgrades, but none of them is ready yet. They must first reach a certain amount of XP in one or more jobs to make the cut. For example, to make a scientist, we can set one officer to be a fulltime cook in our kitchens. After it reaches the required XP, a message will pop up:



We can now visit the staff screen again and see that we can now perform the upgrade:



After the upgrade some jobs will become forbidden for the officer, but the XP cap for some others will be raised, enabling them to tackle more difficult recipes and to work faster. And it will also allow the to further specialized one more time, into a very focused tier 3 spec if desired.

Development update 2016-08-10

After publishing version 3.1 plus a hotfix, it was time to go back to our backlog and triage the major feature for the September build, and, as always, to keep implementing minor features.

Freaking out debuff





When officers hit rock bottom and cannot take it anymore, they don't handle it well. One possible debuff was already in game, making them turn their weapons on their own friends, but it was too destructive, so its chance of happening is low. A less destructive one was needed, so there's now a debuff with random low damage melee attacks with a funny walk included:

It will also be useful for other future effects, like drunks.

Decorations revamp





Max has reviewed all V2 decorations and has adapted them for V3. Some decorations that were too specific or that didn't play well with V3 concepts have been removed, and some others have been redrawn to better match V3.

Global production control based on stock keeping





It's now possible to set your factories to be controlled from a global queue. Once you do this, they will receive production orders from the inventory system. In the inventory window you can now set a minimal amount for produced resources. If you have set the appropriate factories to global production, they will start receiving production orders for those items until the minimal amount is reached.

Per-job per-officer job priorities





It's now possible to (optionally) input a priority value for a job for an officer. This allows for very fine tuning of labor in your stations. You can also see in the screenshots the start of work on job experience. The cell background in the table will be more intense the more the officer is experienced in that job.

Major feature for September: officer classes, job experience and progression



This is a group of tasks meant to flesh out officer classes, job experience and officer demands. It will be based on a rookie class plus five higher experience classes. And top it off, we will introduce expert classes as a last experience step for classes. So for example you could recruit a rookie that has some experience with cooking and assign him to cook rations. Gaining experience with each ration made, at some point you will be able to turn him into a Scientist, the generic class that includes cooking as a specialized profession. Keep him in the kitchen and he will be able to become a chef at some point.

Experience gains will be automatic but the choice to evolve your officers into classes and specialists will be yours.

Build 3.1 is now available

A new major build of The Spatials: Galactology is now available!



This build features almost a hundred of individual commits, with both new features and bug fixes. It adds a major gameplay component, you now have to build your own spaceships. And it also contains many small features as previewed in previous development updates. These updates follow this introduction, in case you missed them. You can also find the raw, detailed technical changelog at the end of this post with a note for each of the 200+ individual changes in this new version.

V3.1 is not save game compatible with v3.0 save files. But your saves are still there! If you want to keep playing them you can opt out of v3.1 by right clicking Galactology in your Steam library listing, select Properties, select Betas, then select the v3_0 branch. This will force your game installation to be v3.0 forever. When you are done make sure to go back to the default branch to keep getting updates and new features.

Ship construction



The major feature for 3.1 is the ability to build space ships in your station!



All the ships in the game have been assigned stats for speed, cargo size and crew size, then sorted by tiers to give a nice research progression.



The construction system is based on first research the required factory objects, then new ship blueprints. Once you build a ship design planner and some ship workstations then you are ready to pick a blueprint. The planner will automatically distribute a series of engineering jobs across your workstations.

Empty stock warning





By user request, shops and pallets now always display their selected resource, and visibly warn when its stock is 0.

Toggle resource extraction





It's now possible to disable extraction of one or more resources on a planet, to make more efficient use of both the on-planet storage and ship storage.

Single resource view in galaxy





The resource view in the galaxy screen is so crowded it's useless. In addition to balance changes, the galaxy screen will now only display one selected resource, making it actually useful.

Firefighting fixes and job priorities



Firefighting has been improved by making the fear to fire only affect hurt officers, and by finally implementing job priorities. This means different jobs can have different priorities, even from the point of view of a single officer (this is different from the general priority system in the game, which governs things like working vs fleeing in panic, and is already working well). A future task will expose this new priority flexibility in the job matrix. But for now firefighting has been hardcoded to be the highest priority job.

Storage area animation





In an effort to make the storage area better, now officers dump the delivered resources in the central object, which warps them to an empty tile or stacks them over an existing stack. This means it will stay better organized. To make this clearer the storage area now animates the action of warping or stacking.

Additionally stack sizes and max pallet stock has been increased.

De-bunch-up officers


The game won't send your officers to the exact same spot anymore when teleporting or walking around. They now will stand in formation:



Patrol points


It's now possible to select a point in the map as the default position for your officers and robots. Once an officer or robot has a patrol point, and they see themselves completely free of work or needs, they will walk back towards the area around that point. While not very useful for officers until we have a combat mode that disables any other actions, this finally makes the security robot useful.



Production orders queue


Factory objects are now based on a order queue system. By default, newly constructed factories have no orders. You create a production by selecting a researched recipe and then picking an amount of times to repeat it:



After your click the Create button, a new order is added to the factory queue:



There's still work pending in this area, like some sort of central production control in case you don't want to micromanage factories. But this is already a big step ahead of the launch build and ahead of V2 parity.

Technical changelog




- #% is sometimes emiting eval-string to eval time, this is bad and useless
just do plain (read), works perfectly
- statemachine.scm is shameful
it will always be without heavy restructuring of a lot of things, too late
make it faster at least
focus on removing eval
instead use (lambda (env) (with-let env ...))
alternative for state nodes
create lambda for vars block: each var is a define plus body
create 2 lambdas for state transition
condition lambda
transition lambda
-> obsoleted by to: change
-> this eliminates all evals inside run-state-machine
remove assv in let for run-node
change data to hash table
remove for-each looking for transtions in run-node
to: is now a single shot lambda with (cond), with a clause for each possible transition
put the matched and curret setters inside the generated clause code
make let* into let
will be possible after transtion to hash table
faster args injection
- fix: tooltip mousemove receiving spurious events before it has a parent
also fix corner case for call after onExit
- fix: rare case with -1 idx passed to build category cell list renderer
- optimize SpatialIndexSystem
buckets: vector of std::unordered_set*
prealloc buckets
overlaps: vector of std::unordered_set*
indexed by entity slot, realloc when insertion of one that doesnt fit
overlapsOwner: vector of int
to check correct slot owner, discard when it doesnt match
- always refresh research on game load
- stop the planet orbit animation while the game is paused
- use 3.major.minor.build for version strings
- tentative fix: always use C++ deref code, also check for isValidInstance
- immense amounts (50% of all objects) of useless repeating PoseAnimation[Layer] and friends
it would be very good if those could be reused between diff entities, half the mem and allocs!
cache hash id -> PA instance in Game
unique signature from model-name
building.scm and npc.scm manages transparently, will need model-name
no model name, old system
never erases so the ptr are always valid
make sure "not owned" flag is correctly set
done for building.scm but disabled
do for npc.scm too
- re-enable pang cache for officers
- maybe timer ticks are being delivered to deleted nodes? (gui-observer, gui-timer downpanel)
add unscheduleAllSelectors() to destructors. in theory not needed since they get paused in onExit buuuut
- fix: missing deref #f check on info action matcher, finally caught this!
- regression: some (all?) objs with wrong preferred postion
var with "angle" name was being shadowed by a built-in in strange circumstances
- Sound::play should check for simultaneus play of effects and throttle down
- after the new busy-less semantics of gathering for jobs, stampede effects occur for single stack items
example: single pill in the station just produced, many doctors go for it
for now just add item locking again when the stack is small
- refine storage area
only allow one storage area per room
all delivery jobs go to object
keep the proxies on it
the final state of the delivery always considers the entire area, for perfect stacking
stack is warped or stacked on top of whatever is required
- buff planet cargo obj capacity (and price)
also add a per planet limit to how many allowed to build, warn in build too
- make teleport and walk sticky modal, so they remain activated after one use (can use esc to cancel)
- more levels for volume settings
- squad buttons are a bit inconsistent with selection on single click
- actions must do a prio busy check, equivalent to flee prio
- allow actions to have a non-hold modal pointer
- action: set patrol point
plus low prio rally system
enable for some robots too
- fix: crash on setting new keybinding
- fix extractors goal
- walk action target placeholder (v2 parity)
shown when selecting entity
selected-component+physc+pathc display system
use for patrol point too
- walk destination position layout to not bunch up officers
use in teleport too
- consumerists respect unlocked status of products
- simplify starting unlocks and research groups
- rooms must unlock from research
add research refresh to room tool
- new gfx for patrol point and icon
- starting spawn on station and planet should use group layout
- production control: local queue
local queue: pick a recipe and an amount and add order
decrements amount in order when production done
system updates queue when no recipe is present
allow infinite amount
SM updates queue after production
fix: leaves factory in bad state because it nukes SM and clenaup doesnt run (pose etc)
gui in factory panel
better layout
add recipe icon to order list
add delete order
add an in-panel modal mode for creating an order
keep amount and recipe id out of panel state
- add support for infinite amount orders
- update production tutorial
- spawn landing shuttle on planet
- fix: make table view more robust by using index to track touched cell
- rework earliest log output
game version
one check for each Steam API singleton
Steam user ID
- on detecting a too old OpenGL version or driver, popup a message and quit instead of crashing
- fix firefighting once for all
do not mark fire as an enemy
remove aggressor empathy from fire
increase firefighting job radius
- to give firefighting proper prio, jobs must support prios, now!
introduce job-hint component for reverse job model lookup (finally!)
ecs-query now supports order-by
lambda (e) that returns a numeric
result is memoized for that query, no multiple calls
also optimize by-distance
add path to run both, or only one
- separate cleaner and recycler jobs
increase prio for recycler job, decrease for cleaner
- cleaner sm must be removed
it interferes with common job management, giving it 50% or more prio in practice
extend from job sm to use common worker query
lazy put job component and nothing else
lazy start and run sm only when busy
- report of cleaners stuck with corpses
add autodrop for held litter
- item placeholder to display missing stock in pallet and shops
- storage area new gfx
dropper with layered animation
add spawn and suicide comp
- fix: check subj in dismantle-cancel
- increase stack sizes for all
- increase max pallet stock
- remove decoration bench (missleading decor)
- enable patrol points for all robots
- increase times for eating and most other vitals
- storage area must mark existing floor stacks to avoid (too many) strange behaviors
- force first system to have fixed set of planet kinds and resources
- move onion layering code for objects inside the cached proc
- soap recipe is unlocked but its factory is not
- stop the random choice for de-diagonalized pathing
- new gfx for storage area (again)
- limit diff resources per planet kind and hardcode some planets in early systems to guarantee supply
- production on off control in planet popup
and display icon in red for system resource overlay
- decrease extraction rate
- galaxy resource view for only one resource
simple chooser under filter buttons
leave system view as-is
- introduce steel
new icon for alu
new node and icon for steel
rules model
- ship building
flesh out all ship designs with spec and progression over: ship speed, cargo hold size, crew size
ship speed model
ETA display
info alert when manual order is done
add ships to research, add research group
research and category icon
integrate objects and recipes
introduce factory editable param
single object provides for design table to select ship
workstations
they provide 1m jobs that consume lots of resources and advance ship construction
standard recipes (hull, structure, life support, engines)
amount of each kind of recipe comes from the stats of the selected kind of ship
a central system distributes jobs, there's no user controlled queue
associated to the planner, so if it's gone, it doesnt advance
model for keeping construction state
start, cancel, pause, status
model for spanwing ship
planner
just for selection and tracking of ship
keeps track of construction
can cancel construction but all work is gone (like research)
can pause
remove cheat
must check fleet size limit before construction
display selected ship on top of planner desk
scrap button when at home
goals and counters
- less vertical space for ship images in planner panel
- fix alignement and sizing issues in research screen for ships
- dont display vitals panels when only health is a vital
- build planner error when building workshops
- explain in planner desc the need for workshops
- stock tutorial is broken due to default resources
- change desc text for corridor
- clicking two times with object eraser deletes the entity
- separate tier for tier 2 ships
- pose planner in action while there's a ship under construction
- faster ships, req less materials
- remove civ icons in galaxy in resource view
- ceiling "turrret"
- ships must always take shortest path
- assigned bartenders not doing their job
the item clearing done after building was moving the proxy entity for the bartender job workplace
- job matrix enhancements
tooltip with job priority (just info, not editable)
sort by job (click on job)
click officer to select in map, if in station
- fix: still crashing on lookupHook: unknown hook (this time on the refresh timer from a GUIObserver)
not an abnornal code path! it is legitimate: a Persisting instance is destroyed and ::changed clears the hook
but tryUpdate does NOT check for the validity of the hook, fix this
also review similar patterns in other widgets and harden them
- having one button per job per officer in job matrix has a real impact for mouse move events
enable visible parent check, again
- busy-stuck item stacks
actions that perturb job state, like changing the resource in stock info panel, destroy the ref on the job-giver side
this makes the item be busy with the giver, but the giver forgot about it -> item is locked and unusable
add optional "any busy" check for the subj, to remove busy comp when the subj is not busy (no matter if reciprocal or not)
- ship build objects are missing their animations
- faster phase in storage area
- increase max cargo carry for officers and robots
- increase ship speed a bit
- reduce gas needs for ship recipes
- job matrix: add job name to tooltip, restore rotation
- fix inside-node bound testing to only use own affine xform of hit coords plus node size
- add extra bodies in lvl 1 with extra resources
- hospital beds get stuck with has-patient after interruptions
add system for cleanup
- increase initial credit allowance
- increase a bit miasma, disease and trash
- decrease a bit the negative feeling from bad aesthetics and miasma


3.1.1




  • Make modability easier for many kinds of data
  • Hire listing bug: recruit listing should display potential hires, always
  • Fix: last officer is cut in job matrix when it needs to scroll
  • Reset order creation when the selected recipe is not in the object
  • Broken robots at low energy should not suffer from low energy attrition