Streaming netplay with actual consoles

The place for all discussion on gaming hardware
Post Reply
User avatar
cr4zymanz0r
Posts: 356
Joined: Sat Oct 19, 2013 6:36 am

Streaming netplay with actual consoles

Post by cr4zymanz0r »

So, I'm sure most everyone here is aware of netplay in emulators but me and a friend had an idea for netplay with actual consoles. I don't know if we'd ever get anywhere near a proof-of-concept, but I thought I'd share our idea so we're not re-inventing the wheel if someone has already created all or part of this in some form.

Summary: One player would act as the host and would be the only one that has to own the console being used. The host would capture the video and stream it to the other guest player(s) in a fashion similar to typical game streaming, but with a program/service designed around lower latency (Twitch latency wouldn't be acceptable for gameplay). The guest player(s) would use basically any controller they can connect to their PC, and the input would be sent to the host player where it would be connected to a special adapter to the console's controller port(s).

Technical Breakdown:

1.) Host player will stream the audio/video of the console either to a streaming service or direct to the guest player(s) with whatever currently available service/application turns out to be best for real-time/low latency.

2.) Guest player(s) will use a PC compatible controller (or adapter for retro console controllers) with a custom client application that will transmit their button presses to the host player (unless there is an already existing application that does this well)

3.) The host player will run a custom host application (if an existing program doesn't exist) that will receive the button presses from the guest player(s), then transmit these to a custom adapter (probably Arduino based). The Arduino would then (hopefully) have one signal per a button that would go to a DB15 connector, then DB15 pad hacks would be made for a controller of each console to be used as the interface.

Caveats:

Latency - I'm sure this will be the main issued pointed out. While I'll agree this would not be ideal at all for professional play and/or games that need extremely fast reflexes such as fighting games, bullet hell shmups, etc. I do believe it might be viable for things such as casually playing a beat 'em up with a friend or slower games such as multiplayer turn based RPGs, video game board games (we really like Fortune Street on Wii :P), etc.
Using an Elgato CamLink to stream PC-Engine via OSSC to a friend over Discord, I played while only viewing the stream view for a few minutes. I could tell it wasn't as responsive as straight to my HDTV, but it was still playable to me on Dracula X. So while I doubt you'll be playing Marvel vs Capcom with your fiends online with this method, I think there's the possibility the latency could be tolerable enough for some genres. I haven't used netplay on emulators in years, but last time I did the latency wasn't spectacular on them either.

Controller Interfacing - Having to padhack a controller for every player of every console I want to use would definately get cumbersome. However I don't really know enough to make adapters to interface with the controller ports of various consoles. Basically I needed (Console controller port) ---> adapter ----> (male DB15 with Neo Geo AES style pinout). It gets even more complicated if it's a controller that has/needs analog sticks.
Last edited by cr4zymanz0r on Sat Sep 15, 2018 5:08 pm, edited 1 time in total.
User avatar
Keade
Posts: 384
Joined: Mon Jul 16, 2007 8:44 pm

Re: Streaming netplay with actual consoles?

Post by Keade »

FWIW, I believe Sony's Share Play works the same.
User avatar
becker
Posts: 61
Joined: Mon May 30, 2016 4:21 pm
Location: USA - West Coast

Re: Streaming netplay with actual consoles?

Post by becker »

RetroRGB did and interview with a team called Parsec. It has most of the pieces of the puzzle you described. Parsec sounds like they are focused on net play for PC games. I saw the interview awhile go so I'm foggy on the details. Perhaps it would work capturing video into a PC from the console. I'm not sure about getting player 2 button presses out of the PC back into the console.
nmalinoski
Posts: 1974
Joined: Wed Jul 19, 2017 1:52 pm

Re: Streaming netplay with actual consoles?

Post by nmalinoski »

becker wrote:RetroRGB did and interview with a team called Parsec. It has most of the pieces of the puzzle you described. Parsec sounds like they are focused on net play for PC games. I saw the interview awhile go so I'm foggy on the details. Perhaps it would work capturing video into a PC from the console. I'm not sure about getting player 2 button presses out of the PC back into the console.
A Parsec for consoles might be infeasible without additional hardware, and I can't imagine it would be simple to implement without a lot of money and R&D.

I imagine remote 2-player action on consoles like the NES, SNES, Genesis, etc. would probably require two consoles, each with the game to be played, and each with a box that fits between the controller and the console that would relay inputs between the two consoles; and then something like that still requires external communication between the players to queue up the game, make sure they have the correct player selection (So one is P1 and the other is P2), and that their relay boxes are linked properly.

A prototype of that could probably be put together with an Arduino with an Ethernet or WiFi adapter (Could probably use a RasPi, but it doesn't have an RTOS as far as I know) and a handful of appropriate controller plugs/ports; and I imagine a more production-ready version would automatically connect to a simple pairing server, and it might have a little LCD screen and a number pad for reading and entering pairing codes, not unlike TeamViewer. We can call it R.O.B. (Relay Our Buttons?)

But then, if you wanted to share that with someone on a PC, in lieu of a cohesive, all-in-one solution, you'd need some kind of external (to the console) capture device, which would probably be in the form of an off-the-shelf capture card, a PC, and some PC software in order to encode and publish the stream, and also forward remote controller inputs to the controller relay box.
User avatar
cr4zymanz0r
Posts: 356
Joined: Sat Oct 19, 2013 6:36 am

Re: Streaming netplay with actual consoles?

Post by cr4zymanz0r »

I worked on this some last night and made more progress than I expected. I got an Arduino programmed to receive commands over a serial connection (via USB), then send button presses out over the GPIO pins. Verified it works by manually sending commands to it and observing the pins with multimeter.

Still have to work something out for capturing controller input from the client PC to send to the host pc, then the host pc sending the commands to the Arduino. Then I'd need to make a DB15 adapter and see if it works on something DB15 pin-to-pin compatible like Neo Geo or superguns. If that works, I'd just need to make DB15 padhacks for a console controller for whatever system I want to netplay on. Still a lot of work left, but it's always encouraging to make some good progress quickly.
User avatar
cr4zymanz0r
Posts: 356
Joined: Sat Oct 19, 2013 6:36 am

Re: Streaming netplay with actual consoles?

Post by cr4zymanz0r »

I actually got this working a couple of months ago but never got back around to messing with it more. Right now I'd consider it proof-of-concept, but usable. I was the host, so I can't speak for the latency myself. When using Discord to stream the game to a couple of friends (Twitch had way too much additional latency), they said they could tell there was latency but it was playable. Basically, you could probably have some fun casually playing a beat 'em up with a friend but don't expect miracles for playing fighting games competitively. It's currently built around DB15 connectors, so right now you're limited to Neo Geo, superguns, or making padhacks for other systems to take advantage of it. There's no support for analog sticks and probably won't be unless someone else can help me out on that.

Here's a couple of pictures of my wire mess during testing https://imgur.com/a/hvz0nLl
I've put it up on Github as well https://github.com/cr4zymanz0r/RetroCon ... /releases/

Support will be very limited for this version, but I am curious of how playable it is for other people. Please note that if you or your friend have bad pings on your internet connection then it's only going to make latency on this worse. The same goes for if your video capture card is very laggy. There doesn't seem to be stats or reviews for capture cards specifying the latency on them (then there's also OSSC compatibility to worry about too).

In the future I'd like to test this with Parsec since it seems geared around streaming play and getting latency as low possible. It also appears to handle controller inputs from the client to the host, so they probably implemented that better than I did. If that works better I'd just have to retool my host/server software pass the Parsec client controller button presses to the Arduino.
Post Reply