gamestabled / OoT3D_Randomizer

Other
201 stars 42 forks source link

How to work multiplayer? #752

Closed BuffYoda21 closed 2 months ago

BuffYoda21 commented 2 months ago

Saw there was a new multiplayer feature but no description as to how to connect. Maybe add details to the README?

PhlexPlexico commented 2 months ago

All the information is available within the Discord. If information would keep being appended to the README it may become more fatiguing for people to read and may miss other information. Here's the info from the Discord -

General Info

The current version of multiplayer allows connecting with others through local play. (On Citra this means you can play with anyone around the world.) The main feature is shared progress, where items and certain actors are synced between players. Multiworld has not been implemented.

Terms

Citra Lobby Host: Unique to players on Citra. This person hosts the lobby that emulates the local multiplayer. Network Host: When the game starts, it immediately checks for open local networks. If none is found it creates one, which makes this player the network host. If this player disconnects or closes their game, everyone in the network will have to restart their games and let someone else be the network host. Sync Group: The players that share the same seed hash and sync id. Fullsync: The shared-progress syncing that happens right after joining a network, that retrieves the relevant save data.

How To Setup

Step 1: Make sure that everyone who generates their own patch files is using the same version of the app. If shared progress is on, it's only synced with players in the same Sync Group. To get the same seed hash, the settings that affect seed generation and the seed itself need to be the same when generating. Alternatively the generated files can be shared to the other players.

Step 2: This step is for Citra users. One person should create a lobby that other players can join, which emulates the local network worldwide. Someone with a good connection should be this host. For more info or help to setup, read under Networking Support here: https://web.archive.org/web/20240201071242/https://citra-emu.org/wiki/faq/

Step 3: First one player should start their game to become the Network Host. After that anyone who has shared progress off can join freely. Players with shared progress on should first decide on one person to load into their save file. After that the other players in the same Sync Group can join whenever they want.

Issues

It's possible to duplicate items by collecting them at the exact same time, for example by opening the same chest. On the 3DS the max player count is 16, but on Citra it has been reduced to 8 due to emulator issues. On Citra when a player shuts their game down they're not properly removed from the network, so the player count will stay the same and they won't be able to rejoin unless they first rejoin the Citra lobby. Rejoining like this will only work until the total player count has gone up to 8. If someone else still needs to rejoin after that, everyone will need to turn their game off and the setup process will need to be redone from step 2.

BuffYoda21 commented 2 months ago

Ok thank you. It does leave me with one question though: Can you play in a world with both citra and retail users? Or is this type of cross platform not supported?

Kewlan commented 2 months ago

Citra Local Play can not connect to consoles, so unfortunately no.

BuffYoda21 commented 2 months ago

Ok thank you!