Early test build. Play Yakuza 0's story with a friend online: one of you is Kiryu, the other is Majima, each on your own screen.
How to play
Both of you need Yakuza 0 on Steam (the original 2018 release) and this mod, in the same version. Version 0.7.3 does not connect to older versions.
One player presses Play and loads their save as usual. That player hosts.
The friend joins through Melty. Their game goes through the menus by itself and opens the host's story.
The host plays the character of their save; the friend plays the other one.
The friend's own saves are never touched.
Invite a friend from Discord
With Discord running while you host and nobody has joined yet, press the + next to the message box in a Discord chat: it offers Invite to play Yakuza 0 Online Co-op. Your profile also shows a Join button.
A friend's Join opens this page, where your open game is listed; Join here puts them in. For Discord to do that on their PC they need to have started the mod once before; otherwise send them this page.
To switch it off, create an empty file named no-discord.txt in %LOCALAPPDATA%\Y0Coop.
What works
Seeing each other walk, run and fight.
The story moves on for both of you: when either player starts the next step, the other's game goes there too, cutscenes included. Skipping a cutscene only skips your own.
Story fights: the same enemies make the same moves and have the same health on both screens.
Street fights are shared: thugs who jump either of you start a fight for both, if the other is within about 50 metres and not in a menu or a talk.
Doors: when either of you goes into a building or back out, the other is brought there a couple of seconds later, or as soon as they are free.
Each character fights in his own styles: Kiryu in Brawler, Rush and Beast, Majima in Thug, Breaker and Slugger. Switching yours does not switch your partner's. To have both use the story character's styles instead, the host creates an empty file named no-majima-styles.txt in %LOCALAPPDATA%\Y0Coop.
Knocked out: a player whose health runs out stays down until the fight is over, then gets up with about a third of their health. The fight is lost only when both of you are down at once.
Heat actions: when either player does one, both screens play the same cinematic.
Shared upgrades: one wallet and one set of abilities. What either player buys in the Abilities menu belongs to both and is kept in the host's story.
Each player has their own health and heat gauge.
Not there yet
Minigames together.
On the Majima player's screen the style name still shows Kiryu's (Brawler for Thug, Rush for Breaker, Beast for Slugger).
The abilities bought for Majima in his own chapters are not used: upgrades are the one shared set.
Not tried yet: taxis, Sotenbori, side stories and the change from one chapter to the next.
Most of the testing was done with two copies of the game on one PC, some of it over a simulated slow connection. Play between two PCs over the internet has had far less.
Credits
Engine research this mod learned from: Jhrino (Fronkln), OE-Library and the Yakuza co-op mods. None of their code or files are included.
MinHook by Tsuda Kageyu (BSD 2-Clause).
Yakuza 0 is by Ryu Ga Gotoku Studio / SEGA. The mod contains none of the game's files; every player needs their own copy.