基于 WebRTC 的云游戏开源项目(一)

使用WebRTC开源云游戏(一)

我们把软件、基础架构、平台、通信平台、视频会议作为服务项目,那么游戏是不是也可以这样做呢?在云游戏方面已有类似的尝试,其中最出名的是Google新推出的Stadia。 Stadia和WebRTC是好兄弟了,但其他项目是否可以用同样的方式,利用WebRTC呢?

Thanh Nguyen着手研究开源项目CloudRetro是否可行。 CloudRetro基于受欢迎的Go语言驱动的WebRTC库pion而建立(感谢Pion 的Sean帮助我们进行评论)。在这篇文章中,Thanh会对他如何构建项目进行结构上的回顾,以及说明他在其中的收获和遇到的挑战。

cloudretro.io上megaman x4的屏幕截图

简介

去年谷歌发行了Stadia,这令我很震惊,因为这个想法非常独特、革新。我一直在想,当前的技术水平怎么可能开发出这样的产品。为了揭开其技术奥秘,我创建了Cloud Gaming的开源版本。结果出乎意料。下面我会分享,在研究这个项目的一年中我做了什么。

TLDR:划重点的简短幻灯片

为什么云游戏是大势所趋

我认为:云游戏不仅很快会成为新一代游戏浪潮,还会是未来计算机科学其他领域的走向。云游戏是客户端/服务器模型能达到的极点了。通过把游戏逻辑置入远程服务器中,再把图像/音频流传输到客户端,云游戏可以最大化后端控制,最小化前端工作。服务器会处理繁重的加载项,所以客户端不再受硬件限制了。

实际上,Google Stadia使用户可以在YouTube等界面上玩AAA游戏(即高端热门游戏)。同样,像其他繁重的线下应用,比如操作系统或2D / 3D图形设计等也试用上述方法。这样我们就可以用低规格设备,在众多平台上一致运行它们。

这项技术的未来:想象下,在Chrome浏览器上运行Microsoft Windows 10。

云游戏面临的技术挑战

游戏是为数不多需要用户持续、快速反馈的应用之一。如果我们单击某页面时,偶尔出现2秒延迟是可以接受的。直播视频流通常会延迟很多秒,用户仍然接受其可用性。但是,如果游戏频繁延迟500毫秒,那游戏体验就很差了。所以开发者的目标是实现极低的延迟,以确保游戏输入与媒体间的距离尽可能小。因此,传统的视频流方法在这里不适用。

云游戏通用模式

开源CloudRetro项目

我决定创建一个云游戏的POC,以便可以验证,在这些严格的网络限制下是否有可能运行项目。我选择Golang作为我的POC,因为这是我最熟悉的语言,并且它运行良好。Go操作简单,开发速度快。当处理并发和流操作时,Go通道非常有用。

我开发的项目是CloudRetro.io:针对怀旧游戏,基于Web的开源云游戏服务。我们的目标是带来最舒适的游戏体验,并将在线多人游戏等网络游戏引入传统游戏中。

你可以参考整个项目库:https://github.com/giongto35/cloud-game

CloudRetro功能

CloudRetro使用Retro游戏演示了Cloud Gaming的强大功能。它带来了许多独特的游戏体验。

  • 便携式游戏体验

打开页面后立即播放;无需下载、安装

可以在手机、浏览器上运行,无需启动任何软件

  • 游戏会话可以在多个设备之间共享,并存储在云空间中以供下次游戏
  • 游戏可以边播放边玩,多个用户可以加入同一场游戏

拥有类似TwitchPlayPokemon的多人游戏功能,但更加实时,没有延迟

无需网络设置,在线多人游戏即可进行离线游戏。如今大家可以在CloudRetro上通过网络与2位玩家一起玩《武士对决》

基础设施

需求和技术栈

下面是我在开始研究项目前设置的条件列表。

1.单人游戏:

这个条件听起来并不相关,也不直截了当。但我发现的一点是:它使云游戏摆脱了传统的流媒体服务。如果我们只做单人游戏,就可以摆脱集中式服务器或CDN,因为我们不需要将流会话分配给大量用户。该服务不是通过将流上传到摄取服务器,或将数据包传递到集中式WebSocket服务器,而是通过WebRTC对等连接直接流向用户。

相关阅读:

基于 WebRTC 的云游戏开源项目(二)

基于 WebRTC 的云游戏开源项目(三)

基于 WebRTC 的云游戏开源项目(四)

文章地址:https://webrtchacks.com/open-source-cloud-gaming-with-webrtc/

原文作者:Thanh Nguyen

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营