2019年2月23日
摘要: 游戏服务器也是基于MVC架构的吗?是的,所有的应用系统都是基于MVC架构的,这是应用系统的天性。不管是客户端还是后台,都包含模型、流程、界面这3个基本要素;不同类型的应用,3要素的“重量”可能各有偏差。目前那些声称比MVC更好的架构,在我看来,不过是MVC的在某种场合下的细化。但是,MVC这个概念是 阅读全文
posted @ 2019-02-23 18:46 longhuihu 阅读(903) 评论(1) 推荐(1) 编辑
摘要: 前一篇文章讲过,游戏服务器的设计哲学是在一个封闭的环境内,针对各个环节优化以达到最大的性能。如何处置数据是达到高性能的关键问题,一般成熟的游戏公司,其实很少面临数据处理方面的压力(现在开始流行的全球同服游戏可能是个挑战),这是由于他们都有一套很成熟的技术方案了。 我们这个团队由于一开始是做web系统 阅读全文
posted @ 2019-02-23 18:40 longhuihu 阅读(544) 评论(0) 推荐(1) 编辑
摘要: 我们团队建立伊始,是从原来的Web产品团队抽调人员组成的,在开发游戏的过程中,遭遇了惨痛的教训,在解决这些问题的过程中,本人对游戏系统和Web系统的本质区别做了深入思考。特通过三篇文章来记录思考所得,虽然本人没有大型游戏经历,结论难免有偏颇支出,希望对同行有一些价值。 说明:我们游戏服务器是使用ja 阅读全文
posted @ 2019-02-23 18:37 longhuihu 阅读(729) 评论(0) 推荐(2) 编辑
摘要: 机器人的架构基于前面的游戏服务器架构设计展开,可以视为后者的附属设计。 1、设计目标 1)机器人与游戏主流程耦合性尽量少,机器人即使有问题,不影响主流程; 2)机器人由桌子线程驱动,不单独开新的线程 机器人和游戏逻辑是在一个进程里面运行的,所以机器人直接对table进行访问可以简化系统的设计,但原则 阅读全文
posted @ 2019-02-23 18:26 longhuihu 阅读(2795) 评论(0) 推荐(1) 编辑
摘要: 1、入桌流程 整个流程如上图所示,里面的关键点在于,网关会解析JoinTableResponse消息,然后记住这个用户(从网关角度,也可以说这个socket连接)当前所在的游戏服、房间、桌子。 这样,当游戏服往整个桌子广播消息的时候,可以告诉网关这个消息是给哪个桌子的,网关通过这个信息再把消息广播给 阅读全文
posted @ 2019-02-23 18:23 longhuihu 阅读(752) 评论(0) 推荐(1) 编辑
摘要: 承接游戏服务器的架构介绍,本篇试图规范玩法模块的编程模式,提高代码质量。 在前面的架构种,诸如GameThread、StateMachine这样的类很少需要继承修改;开发的重点在其他类上,这个范式的核心在于明确这些类的职责,以及经验教训总结。 1、GameTable GameTable的职责是在内存 阅读全文
posted @ 2019-02-23 18:19 longhuihu 阅读(649) 评论(0) 推荐(1) 编辑
摘要: 大体上我们的玩法有两种模式,一种是小桌,比如斗地主,一局游戏需要2~6个人;另一种是大桌,所有用户都可以在一桌来玩。 所以“桌”是一个比较核心的概念,玩法服务器的结构也是围绕这个核心来展开的。 以桌为核心的玩法架构 大体上我们的玩法有两种模式,一种是小桌,比如斗地主,一局游戏需要2~6个人;另一种是 阅读全文
posted @ 2019-02-23 18:06 longhuihu 阅读(1849) 评论(0) 推荐(1) 编辑
摘要: 目前几个产品在服务端的总体架构都是类似的,如下图;由于历史原因,在不同的产品里面,各类服务器具体的名字可以有所差异: <!--?xml version="1.0" encoding="UTF-8"?--> 目前几个产品在服务端的总体架构都是类似的,如下图;由于历史原因,在不同的产品里面,各类服务器具 阅读全文
posted @ 2019-02-23 17:54 longhuihu 阅读(2275) 评论(1) 推荐(1) 编辑
摘要: 设计目标 要取得良好效果,首先要搞清楚一个问题:我们想得到一个什么样的斗地主AI?我们的AI是用在手游产品当中,在真实玩家不足时为用户提供陪玩服务,这个目标决定了这个AI要具备以下两个核心特点:1、执行效率高,要为在线运行为玩家提供服务,不能给服务器太大压力;2、模拟人的思维方式,让AI看起来像一个 阅读全文
posted @ 2019-02-23 17:50 longhuihu 阅读(2599) 评论(1) 推荐(1) 编辑
摘要: 语言翻译器可以从一种计算机语言翻译成另外一种语言,比如一种DSL的标量乘法axb翻译成java就变成a b;如果DSL里面有矩阵运算,就需要翻译成for循环。翻译器需要完全理解输入语言的所有结构,并选择输出结构;简单的关键字或模式替换几乎肯定不会奏效。“语言翻译”是一个庞大的主题,这一章只关注大体的 阅读全文
posted @ 2019-02-23 17:24 longhuihu 阅读(276) 评论(0) 推荐(0) 编辑