Repository navigation
Releases: thennak3/fallout-tactics-coop
Release list
0.12.0-beta: every player keeps their selected squad members across reloads and map changes
Every player keeps their selected squad members across save-and-reloads and map changes. Every player should install it (0.11.0 or later is needed to play together).
New
- Your selection stays. After a save-and-reload (a player joining, a drift being put right, a save) or a move to the next map, each player has the same squad members selected as before, instead of the game's default of everyone. After a map change the same characters are picked again. If you change your selection in the first moments yourself, yours stays. To turn it off, put
[coop]andkeep_selection=0in a fileftcoop.ininext toBOS.exe.
Tested
In the game, 3 players, each with two squad members selected: after a save-and-reload all three games had exactly those two selected again, and the squad bar showed them with their portraits as normal (49/49, twice); after a move to the next map, the same two characters were selected again (32/32). The usual save-and-reload (40/40), map change (26/26) and joining mid-session (37/37) still pass.
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything goes wrong.
0.11.0-beta: a faster mid-session join, and a big round of fixes (all players must update)
A slightly faster mid-session join, and the end of a big round of fixes. Every player must install this version (it won't play with 0.10.x).
New in 0.11.0
- Joining a game in progress is a little faster: the joining player now downloads and loads the host's save while the host's own game reloads, instead of after it. About 0.5 s off a ~9.4 s join. Most of the rest is DirectPlay setting up its network connection, about 2.5 s on each side; that's the next thing to work on.
Since 0.10.3, in short
- Shopping, gambling and trading pause nobody, and no longer cause save-and-reloads afterwards.
- Every player's quartermaster has the same stock (and it is put right if it ever differs).
- Players leaving or coming back in the middle of a shop, conversation, save or level-up no longer leave the others stuck or locked out.
- A host playing alone can move after a conversation or shop.
- Pings stay on their spot of the ground.
- Behind it: an offline fuzzer that plays hundreds of thousands of random 2 to 4 player sessions with the worst timings, and catches every one of the 30 bugs fixed in that time when they are switched back on.
Tested (this version)
In the game: joining mid-session (5 runs, 37/37), joining from the menu (34/34, and with a cancelled load 36/36), a save-and-reload with 3 players (40/40), mission to world map to mission (26/26), the world map (35/35), a joiner's conversation (31/31), a save-and-reload during a shop (28/28). Offline: the full fuzz suite, all clean.
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything goes wrong.
0.10.10-beta: players coming and going leave no locks or hidden screens behind
Players coming and going no longer leave locks or hidden screens behind. Every player should install it (0.10.9 or later is needed to play together at all).
Fixed
- A player who leaves with a level-up screen open: that character stayed locked for everyone until the next save-and-reload, and every recruiter refused everyone meanwhile ("a player is levelling up"). The host now closes it for them once it notices they are gone (about 15 seconds).
- A save-and-reload during another player's visit to the recruiter: the recruit screen the other games keep in the background (so everyone's game makes the same things) survived into the reloaded game, and the next conversation's end removed it from a world that no longer existed. That could crash. It now goes with the old world when the load starts.
- Another conversation ending during a recruit visit (for example a trader's, or the end of a conversation of a player who left) closed that background recruit screen too early, and the games went apart. Only the recruiter's own conversation closes it now.
- A player who leaves and comes back quickly (within 15 seconds, without restarting the game) kept their old shop, conversation, save or level-up open on the host. Coming back now counts as having left first, and their next conversation works normally.
How these were found
The offline fuzzer now also plays level-ups, recruiting, the world map, and the 15 seconds the host takes to notice a player is gone. It found all four. Every bug fixed since 0.10.2 can be switched back on in it, and it catches each one.
Tested
- Offline: 2000 sessions plus 60,000 more (20,000 of them 2 minutes long), all clean; every past bug caught when switched back on.
- In the game, 3 players: two players levelling the same character at once (23/23), a level-up (38/38), recruiting by the host and by a joiner (45/45 each), a save-and-reload mid-mission (40/40), and a player's game killed in the middle of a conversation (50/50). The log checker found nothing wrong in any of their logs.
- Not staged in the game yet: a reload during a recruit visit, a player leaving with a level-up open, a quick rejoin (offline only).
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything goes wrong.
0.10.9-beta: players leaving mid-conversation or mid-save no longer hold everyone (all players must update)
Every player must install this version. The games now compare more when they check they are in step, so a mix of 0.10.9 and older versions won't play together.
Fixed
- A player who leaves in the middle of a conversation (with a story character, where everyone waits): the others waited for that conversation for up to 10 minutes, and that character stayed taken. The conversation now ends for everyone once the host notices that player is gone (about 15 seconds without a word from their game), also when they leave just after starting it.
- A player who leaves while saving (while everyone holds for the save), or just after asking to save: everyone waited for up to 10 minutes. The game now goes on for everyone once the host notices that player is gone, without that save.
- A slow connection and saves: a player whose game lagged behind could miss the end of someone's save and stay held for 10 minutes. Now it isn't missed.
- The quartermaster's stock going wrong in the middle of a session was only put right by the next save-and-reload, so every shop until then was made differently on that player's game. The games now check the stock too, and the host sends its stock again if it differs, without stopping anyone.
How these were found
All by the offline fuzzer added in 0.10.8, which now also plays conversations, saves and the quartermaster's stock: hundreds of thousands of random 2 to 4 player sessions with players leaving and joining at the worst moments. Every bug fixed so far, from 0.10.2 on, can be switched back on in it, and it catches each one. A real night where one player's game had no quartermaster stock replays in it too.
Tested
- Offline: 2000 sessions plus 40,000 more (including 2-minute sessions), all clean; every past bug caught when switched back on.
- In the game, 3 players: a trade with a 10 s shop (69/69), a conversation where everyone waits (45/45), a save-and-reload mid-mission (40/40), and a player's game killed in the middle of a conversation: the host noticed 15 s later and the conversation ended on every game left, which went on. That run first showed the host never noticed a player leaving while everyone held (it only checked between game frames, and none run then); fixed and run again.
- Not tested in the game: a player leaving while saving (offline only).
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything drifts.
0.10.8-beta: a player leaving mid-shop no longer leaves the shop open
A player who leaves in the middle of trading no longer leaves the shop open for everyone else.
Fixed
- A player who leaves (or loses their connection) while trading. Their shop stayed open on every other player's game until the next save-and-reload: the merchant stayed taken, everyone's item moves waited, and any save-and-reload (one bringing a new player in, too) waited up to 2 minutes for that shop. Now the host closes it for everyone the moment that player is gone, without their purchases. The same if they leave just after asking for the shop, before it opened.
How it was found
New this release: a fuzzer for the mod's sync decisions, running on a fake game world with no game at all. It plays thousands of random 2 to 4 player sessions with desyncs forced on purpose (counters apart, an empty quartermaster, a stray entity on one game, players coming and going mid-shop), and checks that every game ends up the same, nothing stays stuck, and no reload happens that a correction would have avoided. It found this bug in its first minutes. Every bug fixed in 0.10.5 to 0.10.7 can be switched back on in it, and it catches each one.
Tested
- In the game, 3 players: a joiner's game killed 2 s into its shop. The host closed the shop for everyone, the other joiner closed it at the same moment, no drift afterwards.
- The fuzzer: 2000 random sessions clean; all 6 past bugs caught when switched back on.
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything drifts.
0.10.7-beta: gambling and every trader pause nobody
Gambling and every other trader pause nobody.
Fixed
- Talking to the mechanic, or any trader who gambles, paused everyone. Every trader now pauses nobody, as the quartermaster does: those who barter and those who gamble too. A gamble is sent to every player when you press Gamble and opens at the same moment everywhere; when you leave the gamble screen, what you won or lost reaches the other players as a trade does.
Tested
With the mechanic, on a bunker save from later in the campaign:
- The host gambles (450 caps on a crowbar, lost): the games stayed identical at every checked frame, all 39 drift checks after the gamble matched, no save-and-reload (52/52).
- A joiner gambles with 3 players: the same (69 of 70 checks; the one left over expects the game's own pauses to even out, which a gamble's don't, though nothing paused: all of them were held back as in a shop).
- A trader who only barters: the trade reaches the other player and nobody pauses.
- The quartermaster trade still passes (52/52).
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything drifts.
0.10.6-beta: no reloads after shops and loads, the same quartermaster stock everywhere
Far fewer drifts: no save-and-reload after shops or loads, and quartermasters sell the same everywhere.
Fixed
- A save-and-reload after nearly every shop. While a shop is open, the shopper's game has things the others only get when it closes, so the drift check always found a difference and reloaded everyone right after the shop. Checks made during a shop no longer count, and corrections and reloads wait for the shop to close.
- The quartermaster with nothing to sell, and a drift after browsing. A joiner's game could have an empty quartermaster stock while the host's was full: every shop was then made without its stock on the joiner's game, and the games went apart from there. At the start of every session the host's stock now goes to every player.
- A drift right after every load, when the players' games had been running for a long time (a counter the save doesn't keep). Every game now takes the host's at the start of each session.
- Everyone frozen for about 10 seconds, then a reload, when two joiners reported the same drift at once. One correction now fixes both, with no reload.
- A reload saved in the middle of a shop. A save-and-reload asked for while someone shops (a player joining, a drift) now waits until the shop closes.
- Your inventory from a vehicle was closed as "another player is searching that". (Not tested by the bots: no test save has a vehicle.)
- Traders who only barter now pause nobody, like the quartermaster. (Not tested yet.) A trader who also gambles, such as the mechanic, still pauses everyone.
Tested
- The host shops for 20 s with 3 players: no check counted during the shop, every check after it the same (48/48).
- A joiner without the quartermaster's stock: in 0.10.5 its shop had 0 items and the games drifted (47/52); now it has the host's 29 items and the games stay the same (52/52).
- Joiners whose counter ran 5000 ahead: the same on every game from the first frame, no drift (25/25). With 3 players and that counter not synced, both joiners report the same drift and one correction fixes it, no reload (40/40).
- A save-and-reload asked for during the host's shop waits for the close, and every game has the same stock afterwards.
- A joiner shops for 15 s with 3 players while another moves items (70/70); a reload during a joiner's shop (28/28); a host alone after a conversation (8/8).
- New: a simulator for the drift check's decisions (
test\sim\run_sim.bat), without the game: 7/7, and it fails as 0.10.5 did when the old behaviour is switched back on.
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything drifts.
0.10.5-beta: a host alone can move after a conversation or shop
A host playing alone can move again after a conversation or a shop.
Fixed
If you hosted co-op with nobody joined yet, your game stayed paused after a conversation or a shop closed, and no squad member could move again. Your own game holds while a conversation is open, and that hold was released only when there were other players to send the changes to. A host on their own now gets it released too. With other players in the game nothing changes. This had been there since 0.10.0; every playtest and test had a joiner, so it never showed up.
Tested
- New host-only tests, with no joiner: after a conversation with the recruiter (which holds the host's game) the game runs on and a squad member walks off (7/7); after buying and selling with the quartermaster the same (8/8).
- The host's conversation with a joiner in the game (30/30) still brings the joiner up to date.
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything drifts.
0.10.4-beta: merchants unlocked after a re-sync, pings on the ground
Merchants unlocked after a re-sync, and mission pings that stay on the ground.
A re-sync while someone shops
If a re-sync happened while a player was in a shop, the other games kept believing the shop was open for the rest of the evening, even after going back to the menu: the merchant refused everyone ("a player is trading") and the shopper's character could not be ordered. Every new session (a load, a re-sync, coming back from the menu) now clears all the locks: shops, conversations and character screens.
A new bot test re-syncs while a player is in the shop. It found four more things that went wrong in that moment, all fixed:
- The reload closing the shop window was taken for the player leaving the shop: their game was sent to the host and everyone reloaded twice more.
- The shop's close, run while the game was unloading, sent the others a deal measured from a half-unloaded game.
- A drift seen during the shop started a second re-sync straight after the first.
- The shopper ignored the host's next drift correction, so the games stayed apart until another reload.
Mission pings stay on their spot
A middle-click flag in a mission stayed fixed on the screen while the ground scrolled under it. It now stays on the spot of the ground where it was placed: it moves with the ground as you scroll, and a flag placed out of your view appears when you scroll onto it.
Tested
- Re-sync while the other player shops (28/28): afterwards the host moves the shopper's character and talks to the merchant, nothing is refused, no extra reload, the games match.
- Mission pings (39/39): each game places a flag beside a squad member, then scrolls a little, far away and back. The flag keeps its place against that character, measured with the game's own drawing, on both games; it is not drawn while out of view and comes back with the view.
- Trading (49/49), a joiner's conversation (31/31) and the mid-mission re-sync (25/25) still pass. One earlier run of the re-sync test froze while writing the re-sync's quick-save; the re-run passed, and the cause is not known yet.
Not checked by eye: the test's screenshot came out blank, so please look at a mission ping while scrolling. World map pings were not changed and have not been tested with a scrolling map.
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything drifts.
0.10.3-beta: saving in step
Saving no longer splits the games.
Saving in step
In 0.10.2 and earlier, a save during a co-op mission was usually followed by a drift, then a save-and-reload re-sync. The cause was not lost orders: writing a save changes something in the running game that wrote it, so the saver's game and the others' games went separate ways a few frames later.
Now, when anyone quick-saves or presses Save in the game menu, every player's game holds at the same frame. The saver's save is written, every other game writes a matching save of its own at that point (their own QuickSave.sav is set aside and put back), and everyone carries on together. A quick-save holds everyone for about a tenth of a second.
A save screen opened some other way, such as by a keyboard shortcut, still saves alone; any drift after it is corrected as before.
The game menu pauses nobody
The game menu (Escape) no longer pauses anyone's game in co-op: the game carries on behind it for everyone, as it does in a shop. If you open it in the middle of a fight, you can still be shot. The save screen itself still stops everyone while it is open, as before.
Tested
- A bot walks around the bunker, opens the game menu, sits in the save screen for 9 s while the other player keeps clicking, leaves it, then quick-saves (33/33). With the fix switched off, the same test drifts.
- Re-syncing (25/25) and a joiner's conversation (31/31) still pass.
Not tested by the bots yet: a named save written from the save screen (the bot opens the screen but leaves without typing a name), and a joiner saving. Both go through the same code as the tested quick-save.
Install it the same way as before, on every player's PC. Please send every player's netlog.txt if anything drifts.