6 ms·
This is by far the best engineering hack of the year: Use off-shelf-chatrooms-software to create rooms but instead of chatting you send ROM game commands to ea
by sktrdie 6y ago
This is by far the best engineering hack of the year:
Use off-shelf-chatrooms-software to create rooms but instead of chatting you send ROM game commands to each other and allow for multiplayer gaming!
- apkallum 6y agoCould you expand on the ROM game commands bit? Does it mean that all actions are serialized?
- tantalor 6y agoIt's a networked game... how else could it work?
- jldugger 6y agoI just don't know what a 'ROM game command' is. Seems more likely it would be controller inputs to one person's emulator? Or perhaps everyone has an emulator and the inputs are simply shared.
- read_if_gay_ 6y agoTo me it seems like just a somewhat awkward way to phrase exactly what you think it means.
- JoeOfTexas 6y agoThese things usually work by syncing the emulator clocks between clients, and then sending player inputs over the network along with the data to sync.
- sktrdie 6y agoIt’s probably really simple: if you normally load a ROM game and start a multiplayer game you control all the other players input. This simply goes next step and makes other inputs be controlled by other players.
- mrmonkeyman 6y agoThat has nothing to do with "ROM".
- Vel0cityX 6y ago> ROM game commands This phrase doesn't mean anything. The game list includes games that do not support PlayStation Link Cable, so this has to implement netplay the same way other emulators do: Both host and client emulate the game in sync, exchanging controller input Edit: Seems like I was wrong about the latter, it runs the emulator on the host only, who sends video/audio from clients (and they send inputs).
- danbolt 6y agoI’d be curious to see how feasible a rollback-based implementation would be for emulating the game.
- ohyeshedid 6y agoIf you're referring to constantly sending save states back and forth, some emulators work this way currently. If I'm not mistaken, RetroArch's networking functions in that way.
- reitzensteinm 6y agoRollback networking is essentially event sourcing. Game states are immutable, and new game states are derived from adding inputs (events). You keep the last dozen game states around in memory, and if you receive an input from the past, you rewind to the last game state prior, add it to your input stream, and fast forward to the present. It has the same base advantages and drawbacks as RTS networking - the core logic is written as though the game is single player, and complexity can be scaled arbitrarily without bloating bandwidth requirements. But in addition, you get the benefit of zero input latency (play a multiplayer RTS game and send a unit around - they won't move for 200ms or so), and the drawback of an absolute clusterfuck time rewind debugging madness if any inadvertent mutation of your immutable data happens. The reason you do rollback with something like this is it gives you zero latency, and you can retrofit it on to an emulator without changing any game code just by using memcpy() on the game state. Source: I've developed about a dozen titles using rollback networking.
- avlewis 6y agoThis was such a kick ass idea
- the_only_law 6y agoMy understanding was that WebRTC wasn't specifically designed for video and voice applications exclusively, but rather as a generic real time, peer to peer communication framework that included capabilities for voice and video. Not trying to take away from your comment or anything, but maybe I misunderstand WebRTC.
- monocasa 6y agoYeah. It's specifically designed for both AV, and for generic datagrams. You have to choose one or the other during initialization of a stream (but can have multiple streams between clients).
- lewispollard 6y agoI recently implemented a WebRTC multiplayer game in Godot, and yeah, it has very little to do with chat, and isn't really "off the shelf", it took a hell of a lot of configuration, plus running and maintaining a STUN/TURN server and backend lobby/matchmaking system. It's no more a chat protocol than HTTP really when you're doing that kind of programming with it, just has some nifty tricks for getting around routers and making a direct connection where it can. That said, it was better than NAT punch-through and/or UPNP which are not very reliable these days.
- 0df8dkdf 6y agoCorrect me if I'm wrong. STUN/TURN is the one that is doing the UDP punching. And in the event that fails, all the data are being passed through the STUN/TURN server, which makes it just like client/server setup where the server became the bottle neck again.
- joshxyz 6y agoHoly fucking shit 300 IQ!