- Unify logic for expanding nodenames/itemnames lists into indexes
of matching names, and comparing item names/defs to lists,
with group expansion and deferral.
- Add "autostart" option to DNTs which registers construction traps
and a patrol ABM automatically, use for some things that are a
good match.
- Note that some things are doing more complex logic in ABMs, such
as determining if a node is eligible, or custom timing logic;
leave these as-is for now.
The game was designed with this appearance in mind, especially the
appearance of float glass, and having this turned off can have a
major impact on the aesthetics and even function (accessibility)
of builds.
The ability to enable/disable connected glass is of unproven value
even to lower-end systems, as most of the additional work is in
the background mesh-building thread, and by now the game is complex
enough that other factors completely overpower the impact this has
on performance.
Forcing this mitigates the risk that players who have connected
glass turned off will not experience the proper results of using
float glass, and that their builds will appear very different for
other players.
- New fluid wandering API, mostly unified logic, only needs
some parameters, plus the "generation check".
- More sophisticated behavior seeking down-slopes beyond simple
immediate flowing node reach ("subtle slope" detection).
- More reliable timing using DNTs.
- Set firm movement rate of concrete, molten glass.
- Reduce molten glass generations, since it can now be more
reliably directed.
- Separate touchtips into in-world looktips vs
wieldtips for inventory.
- Automatically raycast and show tips for
anything we're looking at.
- Looktips don't work in full darkness, punch
to activate a temporary touchtip for it, or
use synesthesia lighting.
- nodecore.show_touchtip API stubbed out
(used in yctiwy).
TODO:
- Need to rework hint discovery to use raycast
instead of just punching
- Crosshair hidden when !interact
- Fade out crosshair when not pointing
- Makes crosshair HUD-scalable (not sure if
this is definitely good or bad yet)
- Forces crosshair appearance on mobile to
match desktop
Since the crosshair position is already used in
gameplay i.e. for item dropping on mobile, it's
important that mobile have consistent access
to it compared to desktop.
Also, mobile's lack of crosshair was one of the
main blockers to having look-tips instead of
touch-tips, so forcing a crosshair opens that
up again. Forcing punch interactions to see
anything causes issues with ember/pumwater
where punching hurts.
A crosshair would also be necessary for
star navigation assistance tools.
Handle single player as a special case and use the
default, un-colorized skin. This should also make
it easier for people to change the SP skin without
having to interact with the colorization system.
A lot of people have actually been de facto using NodeCore as an
educational tool. Apparently it gets parents excited to introduce
to their kids.
NC optics, in particular, reminds me of Rocky's Boots, which I
only ever got to play briefly in school in like 3rd grade or
something, though NC optics might be for kids a bit more
advanced. :-)
Apparently "rounding error" margin for the bounding box for feet
was too large for MT to detect player's feet on the ground.
Shrink it to a very small amount that should be large enough not
to be lost in rounding error but small enough to allow footstep
sounds.
Apparently an object having had automatic
rotate set in properties in the past will cause its
rotation to retain some unknowable offset,
presumably calculated client-side and not
matching the ent's yaw. Entity replacement
(i.e. backing out reuse) is the simplest fix and
the transient one-time flicker is better than
losing the stack fullness indicator from yaw.
Soaking recipe fails will result in a lot of clearing
of old soaking values out of node meta, which is
very slow in the common case of e.g. dirt that's
not near water and thus should not be soaking in
the first place.
Skip node meta writes if the node meta already
contains the correct data, by doing a cached read
and check before writing, instead of blindly
writing.
This speeds up performance of soaking API by
quite a lot, especially in the more or less
pathological case of soaking dirt to sand, which
involves clearing the metadata from thousands
of nodes each run. Knowing that the nodes
had already had their metadata cleared is
very helpful.