523 Commits

Author SHA1 Message Date
Aaron Suen
7849c87026 Fully stabilize screenshot smoke generators
Instead of using limited-lifetime particles that need to be
refreshed, use sprite entities, which never need to be replaced
as long as they stay loaded.

There was a short "glitch" when replacing the particles where
they could appear twice, or be absent, for a frame or two.  If
we're taking the screenshot at insanely high resolution/AA, which
the automation in this mod enables, we may have fractional FPS,
and the time window when the particles are in an invalid state
may expand to the point where it's impossible to capture a
screenshot with the correct smoke particles.

Making the smoke particles stable this way makes it possible to
reliably capture a screenshot with correct smoke particles at
insanely high quality / low framerate.
2024-08-25 11:38:27 -04:00
Aaron Suen
97b09a9487 Update minimum required version to 5.8
This allows us to remove a compatibility hack that risked creating
memory leaks on the server side.  There may be other
simplifications possible that aren't known yet (e.g. with
formspec handling)
2024-08-15 09:01:10 -04:00
Aaron Suen
7e80639ec4 Compatibility patch for set_bone_override 2024-08-15 07:28:53 -04:00
Aaron Suen
372d557f31 Translations 2024-03-17 13:46:58 -04:00
Aaron Suen
4ea56dea9c Document an issue 2024-03-07 20:52:08 -05:00
Aaron Suen
9b3068b3d1 Switch from JPEG to WebP for CDB
CDB now used WebP for thumbnails, de facto requiring that users of
the site actually support the format, so since it's already
mandatory, take advantage of it.  WebP compresses notably better
than JPEG for comparable quality, so we can make the NodeCore CDB
page and screenshots load faster.
2024-02-18 21:13:13 -05:00
Aaron Suen
1bbd7d0874 Change name in dev mode
Since cdbrelease fixes the game title now, for players who have
a dev repo installed alongside the official game, display a
distinctly "DEV" title in the title bar when the game is selected
on the game bar to make it distinguishable.
2024-02-18 21:07:02 -05:00
Aaron Suen
8d257696e1 Cumulative stats, auto-disable 14044 workaround
If the fix for this gets merged, it will cause IDs to
just keep increasing until they wrap around, which
would eat up memory.  Detect this before it
becomes critical, and disable the pooling hack
permanently (for this session) in that case.
2023-11-30 23:03:47 -05:00
Aaron Suen
40930d9883 Tote rightclick issue 2023-11-29 00:57:15 -05:00
Aaron Suen
1655ed273b Document some complex issues 2023-11-29 00:19:14 -05:00
Aaron Suen
7207d953bb Upgrade a hopeless issue to hopeful again 2023-11-17 18:59:09 -05:00
Aaron Suen
70a10826d2 Simplify progressive zoom controls
Just hold the zoom button for a couple of seconds
(gives the player a chance to take screenshots with
the fixed zoom level) and then progressive zoom will
kick in automatically as long as zoom and no other
input control is held down.

This also prevents problems with the sneak/aux
causing unwanted movement while zooming.
2023-11-05 12:40:32 -05:00
Aaron Suen
f79f869dc2 Document falling node mapfix issue. 2023-11-04 21:53:46 -04:00
Aaron Suen
ef176f883b Note about floating tree problem 2023-11-04 00:18:32 -04:00
Aaron Suen
d401348aa9 Clear cave-in rework from todo list 2023-11-03 23:11:00 -04:00
Aaron Suen
aba2ea5eb9 Plan to rework the falling node / cave-in mechanic
Spontaneous node falling was intended to serve two
purposes originally:

- Prevent falling nodes from remaining nonsensically
  suspended indefinitely from bad mapgen.
- Add a bit of tension to the game, back when it was
  envisioned as more "hardcore" in more traditional
  a sense.

