开发动机
学习Golang语言以来,先后实现了个人博客,生活美食推荐系统,以及一些如日志收集工具等开发能用到的小工具,但还没写过游戏。前不久,利用闲暇时间,写了套简易的分布式游戏框架,心想写好了不投入实践使用,不能看到效果啊,所以决定写一个小游戏案例来玩一玩!
技术支持
服务器框架只实现了简单的服务间通信,中心管理,游戏配置,网络传输层,db等功能,传输协议使用TCP + Protobuf 3,服务器通信采用 RPC + HTTP ,DB采用 Mysql + Redis 持久+缓存。
客户端前后比较了多款主流引擎,由于我有JS基础,且考虑到没打算深钻引擎,所以选了 Laya 引擎的 JS 版,有基础就容易上手,看了一个下午的视频教程就算是入了门了,且 Laya 官网有完整的API文档和一些小案例,对新手而言很友好。
技术难点
1、时延性
球球大作战是一款休闲类的实时对战游戏,对于实时对战游戏而言,如果时延高的话,玩起来体验感就特别差了, 所以第一难点就在于如何做到无时延或低时延,这里我采用的游戏同步方式是状态同步,客户端的移动操作在每帧效果内进行体现, 同时将移动操作发送给服务器,服务器有一个tick循环,将模拟每50/100ms向房间内的玩家推送同步数据,这里看了下球球大作战技术人官宣的方案, 他们也是如此设计的,