diff --git a/CHANGELOG.md b/CHANGELOG.md index f7efceeef..f2d36cec4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,12 +8,79 @@ tag a release. Nightlies use auto-generated notes and do not read this file. Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Newest first. ## [Unreleased] +### Added +- **Parallel battlescape turns (optional).** Both players can now act during the + same X-Com side instead of taking alternating half-turns. Turn it on from the + HOST window before starting a session ("Parallel Battlescape Turns"); it covers + co-op PVE and PVE2 missions. The host machine runs the simulation and the + joining player's clicks are forwarded to it, so both squads move, shoot and + throw against one battlefield, and the side ends only once BOTH players have + pressed END TURN (the button shows how many players are ready). A player whose + soldiers are all down or mind-controlled counts as ready automatically. Reserve + TU settings are now per-player rather than mirrored. If either player is on an + older build, or the mission is PVP, the session falls back to the classic + alternating turns with no change in behaviour. +- **"Please wait for 's action to finish."** In parallel turns, a + banner above the toolbar now names the player whose action is running while + your own input is blocked, so a busy moment no longer looks like a bug. It + clears the instant their action ends and never shows for your own actions. +- **Desync detection with one-click reporting.** The two machines now verify + the entire battle state against each other after every single action. If + they ever disagree, both players get a dialog naming exactly what diverged + ("items diverged at action 242: grenade"), a diagnostic zip is saved + automatically, and the dialog offers OPEN FOLDER and REPORT ON GITHUB + (pre-filled issue) buttons. Nothing is uploaded without you. +- **Crash reporter.** If the game crashed last time, the next launch offers to + bundle the crash details (dump, log, system info) into a zip for reporting - + BUNDLE / NOT NOW / NEVER, your choice each time. Works for hard crashes the + classic crash dialog never sees. +- **Mods work in parallel turns.** Battle scripts that roll random numbers + (randomChance/randomRange) now stay in lockstep between the two machines, so + scripted mods no longer carry a "may desync in co-op" caveat. + ### Fixed +- Co-op battles: a long tail of subtle desyncs between the two machines has + been eliminated - kneeling state after walking, squad morale after + casualties, doors one player walked through staying closed for the other, + destroyed terrain and fire/smoke drifting apart, item ids diverging after + explosions, a dead mind-controlled alien ending up on different sides, ammo + counts, and the battle ending on one machine but not the other under + surrender-mode mods. The per-action verification above now guards all of it. +- Co-op parallel turns: explosions are now shown to the joining player in + the same order the host resolves them, instead of in whatever order they + arrive. This fixes a bug where the joining player's count of destroyed + mission objectives could run ahead of the host's, ending a mission early + before the host had actually finished it. The same objective-count fix + also applies to classic (non-parallel) co-op. +- Co-op: a joining player's soldiers now earn experience for kills that + happen on the host's turn and are replayed to their machine, instead of + missing out on the experience the host's own soldiers receive for the + same kills. - Co-op SHARED campaigns: a soldier gifted between players during a battle no longer duplicates after the mission ends. Transferring a soldier back and forth in the battlescape used to leave a second copy of it in the shared roster once the mission finished; the shared world now moves the soldier by ownership alone, so the roster stays intact. +- Co-op: a soldier killed while walking, or while a facing update was in flight, + could end up dead on one machine and standing on 0 HP on the other for the rest + of the mission. +- Co-op: the gear of a soldier who died was left in the corpse's inventory on the + joining player's machine instead of dropping to the floor as it did on the host. +- Co-op: priming or de-priming a grenade and using a medi-kit did not charge the + acting soldier's time units on the other player's machine, so the two views of + the same soldier drifted apart with every use. +- Co-op: a walk that ended early (an interrupted or fast-forwarded move) left the + other player's copy of the soldier holding the wrong time units and energy. +- Co-op: an ACTION MENU grenade prime sent across the wire with a fuse above 1 + arrived as 1, and a de-prime arrived as an arming - the peer could be left + holding a live grenade the other player had just made safe. +- Co-op skirmish (NEW BATTLE > COOP): finishing a mission - by winning it or by + abandoning it - now returns BOTH players to the main menu. Whichever player + closed their debriefing second used to be interrupted by the other's ordinary + exit: the host was shown a lobby whose RESUME GAME dropped them onto an empty + Geoscape, and the joining player got a "Server connection lost" message over + their debriefing. A skirmish mission ending is no longer treated as a + disconnection. - Co-op SHARED campaigns: hiring soldiers, scientists, or engineers is no longer blocked with "not enough store space" when a base's general stores are full but its living quarters have room. Personnel occupy quarters, not stores, so a @@ -24,6 +91,13 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Newest first. with a line-of-sight blackout in between. The earlier menu redesign had buried the toggle inside the network host dialog with no way to actually begin a battle. An optional REACT FIRE toggle appears while hotseat is armed. +- Co-op parallel turns: a unit's death is now applied as one atomic update on the + joining player's machine instead of being pieced together from several packets + that could arrive out of order. This removes intermittent disagreements between + the two players after a death - mismatched kill counts and scores at the + debriefing, a corpse or its dropped gear appearing with different item ids, or a + bystander's morale lagging a turn behind. The collapse animation still plays for + the watching player exactly as before; only the bookkeeping changed.