老司机系列

老司机系列

GoCN第三期《老司机带你看Go风景》——分布式达人刘奇

文章分享bopjiang 回复了问题 • 13 人关注 • 5 个回复 • 1450 次浏览 • 2016-11-03 10:42 • 来自相关话题

GoCN第二期《老司机带你看Go风景》——数据库达人陈非

文章分享hmly 回复了问题 • 13 人关注 • 13 个回复 • 1262 次浏览 • 2016-10-26 18:16 • 来自相关话题

GoCN第一期《老司机带你看Go风景》——游戏达人达达

有问必答bingohuang 回复了问题 • 40 人关注 • 39 个回复 • 3057 次浏览 • 2016-10-21 16:13 • 来自相关话题

条新动态, 点击查看
@wener

+ 关于大服游戏架构

对于大服游戏,你可以在架构上把它简化成分服游戏,把玩家和游戏服对应关系交给账号服务器去记录,这样直接就把大服游戏的复杂度拉到分服游戏的水平线了。否则的话,考虑扩容,一致性哈希,故障转移,复杂度就几何级数增长上去了,你就... 显示全部 »
@wener

+ 关于大服游戏架构

对于大服游戏,你可以在架构上把它简化成分服游戏,把玩家和游戏服对应关系交给账号服务器去记录,这样直接就把大服游戏的复杂度拉到分服游戏的水平线了。否则的话,考虑扩容,一致性哈希,故障转移,复杂度就几何级数增长上去了,你就会觉得hold不住。我的建议是先hold住,再优化。

+ 关于计算逻辑

实时游戏的计算逻辑,可以有多种做法,最严格的是服务端计算,但是有时候由于网络条件限制,我们会选择客户端计算。

客户端计算又有两种不同的验证模式。

一种是强验证模式,客户端和服务端有一样的计算逻辑,只是服务端延后计算,这种模式的严格性基本等同于服务端计算,但是开发上需要小心规避通用逻辑服务端客户端各做一遍的情况,最好是把逻辑用C或Lua剥离出来实习,然后客户端服务端共享同一份代码。

还有一种是弱验证模式,弱验证模式就需要策划和程序一起想办法,安插检查点和关键数据监控。
对于你说到的分布式访问数据问题,大家都不喜欢分布式事务,因为很复杂又很难保证一致性,所以我们通常是通过一些取巧的方式规避掉分布式事务。

比如玩家大部分的数据操作其实是对自身数据的操作,所以我们把这部分业务定义为非互动业务,非互动业务固定只发生在玩家所属服务器,玩家所属服务器就是我前面说的账号服务器来记录的,这样玩家永远都在同一个服上游戏,缓存命中率是百分百,并且通过对玩家ID的分段处理,可以做到互动时通过玩家ID就可以对玩家所在服务器发起RPC。

对于互动型业务,像多人副本这种,我们目前是让玩家所在服务器告诉客户端应该到那个服务器上游戏,客户端连接到互动服务器上游戏,就免掉了消息转发和频繁的RPC,多人副本结果出来的时候一次RPC发放奖励到玩家所在服务器。

+ 关于状态同步

对于你说的状态同步,如果是arpg类游戏,通常会做帧同步,大场景通常会做场景分割,这方面的资料网上有一些,可以搜索了解一下。有的项目不需要像arpg一样严格的位置同步,而只是希望制造一种互动体验,那就可以做一些延迟处理或者模拟移动。不同的实时性实现成本不一样,具体要根据业务需求来,不要盲目追求实时。

+ 客户端和服务端通讯问题

因为客户端的表现不能被通讯阻塞,所以我们是异步的通讯模型。对于gRPC的使用,目前我们的顾虑是手游的热更新需求无法满足,对于不需要热更新或者配套的客户端热更新技术有了,gRPC是没什么问题的。如果要做实时性很高的互动游戏,要实现帧同步又要实现可靠UDP,那可能就需要自己造轮子了。

+ 实时游戏的延迟

人可以感受到的延迟大概是100ms,所以最好控制在100ms以内,超过了,可能玩的时候回觉得卡顿。

+ 接口问题

游戏的业务接口非常多,基本上一个模块就会有十来个接口。每个业务的接口都是按需做的,没有通用的设计。

+ 聊天服务器

聊天服务器有点像我前面说的互动业务的设计,如果玩家进入某个聊天服务器,是会把自身数据带一些过去的,比如昵称,等级,聊天消息中会带这部分数据,所以不会有分布式访问数据的问题。

+ 最后总结

总的来说,有很多问题是可以简化的,不需要硬啃需求,有一些需求只是体验需要,制造同样的体验可以有很多变通做法,怎么简单怎么做,简单的东西好调整好维护,一开始就做复杂了反而比较危险,特别是需求还没出现的时候就自己想象将来会有某种需求,那样很容易就过度设计导致不必要的复杂性。

GoCN第一期《老司机带你看Go风景》——游戏达人达达

有问必答bingohuang 回复了问题 • 40 人关注 • 39 个回复 • 3057 次浏览 • 2016-10-21 16:13 • 来自相关话题

GoCN第三期《老司机带你看Go风景》——分布式达人刘奇

回复

文章分享bopjiang 回复了问题 • 13 人关注 • 5 个回复 • 1450 次浏览 • 2016-11-03 10:42 • 来自相关话题

GoCN第二期《老司机带你看Go风景》——数据库达人陈非

回复

文章分享hmly 回复了问题 • 13 人关注 • 13 个回复 • 1262 次浏览 • 2016-10-26 18:16 • 来自相关话题

GoCN第一期《老司机带你看Go风景》——游戏达人达达

回复

有问必答bingohuang 回复了问题 • 40 人关注 • 39 个回复 • 3057 次浏览 • 2016-10-21 16:13 • 来自相关话题