TASEmulators / TASEmulators/BizHawk
[F.Rq.] Multi-instance for linked cores (or just when emulating networked systems)
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.8k
- Forks
- 468
- PR merge metrics
- No merged PRs in 30d
Description
What if 2 Game Boys but also 2 window decorations?
IPC is low-latency enough that an implementation could simply block on those calls and be somewhat performant, however it would ideally be written in a way that's moving in the direction of netplay (#2450). (For example, X forwarding could effectively bump multi-instance play up to netplay. Anything that works over LAN could be extended to the Internet, it would just have a much higher latency depending on the route and physical distance.)
Redditor /u/skateplus posted a proof-of-concept for this implemented with the Lua API. Their goal was a better camhack UX, but it could easily be extended to send inputs back from the slave to the master (and used with linked games instead of Sonic). Their approach may not be sound for every core either since it relies on what memory domains are exposed. Presumably that won't be a problem for EmuHawk where the core's internals are accessible.
TASVideos user p4wn3r posted a fork of Gambatte which forwards the link cable connecting two instances over the host network. So it seems blocking IPC on each frame isn't even necessary for GB.
Labels on this issue are those cores which emulate (or may someday) virtual Ethernet or Wi-Fi subsystems/peripherals:
- melonDS and Encore (Citra) are for Nintendo's post-Wi-Fi handhelds.
- #4106; Finishing the Wi-Fi emulation in melonDS is tentatively planned for 1.0.
- "Future core" is Dolphin, since Wii had Wi-Fi, and GC I believe had an Ethernet adapter released for it.
- I'm told the MegaWiFi flash cart is the de facto standard for networking-capable Genesis homebrew. GPGX doesn't support it and there was no feature request at time of writing.
- Possibly other obscure carts?
- Possibly PCs?
- DOOM is multiplayer but single-screen in current dev builds.
- And what the heck let's extend this to multi-screen systems #4221
see also #587
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the linked Lua API proof of concept and the related issues #2450, #4106, #4221, and #587. Determine how multi-instance linked-core communication should relate to netplay and the listed networking-capable cores. Done would require an agreed design and working support for the requested multi-instance scenarios.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, lua
- Domain
- distributed-systems, game-dev, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100