我们之前一段时间做的一个游戏,勉强算是“后端房间分配","战局帧同步(前后端差帧编解码)"和"独立机器人服务器”都体验过一遍了吧,目前项目也属于无人维护的状态,干脆就开源了 https://github.com/genxium/TreasureHunterX,希望对于想做同类游戏的朋友也有帮助。
由于这类游戏常会遇到匹配不到真实玩家需要机器人加入陪玩,所以这里也提供一个配套的BotServer仓库(非必须,测试时两个浏览器对战即可)。
现在前端(Creator v2.1.3)和后端(Golang + gin as httpv1 framework + Gorilla as websocket lib)被调整为了仅支持1v1模式,但后端仅需较为少量的改动即可支持2v2 ~ 5v5(自己公网测过),而前端就没那么方便了很多代码都假设了“刚好两个玩家一局”。所使用的同步算法对UDP也是友善的,具体可参照 http://fabiensanglard.net/quake3/network.php 的说明,我也是对着理论做的实现和调整。
之后应该会开一个系列描述一下从零开始写这类游戏的难处,以及新入门的年轻人可以怎么利用大厂提供的工具链或者云服务避开这些难处,集中精力做好游戏内容 -- 对,这种方法真的存在,但并不是所有难的地方都能绕过的(比如子弹消失的信息同步和“其他移动物体的位置extrapolating及interpolating”),所以只能减少烦恼而不会消除。
有疑问加站长微信联系(非本文作者)