1601 Commits

Author SHA1 Message Date
Aaron Suen
068937c482 Remove ABM laundering
See if this helps smooth out performance
issues in 5.3+.  It was never confirmed to
increase the number of ABMs we were able
to successfully process anyway.
2020-06-27 19:22:00 -04:00
Aaron Suen
72839b1a74 Fix press and other late-registered recipes 2020-06-27 19:03:49 -04:00
Aaron Suen
8b96b96a29 Tidy up startup reports 2020-06-27 18:49:17 -04:00
Aaron Suen
085f700982 Fix ABM muxing, maybe?
Results so far are quite good: reduced ABM
total count from 82 to 36 (~60%) and got it
under the magic cache limit of 64.
2020-06-27 17:36:42 -04:00
Aaron Suen
88899be57b Experimental ABM Multiplexing
Detect ABMs that share the same "signature"
except for the central nodenames, and use a
single ABM to run them, looking up the core
bodies to run based on nodename on the Lua
side.  This could reduce the total number of
ABMs we're using by almost half, and
mitigate some of the performance issues
that MT continues to have with ABMs.
2020-06-27 16:37:47 -04:00
Aaron Suen
e7911dd7fd Fix crash on empty craft set 2020-06-27 13:32:03 -04:00
Aaron Suen
7ae24bf7fa Further craft set reductions
- Merge the "legacy, could be anyting" sets
  into every other set so we can do only 2
  set lookups instead of 3.
- Make sure we don't do any duplicate
  recipe checks.

N.B. the craft priority order MAY be different
now, since primary node recipes are
checked before visinv stacks.
2020-06-27 13:00:34 -04:00
Aaron Suen
b2f78c0daa Indexing for craft checks
By restricting the recipes we check based
on the name of the central object being
checked, we can do many fewer craft
checks per item and avoid expensive
checks.
2020-06-27 12:20:35 -04:00
Aaron Suen
42f125c716 Make most recipes indexable
Register a "rootmatch" property for all
recipes that represents a broader, quicker
test for recipe eligibility.  False positives are
allowed but false negatives are not.

Since most recipes are eligible, we can
use this to build an index for fast lookups
of subsets of recipes to run and skip most
of the other ones.
2020-06-27 11:06:43 -04:00
Aaron Suen
11515cb39f Make sinking concrete destroy water
Previous behavior--displacing--was causing
water sometimes to get shoved up above the
surface and remain there.
2020-06-26 14:41:49 -04:00
Aaron Suen
4b8d1b12e5 Fix a set_sky crash
We can't use push incremental changes to set_sky, we need to
push the whole sky definition each time.
2020-06-26 18:23:44 -04:00
Aaron Suen
775718256d Fix item entity bugs
- Crash due to pos being non-nil but velocity being nil?!
- Excessive item merging, i.e. on splitting planks, cancelling
  out outward item ejection.  Items now only merge at low
  absolute speed (detecting groups with low relative speed is
  too difficult to do efficiently for now).
2020-06-26 06:11:19 -04:00
Aaron Suen
7c5c8f68cf Tote placement fixes
Fix noisy prediction and quiet unpack
2020-06-25 23:35:55 -04:00
Aaron Suen
e9639c856f Entity merges conserve momentum 2020-06-25 23:03:56 -04:00
Aaron Suen
dcdf3a6fc8 Efficiency tweak
Don't repeat string conversions
unnecessarily
2020-06-25 22:46:03 -04:00
Aaron Suen
70c5dcf191 Efficient rebuild of item entity merge
- O(n) efficiency walk of item entities
- Honor stack family merging, e.g. differing lux levels combine