The feature no longer fits with the tone and themes
of the game today.  Sudden cave-ins caused by the
"sound/vibrations" of players disturbing an area are
largely indifferent to most players, confusing to
some, and very much hated by a few.
2023-11-03 20:07:53 -04:00
Aaron Suen
a31d256caa A bit more notes cleanup 2023-11-01 20:57:44 -04:00
Aaron Suen
47f20ac2f0 Don't pack/unpack varargs in nodecore.door_operate
Instead of using variadics, hard-code array accesses for the
expected arity of door_operate_core, throwing away any
"future-proofing" that variadics were supposed to offer.

This is because in Lua 5.1, the length of arrays that contain
nil values anywhere in the sequence is apparently undefined, and
implementations are free to return the position of any value that
is followd by a nil, so length of {1, nil, 3} could be 1 or 3.
PUC lua seems to generally return 3, but LuaJIT takes more
liberties here (presumably exploiting UB for optimizations).
The problem arises when trying to unpack({1, nil, 3}) and LuaJIT
sees the length as 1 so return only <1>, instead of <1, nil, 3>.
This means that calling nodecore.door_operate(pos, ni, dir),
which was INTENDED for this API (it would look up node for you if
you didn't provide one) could result in the dir param being
lost due to packing the args into an array to defer them, and then
that array getting only partially unpacked.

Reference to WONTFIX bug where LuaJIT claims this is allowed UB:
https://github.com/LuaJIT/LuaJIT/issues/527

The solution for now is to stop relying on unpack (which is sort
of easy in its own way since I never really liked it).  In the
specific case of nodecore.door_operate in particular, adding
more positional args (it already has 3) would be bad for other
reasons (should switch to a named passing style).
2023-11-01 01:07:19 -04:00
Aaron Suen
966ed012b2 Expose node spin data in registrations
Deprecate the old APIs that used to close over the
metadata about valid node rotations.  Now expose
this data in the node definition, and use a generic
non-closure function to handle the callback.

nodedef.spindata contains:

qty = number of allowed rotations total
cycle = table keyed on current param2 and valued with
  next param2 for next rotation
equiv = table keyed by each possible param2 (24 keys)
  and valued with canonical equivalent for that param2
2023-10-29 02:49:22 -04:00
Aaron Suen
1e3e56fea6 Move some ideas into a separate megaproject 2023-10-28 16:32:51 -04:00
Aaron Suen
c1f192126a Document some more ambitious usablity ideas 2023-10-28 16:12:25 -04:00
Aaron Suen
09783a1a70 Document some issues 2023-10-28 15:20:56 -04:00
Aaron Suen
a1bf7ffa6f More issue documentation 2023-10-10 00:13:45 -04:00
Aaron Suen
7490bd5847 Document issue 2023-10-09 23:00:52 -04:00
Aaron Suen
68ca7ad4c3 Tong cooling/quenching recipes
Note that these are separate from the existing
recipes used elsewhere out of necessity.  Lode
also anneals faster when carried (it's exposed
to more air cooling).
2023-10-09 22:37:50 -04:00
Aaron Suen
5d8e2d9eb4 Add radius param to some cheats
This should make it easier to snuff mass
fires created by griefers quickly.
2023-06-09 21:45:18 -04:00
Aaron Suen
fa77bd41bc Retire MT 5.5 support 2023-05-09 06:42:36 -04:00
Aaron Suen
591dc2c23b Notes check, small hint tweak 2023-04-28 22:00:34 -04:00
Aaron Suen
ad2e135378 Notes update 2023-04-14 06:38:22 -04:00
Aaron Suen
d2742bef22 Merge notes 2023-04-04 06:18:52 -04:00
Aaron Suen
4b26d420d4 Add cloudstone, a bright white concrete
The inability to make solid white surfaces
has been a significant limitation to in-game
artistic expression for a while; this is an
inexpensive fix for that.
2023-01-01 12:13:13 -05:00
Aaron Suen
da9ff10668 Fix the "shrub/leaves infinite falling" bug 2023-01-01 11:08:00 -05:00
Aaron Suen
48a8aa4a32 Compatibility hack for broken get_mod_storage pre-5.6 2022-12-12 07:29:25 -05:00
Aaron Suen
02516e470b Note about API change in 5.6 2022-12-09 23:14:42 -05:00
Aaron Suen
fa86f42e21 Fix consume_wield on tools
It shouldn't consume the whole tool, but
should wear it.  Without having groups to
use, just wear the tool based on whichever
group is most "lenient" in terms of uses.
2022-12-09 23:05:21 -05:00
Aaron Suen
453dd0b1f7 Random image reoptimization 2022-11-08 06:33:44 -05:00
Aaron Suen
132af504a9 Notes organization 2022-11-05 18:11:36 -04:00
Aaron Suen
073b2e43ff Make screenshot world players invisible
- Prevent them from interfering with each other if
  one machine is used to host the game in "Host
  Server" non-dedicated mode and another is used
  to actually join to take the screenshot.
- Multiple player YCTIWY things shouldn't happen
  anymore.
2022-11-05 16:24:16 -04:00
Aaron Suen
3fdcd8407a New, repeatable cover image for alpha
- Rebuild alpha image on demand from updated release image and
  some filters and masks.
- Don't bother including the "release" screenshot in the alpha
  edition listing, since it's sort of redundant and makes the
  CDB page layout look a bit crappier on most screen sizes.
2022-10-31 08:02:44 -04:00
Aaron Suen
4acf592b86 Standardize version update announcements
Announce to global chat on startup (for chat
bridges) and to each player on join, if the version
is different than the last time.
2022-10-30 14:28:12 -04:00
Aaron Suen
c030ce81e9 Make AISMs run properly in falling_node ents 2022-10-28 20:43:00 -04:00
Aaron Suen
ba9d47a25c Notes updates 2022-10-27 07:46:20 -04:00
Aaron Suen
b393ce0a93 Improve player zoom control, doc updates
Players can use sneak and/or aux1 for far-zooming, so they can
far-zoom while treading water in an ocean to look at distant
islands, instead of using the aux1=climb down hack, which causes
all sorts of weird issues with other features that try to detect
movement controls
2022-10-25 07:48:01 -04:00
Aaron Suen
01a301e778 Notes tidying 2022-10-23 14:58:16 -04:00
Aaron Suen
bc8f692606 Update official main screenshot 2022-10-19 00:51:56 -04:00
Aaron Suen
f3b20c7f0c Make vertical door conveyors useful
Add a centrifugal/centripetal component to door
conveyance when it's on the vertical axis, to
help prevent gravity from immediately undoing
the work.
- Items propelled by the bottom of a door are
  also pushed outward.
- Items propelled by the top a door are also
  pulled inward, landing atop where the door was.
2022-10-16 10:39:27 -04:00
Aaron Suen
9c63785703 Remove todo item for brick bonding
There IS actually a mechanism to detect it,
though I'm not exactly sure how to use it.
Players need an opportunity to discover that
method and prove whether or not it can be
exploited to make a proper machine.
2022-10-16 09:44:44 -04:00
Aaron Suen
1666909a14 Door timing determinism fix
Door recursion is now always:
- Breadth-first, so paths with fewer door-to-door
  interactions always "win".
- Random-ordered within each depth layer, so
  there are are no biases in door operation order.
2022-10-16 09:25:00 -04:00
Aaron Suen
b7261ab792 Allow overriding optic opacity via groups
Looking into the possibility of making everything
overridable for game-logic purposes by group, it
turned out to be a bit of a nightmare.  Also, instead
of overriding them at the "heuristic" layer, it's
probably better to simply allow overriding at the
specific game logic level, e.g. so that multiple
systems that use the same source data for heuristic
purposes can have differing behavior.
2022-10-09 11:57:36 -04:00
Aaron Suen
a15146dc4c Notes/issues 2022-10-02 09:48:40 -04:00