Skip to content

Releases

v0.19.5

Choose a tag to compare

@anxo0 anxo0 released this 30 Sep 08:58

Hay a guest puts on a belt goes through splitters now. It includes 0.19.4.

Hay tufts a guest drops on a belt go through splitters and on to the end (reported by xxKipxkipxx, thank you). A belt takes most items out of the item list, and the guest then hands them to the host, who runs the real belts. A tuft stays an item while it rides, so it was never handed over: it rode only the guest's own belt, which just copies the host's. At a splitter it went off the path and back to the start over and over. The guest now hands a tuft to the host as soon as its belt catches it, and the host's belt carries it like any other.

Hay the host puts on a belt no longer stops when a guest with a spade stands next to it. The spade change in 0.19.4 also took over tufts riding a belt, and that froze them in place. Now it only takes loose ones on the ground, and only while you dig.

If you crash, send mp_trace.log from %APPDATA%\Godot\app_userdata\Haystack Incremental\ along with the newest crash log from the crashes folder. If you have opened the game again since, send mp_trace.prev.log instead.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

install-helper.bat below does it for you. Every player needs this same version.

v0.19.4

Choose a tag to compare

@anxo0 anxo0 released this 29 Sep 22:36

Hay tufts can be picked up by the other player, and a much lighter crash trace. It includes 0.19.3.

Hay tufts the other player dropped can be picked up now, by hand and with a spade. These are the little piles a full spade leaves when you empty it on the ground. Only the player who made one could pick it up again: a new tuft has no collision until its own physics tick checks that no straw is inside it, and that tick does not run on the other player's copy, so the copy stayed out of everyone's aim. The copy gets its collision right away now.

The crash trace is much lighter. mp_trace.log filled its 4 MB in about 18 minutes, so the start of a session was lost by the time anyone looked. The messages that arrive many times a second are now counted on one line per second instead of one line each.

