Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Streaming gameplay videos from a host to a client machine while taking inputs

Discussion in 'Multiplayer' started by Zante, Feb 18, 2019.

  1. Zante

    Zante

    Joined:
    Mar 29, 2008
    Posts:
    429
    I'm talking about a couch co-op game being able to stream pre-rendered game (video) footage from the host to a player client remotely, while taking inputs for the 'player 2' entity remotely.

    This is incredibly bandwidth heavy and not an effective use of the technology available to us but there are multiple affordances:

    Advantages
    • Network programming becomes a non-issue
    • It is impossible to cheat/hack as, by virtue of the method, everything is 'authoritative'
    • Players with very low end hardware would be able to engage with the experience
    • Lowers development costs by thousands

    Disadvantages

    • Completely unconventional/asinine to some
    • Exponentially increasing resource cost per connected player (only suited to very limited number of players)
    • Limited to one camera/screen (or not, depending on which camera you end up streaming)
    • Latency issues as the baseline bandwidth requirements are incredbly heavy
    • Might breach rules for various platforms/services
    • If not implemented properly, could constitute a GDPR risk (streaming of non Unity windows)

    The technology is there and while this would work seamlessly over a LAN, the issue is getting it to work online. I haven't heard of a test case for this yet, outside of services like OnLive when it was around or GeForce NOW and even the SharePlay feature on PS4.

    I've just found another service called Parsec, which also uses this approach.

    Has anyone thought of it?

    I think it's only a matter of time before it becomes viable. The question is when?


    Apologies for posting this in the general forum, in hindsight that's probably not the best place for it. Please feel free to delete the original, moderators.
     
    Last edited: Feb 20, 2019
  2. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    How are you rendering the 2nd player, streaming that to the client, and receiving/processing client inputs without "network programming"? How are you connecting the client to the host when both are on separate networks and behind their own NAT routers, without "Network programming"?
    Cheat/hack vectors are different, but that doesn't make them impossible. For example, how do you deal with the host receiving 1,000 fire button press messages in a single frame? You're going to have to actively stop that kind of cheating still, or you're open to a wide variety of input related cheats.

    Also, it is common for many game types to have the host be authoritative already, even using traditional multiplayer game techniques, so this isn't an inherent advantage of streaming.
    This seems to be the main driver behind advocates of streaming gaming.
    I don't see where this cost savings is coming from. This second player streaming solution seems as complicated an implementation as the traditional methods, with limited up side. How many gamers are not able to participate because they can't afford the min spec hardware, even though they can afford internet speeds required for streaming?

    I haven't done the research, but I suspect the market for those who are paying for high end Internet but who won't by a PC or console capable of gaming, is not a very large market.
     
    Last edited: Feb 18, 2019
  3. Zante

    Zante

    Joined:
    Mar 29, 2008
    Posts:
    429
    The point is that for this kind of network infrastructure to work, you only need to solve the problem once. The solution scales across multiple projects taking the same approach.

    The cost savings come in the form of not having to spend thousands of man hours trying to optimise data exchange for each and every title.

    The comparison I'd draw is against SharePlay on the PS4. I can include local multiplayer capability in my titles far, far easier (by an order of magnitude) than having to worry about synching states and prediction-based algorithms. 'All one need do' is make the game local and take inputs remotely for it to then constitute an online experience.
     
    Last edited: Feb 19, 2019
  4. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    I'm confused. Why would someone be considering spending thousands of man hours on network code optimization, while considering the alternative of streaming video? Even the most unoptimized network code (meaning 0 hours spent on optimization) will almost certainly use less network bandwidth than HD or 4K streaming at game playable frame rates.

    To me I see this as someone who is considering saving a lot of trouble with their diet, the calorie counting, the recording what they ate and when, the tracking their steps and exercise, and replacing that with having 5 extra large pizzas delivered. 5 pizzas delivered certainly saves a lot of work, but so does just eating like a normal person without any extra effort, and you're better off than eating 5 pizzas. Same with just not optimizing your network code compared to replacing that with bandwidth gobbling video streaming.
     
  5. Zante

    Zante

    Joined:
    Mar 29, 2008
    Posts:
    429
    I'm also looking at this from a strategic perspective, not just as an individual developer. Unity exists as a means to facilitate a simple authoring process and are years away from creating a plug and play networking solution. The method described here is just one way to tackle that problem and, as has been seen, proven to be effective in certain contexts. Given that we are moving towards increased cloud computing and rendering, it will become viable one day despite (and I acknowledge this) its brute force nature and how its perceived today.

    Looking at the sentiment of indie developers here, the consensus seems to be that implementing complex multiplayer features is incredibly traumatising, though its value remains recognised. I'm not sure what your definition of (simple+unomptimized+viable) network code is either. : )
     
    Last edited: Feb 20, 2019
  6. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    Sorry, I may have come off as overly critical. While I don't agree that this is a good idea, I don't want to discourage you from trying this, and I'm happy to admit I'm wrong if something like described turns out to be a success. More viable options are better generally speaking.
     
    Zante likes this.