Archipelago icon indicating copy to clipboard operation
Archipelago copied to clipboard

Implement planned protocol changes

Open black-sliver opened this issue 3 years ago • 7 comments

Protocol changes

  • Drop Print in favour of PrintJSON. At least multiclient.net can't handle arbitrary type yet, so version check is required.
  • Drop support for missing items_handling in Connect
  • Replace DataPackage per-game version by a hash
  • Replace RoomInfo datapackage_versions by hashes
  • Drop datapackage_version from RoomInfo and version from DataPackage
  • Drop players from RoomInfo
  • Change games in RoomInfo to be a Set, including "Archipelago"
  • Drop exclusions from GetDataPackage
  • Drop support for IgnoreGame tag

Implementation

There is no hard reason to PR or merge stages in order. Stages 1+2 could be implemented at the same time as 4+5 by testing against multiple branches.

Stage 1: Verify client lib support of revamped games in RoomInfo and missing players

  • [x] apclientpp
  • [x] apcpp
  • [x] java
  • [x] js
  • [x] net https://github.com/ArchipelagoMW/Archipelago.MultiClient.Net/pull/54
  • [x] py #888

Stage 2: Update clients that require update from stage 1

insert more items here when we know

  • [x] Timespinner
  • [ ] RL
  • [ ] RoR2
  • [x] Subnautica
  • [ ] HK
  • [x] Raft
  • [x] CommonClient - 0.3.5

Stage 3: Implement new features, in the server

  • [x] Use PrintJSON for Chat and Countdown - fall back to Print for old clients (Connect version: 0.3.5)
    #812
  • [ ] Require items_handling in Connect for new clients (Connect version: TBD)
  • [ ] Datapackage per-game checksum - in addition to version integer #684
  • [ ] games revamp in RoomInfo (depends on stage1 and 2 being completed) #757

Stage 4: Implement new features in client libs, send new version

  • [ ] apclientpp
  • [ ] apcpp:
  • [ ] java
  • [ ] js
  • [ ] net
  • [ ] py

Stage 5: Update clients to new libs

insert all games here

Stage 6: Drop backwards-compat in server

  • [ ] Drop fallback to Print
  • [ ] Drop version check from items_handling requirement #757
  • [ ] Drop DataPackage per-game version (replaced by hash)
  • [ ] Drop RoomInfo datapackage_versions (replaced by hashes)
  • [ ] Drop RoomInfo datapackage_version and DataPackage version (removed) #757
  • [ ] Drop GetDataPackage exclusions (replaced by games)
  • [ ] Drop support for IgnoreGame tag
  • [ ] Update minimum required client version in server

Stage 7: Drop backwards-compat in client

At the discretion of client lib devs, but should not happen before TBD.

Random Notes

Stage 1/2 can be tested against a server running #757

black-sliver avatar Jul 22 '22 21:07 black-sliver

A fair few py world changes are done in https://github.com/ArchipelagoMW/Archipelago/pull/757

Berserker66 avatar Jul 22 '22 21:07 Berserker66

changes for countdown by PrintJSON are in #812

Jarno458 avatar Jul 22 '22 21:07 Jarno458

  • Fixed/split the datapackage version stuff above (it's still confusing...) with both version and versions.
  • Added dropping exclusions from GetDataPackage. I already forgot that is still in :D

black-sliver avatar Jul 22 '22 21:07 black-sliver

So regarding the .net client updates, the v4 was just released a couple of hours ago Timespinner and Subnautica already use it I'll gently poke the maintainers of the other .net games to see if they got time to update thiers

Jarno458 avatar Aug 16 '22 06:08 Jarno458

can confirm Java library is compatible with stage 1. current Minecraft mod connects to games run with #757 without issue.

KonoTyran avatar Aug 17 '22 22:08 KonoTyran

can confirm ArchipIDLE works just fine, both on removal of games aswel as receiving printJson instead of print

Jarno458 avatar Oct 20 '22 19:10 Jarno458

Raft is also updated so can be checked off

Jarno458 avatar Oct 20 '22 20:10 Jarno458

RL was also updated and can be marked off

Jarno458 avatar Nov 08 '22 10:11 Jarno458

RoR2 has been updated, so marked it off. May also want to add removing forced_auto_forfeit to this as all clients after the next RoR2 client update should no longer be dependent on it.

ThePhar avatar Dec 07 '22 06:12 ThePhar

As an update for step 6 "Drop fallback to Print" was already merged

Jarno458 avatar Apr 21 '23 13:04 Jarno458

Checksum based datapackage where added in https://github.com/ArchipelagoMW/Archipelago.MultiClient.Net v5.0.0

Jarno458 avatar Apr 27 '23 21:04 Jarno458