Straw a guest throws by hand into a hopper, or onto a belt that feeds a machine, is taken since 0.19.3 (#17). We checked it again in a two-player test.

If you crash, send mp_trace.log from %APPDATA%\Godot\app_userdata\Haystack Incremental\ along with the newest crash log from the crashes folder. If you have opened the game again since, send mp_trace.prev.log instead.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

install-helper.bat below does it for you. Every player needs this same version.

v0.19.3

Choose a tag to compare

@anxo0 anxo0 released this 29 Sep 21:11

The fix for the guest crash within minutes of joining, confirmed over Steam. It includes 0.19.2.

The guest crash within minutes of joining is fixed (since 0.19.2, see #15, thank you oogienl). A two-player session over Steam on 0.19.2 ran with no crash.

Machines the host puts up no longer stay a half-built green hologram on the guest's screen. While a machine is being built, the game swaps its materials for the build hologram. The mod read that as the machine's own material and copied it, so the guest got the hologram's values and the game never put the real material back. The build hologram is left alone now.

Loose straw a guest drops into a machine's hopper is taken, for example what falls off a full spade. On the host it was a frozen copy, and a machine will not eat a frozen straw. The host now makes it a real straw of its own, and its machine eats it once. Straw thrown in by hand is not always taken yet, and straw a guest drops on a belt is still a known bug (#17).

Paint boards show the same drawing for everyone. A finished stroke, an erase or a wipe goes to the others, and a player who joins gets the boards as they are. A board showing a drawing from a player's own sketchbook is left alone, since the sketchbook is personal.

If you crash, send mp_trace.log from %APPDATA%\Godot\app_userdata\Haystack Incremental\ along with the newest crash log from the crashes folder. If you have opened the game again since, send mp_trace.prev.log instead.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

install-helper.bat below does it for you. Every player needs this same version.

v0.19.2 (test build)

v0.19.2 (test build) Pre-release
Pre-release

Choose a tag to compare

@anxo0 anxo0 released this 29 Sep 20:43

Test build, not on Nexus yet. It is being tried over Steam between two PCs first.

Over Steam, machine updates go out in small pieces. The crash trace from 0.19.1 caught two guest crashes over Steam, and both came right after the host's big machine update arrived (up to 9 KB in one message). It has never happened over a direct connection. Each machine's moves, lights and effects now go out in messages of about a kilobyte. A direct connection is unchanged.

A finer crash trace. It now says which machine was being updated, and marks each frame that went by, so after a crash it shows whether the last message had finished.

F6 no longer floods the log with "debug_menu doesn't exist" errors on the 29 September game build.

If you crash, send mp_trace.log from %APPDATA%\Godot\app_userdata\Haystack Incremental\ along with the newest crash log from the crashes folder. If you have opened the game again since, send mp_trace.prev.log instead.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

install-helper.bat below does it for you. Every player needs this same version.

v0.19.1 (test build)

v0.19.1 (test build) Pre-release
Pre-release

Choose a tag to compare

@anxo0 anxo0 released this 29 Sep 11:45

Test build, not on Nexus yet. It is being tried over Steam between two PCs first.

Free buildings from missions no longer multiply. Taking down a gift (a power pole, a rake or a cabinet) handed it back to both players, so every dismantle made one more free building. Only the player who takes it down gets it back now.

A crash trace. The guest crash over Steam still happens and leaves nothing useful in the game's crash log. The mod now writes mp_trace.log in %APPDATA%\Godot\app_userdata\Haystack Incremental\: which messages it received, and when the heavier jobs start and end. After a crash its last lines say what was being handled. If you crash, send it along with the newest crash log from the crashes folder. If you have opened the game again since, send mp_trace.prev.log instead. It stays on your PC and holds no chat or names.

Checked against the game update of 29 September (V41). Nothing the mod uses has changed.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

install-helper.bat below does it for you. Every player needs this same version.

v0.19.0

Choose a tag to compare

@anxo0 anxo0 released this 29 Sep 00:42
f7ac823

A big batch of sync fixes, most of them from mtailordev, who read the mod against the game, found them and sent them in as a pull request with a test for each one. Thank you. It includes 0.18.1's straw fix.

Everyone has to update. Some of the messages between players changed shape, so 0.19.0 and 0.18.x will not join each other.

Guests no longer crash when they quit. The game took the world down before the mod could undo its changes to it; the mod now cleans up first.

The pile is the host's. Guests hand their digging to the host, which settles it and sends the result to everybody, so two players digging the same spot no longer end up with different piles. Every few seconds the host also sends a checksum of the pile, and a guest whose pile drifted asks for just the part that is off.

Needles are held once. If two players grab the same needle at the same moment, one of them gets it, so it cannot be handed in twice. A guest who leaves holding a needle drops it where they stood, and the needle a farmer holds now shows the right type.

Money is paid once. Missions pay on the host only; a tech rank two players buy at the same moment is paid for once; and a hay load the host cannot take for a guest is refunded.

Machines. Smoke and glow set on one machine no longer show on every machine of that kind, big machine updates no longer get lost, and a machine whose position came out a hair different on each side is still recognised.

Smaller things. Enclosed belt covers and the demo's withheld buildings survive a guest building something; item ids no longer clash after a resync; the pile's starting shape travels with the world; career stats are not credited with the whole team's work; the leaderboard is off while the mod is loaded; nothing is written into the game folder any more.

As always, if a guest crashes, the newest crash_....log in %APPDATA%\Godot\app_userdata\Haystack Incremental\crashes is what I need.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

A game update replaces override.cfg, so if co-op disappears from your menu after one, add those lines again. install-helper.bat below does it for you. Every player needs this same version.

v0.18.1

Choose a tag to compare

@anxo0 anxo0 released this 29 Sep 00:27
616d768

A fix for the crash guests still got on 0.18.0 while the host was building. Going through Steam's relays was not the answer to that one; thanks to everyone who came back and said so, and to Mies117 for the crash log that pointed the right way.

A guest's game could crash while the host was building. The game recycles its straw: a straw that gets used up, scooped by a bucket or the vac or eaten by a belt or a machine, leaves the world, and the same piece comes back later as a different straw. The mod kept hold of its copies of the host's straw through that. It kept moving them, kept reading where they were after they had left the world (the "!is_inside_tree" errors at the end of the crash logs), and when the host's straw went away it put the piece back in the pool a second time, while a belt, a hand or a machine was using it as something else. Building moves and clears a lot of straw, which is why it happened then. The mod now lets go of a straw the moment the game takes it out of the world.

In a test where the guest's game used up some of its copies and then made straw of its own, the host clearing its straw used to wipe out all ten of the guest's own straws. Now all ten stay, and there are no errors on either side.

I cannot reproduce the crash itself without two PCs on Steam, so please tell me either way. If it still happens on 0.18.1, the newest crash_....log in %APPDATA%\Godot\app_userdata\Haystack Incremental\crashes is what I need.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

A game update replaces override.cfg, so if co-op disappears from your menu after one, add those lines again. install-helper.bat below does it for you. Every player needs this same version.

v0.18.0

Choose a tag to compare

@AleDev11 AleDev11 released this 28 Sep 17:50

Everything reported on the page after 0.17.0, in one go. Two of these are
fixed and tested; the third is a strong lead that needs a Steam game between
two PCs to confirm, so please report back either way.

Hay a guest drops on a belt now gets there. The guest's own belt picked the
item up, and the host's next belt update wiped it, so it was gone before any
machine at the end of the line could see it. The guest now hands it to the
host at the spot where it landed, the host's belt carries it, and the machine
takes it like any other hay. Five wads dropped by a guest used to arrive as
none; now all five ride on both screens.

Contracts are run by the host, so the truck is one truck. Every player was
running their own: their own truck on their own timer, their own count of what
had been loaded, and a finished order paid on the guest as well, which reached
the host as more money, so the completion bonus came twice. A bale a guest put
in the truck could also be counted more than once. The guest's truck now
arrives, parks and leaves with the host's, the load stacks the same, the board
shows the same count, and the money comes once. Twenty bales loaded by a guest
counted twenty, and 150 was paid once, the same on both screens.

Steam games go through Steam's relays only. The crash some of you get a
while after joining, or when building and demolishing, was traced by one
player's crash dump to an assert inside Steam's own direct peer-to-peer code.
A crash there takes the whole game down without an error of its own, which is
exactly the pattern in the crash reports. That path is now switched off, so
everything goes by relay instead. It costs a few milliseconds and keeps
everyone's IP address private as a side effect.

I could not reproduce the crash over a direct connection: building and
demolishing splitters, generators, rakes, belts and platforms with hay running
through a splitter line never dropped anyone. And I cannot test the Steam half
on my own, because it takes two machines and two accounts. So this one is a
strong lead, not a confirmed fix. If it still happens on 0.18.0, the crash log
in %APPDATA%\Godot\app_userdata\Haystack Incremental\crashes is what I need,
the newest crash_....log in there.

A big yard no longer gets stuck on its way to a guest. The world goes over
in one go, and Steam would refuse anything past half a megabyte, so a large
save could leave a guest waiting forever. That limit is now eight megabytes.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add
these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

A game update replaces override.cfg, so if co-op disappears from your menu
after one, add those lines again. install-helper.bat below does it for you.
Every player needs this same version.

v0.17.0

Choose a tag to compare

@AleDev11 AleDev11 released this 27 Sep 14:29

Hay a guest loads into a machine finally counts. This is the other half of
0.16.0, and with it the machines work the same for everybody.

A machine takes in whatever is sitting in its mouth, but it skips a frozen body
that is not riding a belt. A copy of an item somebody else owns is exactly
that: frozen, so that the two of you cannot both count it. The result was that
a guest could tip wad after wad into a generator and nothing ever burned, which
is what several of you reported as "the machine won't accept what my friend
puts in".

The host now takes over an item that has come to rest in a machine's mouth,
which unfreezes it, and then the machine's own code swallows it exactly as it
would for the host's own hay. It burns once, on the host, and everyone watches
the fuel move.

An item somebody is carrying is left alone, so walking past a generator with a
bale in your arms does not feed it to the machine.

Checked with two instances: the host puts a generator down, the guest drops a
hay wad into its mouth, and the host's generator goes from no fuel to a full
wad's worth while the guest watches it burn down. The wad is gone on both
sides, with no leftover copy, and the guest's own generator never ran, so it
was only ever counted once.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add
these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

A game update replaces override.cfg, so if co-op disappears from your menu
after one, add those lines again. install-helper.bat below does it for you.
Every player needs this same version.

v0.16.0

Choose a tag to compare

@AleDev11 AleDev11 released this 27 Sep 14:08

Guests can work the machines now.

Until this version a machine's panel was read only for anyone who was not
hosting. You could open it, you could flip the switch, and nothing happened:
the machine runs on the host, and the host never heard about it. Flip it now
and the machine actually does it, for everyone.

What a guest can change:

  • on and off, on every machine that has a switch
  • throw distance on a piston rake and a pelletizer
  • aim and power on a tube launcher
  • which way a splitter sends things, and its priority side
  • a robotic arm's tier and what it accepts
  • a scanner's tier
  • a work lamp's brightness, and its switch

What a guest still cannot change, on purpose: fuel, stock, output, whatever a
machine has banked. Those are the host's to count. If a guest's word were
taken for them the same hay could be paid for twice, which is the one thing a
co-op mod must not do. The host also restates its own value straight after
every change, so if it does not accept one, the guest's panel goes back to
what is really there rather than sitting there lying.

Not in yet: hay a guest feeds into a machine by hand. It still rides the
belt on the guest's screen and the machine never takes it, so for now the host
is the one who loads them. That is the other half of this and it is what I am
working on next.

Checked with two instances: the host places a rake, the guest flips its switch
from its own copy, and the host's machine comes back switched off, with the
guest still matching. One packet, not a stream of them.

Install is unchanged: copy the mods folder next to FindTheNeedle.exe and add
these two lines to override.cfg.

[autoload]
MPMod="*mods/multiplayer/mp.gd"

A game update replaces override.cfg, so if co-op disappears from your menu
after one, add those lines again. install-helper.bat below does it for you.
Every player needs this same version.