The Spatials: Galactology update for 2016-06-06
Internal development notes, very slightly cleaned up and commented a week later.
TL;DR: new tutorial system and preliminary tutorials for the station, the galaxy and planet exploration; unveiling The Spatials: Galactology, flood fill system, storage areas.
After nine months of development we’ve finally announced how we are going to release V3: it’s now a new game called The Spatials: Galactology. You can check our announcement for more details and the trailer in youtube.
- Shell tag2 utilities for registering, checking and clearing clicks to nodes with certain tag2
- tutorial mod
new core mod
bring up with a non-modal tool
model
simple listing of steps with the body gui content
pre, done?, post procs for each step
optional next button
organize pages into chapters, with a title and id
a tutorial is a list of chapters
menu button goes back to chapter menu
- proper way for done? checks
introduce gui-timer: content-less 0x0 node that calls its non-gui callback every :duration
since it's a node it will be deleted automatically on next page
- fix button and toolbar drag click prio for windows
set windows to swallow events at -9
:mouse-priority (ShellWindowMousePrio) for controls (which is -10)
new args for button group widgets
make sure it is also set for GUIListing
- proto station tutorial
basics
how to move and zoom
sidebar tools
info tool
click on anything on map to continue
floor tool
select corridor if not selected
put marks on map
draw a line between them
wait for it to be built
repeat for any room
object tool
select food dispenser
build one
wait for it to be built
repeat for a table
production
(make sure cooking is on for all)
select kitchen
select veggie ration recipe
talk about resources
wait for first produced ration
stock
build dispenser
set resource to ration
- planet tutorial
add support for mandatory resources
add fixed tutorial planet
extraction chapter
initial game flag
if planet is not tutorial planet, button displays alert
- galaxy tutorial
add tag2 to systems (only for home), planets
add tag2 to ship avatar
which one?
may need two highlights (ship plus planet) for the drag and drop
structure and movement
autopilot
There’s a new tutorial system, implemented from scratch as an independent core game mod:
Unlike the V2 tutorial, this new system is based monitoring all interaction of the user both with the GUI and the game world. This allows for detection of construction, production, or any other gameplay effect. This will enable much better tutorials.
Initial tutorials were also implemented for the station, the galaxy and planets. Only the station tutorial is in a relatively advanced state, with the other two only covering the basics to form a working resource chain.
- introduce flood fill comp/system
keep cached in a component the extents of a room, as defined by any reachable same-floor
same-floor: as the same floor under the object
reachable: using a flood fill
use fast C++ proc
add a max size
building cursor paints and forces 1:1 update on move
info selection paints
- flood fill visuals
line segments around limit
add vis toggle to component and/or smart toggle for edit and selection
some color+alpha over the tiles
Galactology now supports flood fill areas:
It’s a staple of many sim games to define areas with some kind of brush, for many gameplay reasons. I was avoiding this sort of functionality since it seemed very complicated for our game, given that the floor tool was already doing the same thing. So it dawned on me, why not allow common floors and rooms to serve such a function? Thus the flood fill system was born. Any object with FloodFillComponent
(it’s done in C++) will keep an updated set of tile coordinates that are adjacent to it and that share the same floor kind, up to the limits of the room.
It’s now possible to build new systems on top of this foundation. And the first one is storage areas:
- storage area
central object looks for valid haulable resources
when found publishes a hauling job
when has a worker and has either valid stack or empty tile (incl free of a job), creates a proxy job on the tile
and swaps the worker job to the proxy
proxy finishes the hauling and destroys itself
allow resource filtering but no stock control
- in-storage-area system: also check for filter, remove when not desired
- info panel for storage area
preserve scroll --> finally implement callback for preserving scroll position, long overdue
fix some instances of scroll position being lost due to layout/render hook/etc calling setContentSize
Galactology will now support two kinds of storage: stock controlled storage has been implemented for months and it allows for very precise orders. You can pick one single resource and then give a max and min amount to keep on stock, and select options for what are its valid sources (and this may be made more complicated in the future, allowing to pinpoint a single object as the source). Many objects keep its internal stock controlled using this system.
But, what happens when a ship unloads a large amount of varied cargo in your station? It can be very cumbersome to micromanage a pallet object for each kind of resource. Enter storage areas. A storage controller uses the flood fill system to declare a room as valid for storage. It also allows to select the subset of resources allowed in the room, so you can have diferent areas for different resources. It has not stock control, which will still a feature that requires pallets. This system is much more similar to how storage works in other sims, compared to stock control pallets.