- Split "discovery" into 2 stages: a check (to see if
there is even anything new to discover) and a
commit.
- When doing witness checks, check to see if there
is anything to be discovered first, before doing the
more expensive visibility checks. If the player
already knows all the discoveries, then we don't
need to do any of the raycasts.
This should speed up especially pathological cases
like door catapulting, which can cause witnessing to
happen at multiple points, and causes major
slowdowns when multiple players are within the
distance range and facing the correct direction due
to tons of raycasts happening.
- Fix door place-craft discovery not triggering due
to wrong label name
- Fix many door witnesses not working because the door
itself obstructs view of the action; "spread" the witness
event to multiple positions and give the player credit
if they can observe any part of the interacting nodes.
It seems that there may be some cases where hint alerts are not
detected immediately (e.g. due to changes in eligibility rules)
and thus not displayed until the player discovers some other
random thing, and then they get a bunch of alerts together.
Instead, just do some casual background scanning of all online
players and update hints as necessary continuously to catch
any missed cases.
NodeCore is supposed to be a "player vs self" mental
challenge, neither tourism/spectacle, nor a "player vs
environment" conquest. Players are supposed to find
their own goals, as well as applying the effort to
achieve them, and the nature of the goals is
purposefully as open-ended as possible, ideally with
no bias toward any kind of "completionism."
The name "Hints" implied some kind of assistance, and
thus was inappropriate. The name "Challenges"
similarly implies an extrinsic source of motivation,
which the system is only marginally designed to
provide; especially, it helps new player gain some
momentum, but players are supposed to find their own
motivation eventually instead of chasing after
hint completion as a goal, especially since they will
miss the most compelling aspects of the game.
Somewhat experimentally, rename these once again
to "discovery"/"discoveries" and remove language that
suggests progress toward completion. Add stronger
language suggesting that there is much more to
discover outside of this, hinting at emergent systems
as an example
- Flexible discovery list format for discover and
witness APIs
- Add "discover" key to recipes that contains a list
of discoveries to give players so they can act like
recipe groups and allow different recipes to
complete hints
Recipe group system should be easier to setup for
hints than having to list all hints individually. We
can use them especially in recipes that are loop
generated.
There seems to be a common misconception among
new players that the "hint" system is supposed to
help provide guidance when they're stuck, when what
they're really for is hinting that something exists and
challenging the player to find out how to access it.
Change the name of "hints" to "challenges" for all
text display purposes to try to clarify.
If a player loses interact after having discovered
things, then logs out, then later relogs in without
interact privs, it will not load the correct already
seen alert cache data on join. This causes a
swarm of hint alerts to appear when interact
privs are restored. Instead, detect when interact
is freshly re-granted and reset the cache at that
time automatically.
Need to be granted interact privs before they can
start observing and discovering things and trigger
hint completion. This should reduce the noise for
pure spectators, and not distract new players who
should be reading rules or something.
Instead of sorting hint completion alerts alphabetically
just so they'll be stable, sort them by order of actual
completion, so most recently completed hints are at
the bottom of the list, instead of inserted at randomish
places in the list.
- Run all settings through a common API.
- Use modname prefix consistently for setting
keys instead of "nodecore".
- Add automatic dumping of settingtypes.txt
metadata for maintenance.
- Include initial settingtypes.txt for game for
main menu use.
- Remove per-recipe tuning for pummel recipes,
as there were way too many of those to be
possibly useful and it was clogging up the
settings menu. Use tool rate adjustments to
control it instead.
- Remove vestigial enable_damage setting.
If a player is close enough to an event when it
happens (withing "likely hearing" distance) then if
they later punch the node then they can "collect"
the discovery.
The idea is that if a player hears the sound of
something happening, then they might go and
investigate and discover the thing they thought
they had left there isn't what's there anymore.
In retrospect I may want to combine this with a
limited form of the visual witnessing, just as there
may be events that a player is less likely to touch
in aftermath, or may not be practical to (e.g.
if what's left behind is air)
- Add reset command
- Reset alerts on resetting state
- Add option to hide hints
- Add option to add custom hint attrs
- Add option to pass in an already-fully-formed
hint object and skip construction helpers
- Tidy up terrain hints a bit
- Move hint handling down to API layer
- Simplify stat data; old nc_stats counting can
be moved out to a separate mod. We only
need whether the player has seen or not.
- Invert inventory tab responsibility.
- Merge witness system in from crafting.
TODO:
- Redistribute hint registration responsibility
to individual mods.
- Test external mod compat.
- Retire old nc_stats and nc_guide systems.
- Add a way to reset hints.