CloudRetro - 用 Go 语言编写的开源复古游戏云游戏服务
关于云游戏技术
特征
演示
人群游戏
我是如何用 Golang 实现的
系列下一部
作者
CloudRetro
2019 年是云游戏元年,谷歌 Stadia、微软 XCloud、PlayStation Now 等公司纷纷发布了云游戏服务……而谷歌 Stadia 也于 11 月 19 日正式上线。回想当初,当我第一次看到谷歌 Stadia 的消息时,真是激动不已。云游戏是一个极具创新性的概念,它必将成为下一代游戏乃至计算机科学其他领域的发展方向。正是出于对这项技术的好奇,我决定为复古游戏开发一个云游戏概念验证 (POC)。
视频演示
VIDEO
关于云游戏技术
我们都知道,对于 Web 服务器而言,后端提供的信息越多,前端渲染就越灵活。云游戏通过在服务器上运行游戏并将图像/音频流传输给用户, 最大限度地发挥后端控制力 ,并 最大限度地减少前端逻辑 。这样,客户端就完全摆脱了繁重的逻辑,不再受硬件限制。如果我们把同样的方法应用于其他大型离线应用程序,例如操作系统,就像在 Google Chrome 浏览器中运行 Microsoft Windows 一样。
云游戏背后是 极低延迟流媒体技术的精髓 ,它能确保用户交互体验尽可能流畅。起初,我对谷歌的说法持怀疑态度,因为我不相信流媒体技术已经达到如此高度。因此,我启动了这个项目来验证这一说法,而结果远超我的预期。在这个项目中,我应用了 WebRTC技术 ,并结合视频/音频压缩(VP8/OPUS)来优化数据包大小,同时构建了一个分布式 架构 ,以实现横向扩展和最佳服务器配对,从而降低网络延迟。
我选择 Golang 作为我的概念验证工具,因为我对它最熟悉,结果证明它非常适合我的需求。Go 的并发设计在处理并发和事件流方面提供了极大的帮助。例如,我只需几行代码就能使用 Golang 的扇入扇出模式实现 CrowdPlay。
特征
云游戏 :游戏逻辑和存储托管在云服务上。图像和音频以最佳方式流式传输给用户。 跨平台 :游戏在网页浏览器上运行,这是最通用的内置应用程序。无需游戏主机、插件、外部应用程序或设备。建议使用最新版本的 Chrome 浏览器。 模拟器无关 :无需额外设置游戏模拟器或平台,即可直接畅玩游戏。它基于 Libretro 库 和 Ludo 游戏。多人游戏 :借鉴多人游戏(例如 TwitchPlaysPokemon)的理念,多个玩家可以通过访问同一个深度链接同时进行游戏。这是 Google Stadia 承诺在首个版本中未能实现的功能。 垂直扩展 :基础设施设计为可通过添加更多实例来应对高流量。 云存储 :游戏状态存储在云端,因此您可以随时返回并继续未完成的游戏。
演示
单人游戏 : http://cloudretro.io 多人游戏 : 口袋妖怪绿宝石 快捷 键: 方向键 + H(帮助)+ ZXCV + S(保存)+ A(读取)+ F(全屏)推荐使用 Chrome 浏览器, 安卓版 Chrome 浏览器可能不兼容。iPhone 和其他一些浏览器可能无法正常运行。在理想的网络环境下,游戏应该像视频中那样流畅运行。由于我只在美国东部、美国西部、欧洲和新加坡的有限服务器上托管了平台,您可能会遇到一些延迟和连接问题。您可以尝试按照 GitHub 上的说明自行托管服务。
人群游戏
点击这些深度链接,即可直接加入游戏,并与其他点击同一链接的人一起玩。
您可以通过访问cloudretro.io 并点击“分享”按钮来生成指向您当前游戏的深度链接, 从而自行托管新游戏。
免责声明 :加入房间时可能会出现延迟,这是因为房间位于不同的区域。在这种情况下,您可以创建一个新房间。 ( 两名玩家正在一起玩《精灵宝可梦 绿宝石 》)
我是如何用 Golang 实现的
我在 2019 年越南 GopherCon 大会 上就此主题做了演讲,您可以在这里找到 视频 和 幻灯片 。幻灯片中也包含我的演讲稿。 ( 幻灯片中的 GoCode 图 )
请查看 Github 仓库和Wiki了解更多详情。
系列下一部
第一部分:我是如何设计云游戏服务的
作者
阮友清 志登明
文章来源:https://dev.to/giongto35/i-write-a-cloud-gaming-service-for-retro-games-in-go-lkn