Since the new walk should be much more efficient, the need to
handle "extremal" cases specially, e.g. creation of a multi-stack
ent, is probably unnecessary.  Remove it from the task list,
barring any future evidence that it's still relevant.
2020-06-25 07:50:34 -04:00
Aaron Suen
1d05d0bd41 Remove redundant lux reaction check 2020-06-25 07:41:25 -04:00
Aaron Suen
de4748591c Reorg docs, close a couple minor issues. 2020-06-25 07:07:51 -04:00
Aaron Suen
f31901a93a Redo screenshots again, change up alpha filter again. 2020-06-24 19:30:40 -04:00
Aaron Suen
11d9f63564 Include full screenshot as secondary on alpha page. 2020-06-24 19:07:32 -04:00
Aaron Suen
a4942d994c Update official screenshots. 2020-06-24 19:04:41 -04:00
Aaron Suen
e14c85c64b Note that we need to update CDB screenshot again by now 2020-06-24 08:34:42 -04:00
Aaron Suen
e06fff7620 Pumice quenching can now affect water too
Face-touching water can be converted to pumice instead of the
flowing lava (e.g. lava intrudes into that space and quenches
instead) creating even more of a mess.
2020-06-24 08:21:43 -04:00
Aaron Suen
e7bd68a24b Reduce optic tick speed to 12Hz
This is the GCF between 60Hz and 144Hz
displays, so ideally a beefy enough
machine should be able to run optics
smoothly either way.
2020-06-24 08:16:51 -04:00
Aaron Suen
ec86f0f130 Reawaken optic circuits more reliably on load 2020-06-24 08:11:44 -04:00
Aaron Suen
2ea41b27ea Allow optic ticks to "slip" under load
If the server can't handle optics, it would lead to a
runaway effect and bring the system down.  Instead
only process up to half a second worth of optics on
each tick, so that this effect is capped and the server
will at least be able to chug along.
2020-06-24 08:03:42 -04:00
Aaron Suen
7b44fb2b29 Make optic systems tick at a consistent Hz 2020-06-24 07:45:20 -04:00
Aaron Suen
27ee0f9f7b Another attempt to quantize skybox textures
Using pngquant this time, instead of GIMP.  It seems pngquant at
least is smart enough to preserve the exact RGB value of the
single most common color used in all the images.
2020-06-24 07:25:44 -04:00
Aaron Suen
a7faf730f6 Skybox wishlist item fulfilled 2020-06-24 01:23:12 -04:00
Aaron Suen
baed978f6e Cap nodefall disturbance distance
Teleportation should cause some disturbance, maybe
plausibly even extra disturbance, but it shouldn't be
unlimited.
2020-06-24 00:53:38 -04:00
Aaron Suen
9d912311cf Another attempt at correcting color
This time, avoid touching the stars and just re-fill the
pure blue part of the sky.
2020-06-24 00:23:01 -04:00
Aaron Suen
16aa202cbb Revert "Fix skybox colors"
This reverts commit 9bd49cc78a7aeb2b228cc563a395bd912fbdf9f0.
2020-06-24 00:19:53 -04:00
Aaron Suen
ad0952a773 Optimize rake entity handling 2020-06-23 23:38:32 -04:00
Aaron Suen
9bd49cc78a Fix skybox colors 2020-06-23 23:10:09 -04:00
Aaron Suen
2999a1fc18 Fantastic new skybox by WintersKnight94 2020-06-23 21:14:41 -04:00
Aaron Suen
0929d007ce Use nodecore.interval where appropriate
Fixes deprecated get_connected_players() at load time issue
2020-06-23 06:43:34 -04:00
Aaron Suen
5379c14935 Fix some player visibility bugs 2020-06-23 00:44:54 -04:00
Aaron Suen
b44ad836a3 Fix skin bug, add shirt cuffs 2020-06-23 00:21:17 -04:00
Aaron Suen
cb009e7201 Merge branch 'playerstep' into dev 2020-06-22 23:49:55 -04:00
Aaron Suen
1caa2e6285 Fix sunrise tint texture 2020-06-22 23:40:31 -04:00
Aaron Suen
79717b0d82 Remove failed profiler instrumenting 2020-06-22 23:19:14 -04:00
Aaron Suen
466805da48 Enroll skybox, fix some bugs 2020-06-22 23:17:01 -04:00
Aaron Suen
5648331c9f Replace all perplayer with playerstep 2020-06-22 22:47:33 -04:00
Aaron Suen
be452b4d52 Finish base playerstep API
Now all that's needed is converting existing
mods for proof of concept.
2020-06-22 21:14:40 -04:00
Aaron Suen
4559f92694 Newest player skin by WintersKnight94 2020-06-22 09:59:52 -04:00
Aaron Suen
fe541da006 Make a note of a problem that can happen in MP. 2020-06-22 07:33:30 -04:00
Aaron Suen
7ddca3e73a Start work on new player API...? 2020-06-21 15:32:18 -04:00
Aaron Suen
dd5e92266e Skip laundered ABMs on first tick
When unlaundered ABMs run, give the
laundered ABM pump a rest for 1 tick, to
ensure we don't run 2 batches worth of
ABMs on any 1 tick, to smooth things out.
2020-06-21 15:00:26 -04:00
Aaron Suen
ebcc7921e9 Smooth laundered ABMs across multiple ticks 2020-06-21 14:46:30 -04:00
Aaron Suen
77ee30d1a2 Notes 2020-06-21 11:53:34 -04:00