Show HN: Making a cross-platform game in Go using WebRTC Datachannels
8 months ago
- #Game Development
- #Networking
- #WebRTC
- WebRTC数据通道是游戏开发中复杂WebRTC设置的更简单替代方案。
- Websockets对大多数游戏来说速度太慢,仅适用于回合制游戏如《RuneScape》。
- 基于QUIC的Web Transport可能取代Websockets,但目前仍在开发中且Firefox存在兼容性问题。
- WebRTC数据通道可通过SCTP发送不可靠数据包,无需等待Web Transport即可立即使用。
- WebRTC优势包括主机灵活性、无需端口转发、最低服务器要求及活跃社区支持。
- 其缺点在于配置复杂,且需要信令服务器和STUN/TURN服务器支持。
- 现有多种WebRTC实现方案,如libwebrtc、libdatachannel、Pion WebRTC及各语言版本库。
- 采用WebRTC的游戏网络库包括Geckos.io、Netlib、Matchbox、PeerJS和Netplayjs。
- 实际应用案例有WebXash3D(《半条命1》及《反恐精英1.6》重制版)和2D射击游戏《Hypersomnia》。
- Go语言因高效性、活跃的WebRTC支持及比Rust更快的开发速度成为首选。
- Ebitengine多功能2D引擎支持跨平台游戏开发,包括任天堂Switch/PC/浏览器的跨平台联机。
- 官方Pion示例整合了信令服务器用于创建房间,当前仅支持双人游戏。
- WebRTC可实现《我的世界》式游戏的无专用服务器/端口转发联机。