注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

太阳神上的博客

青青子衿,悠悠我心,但为君故,沉吟至今。

 
 
 

日志

 
 
 
 

太阳神三国杀设计上的一些缺陷  

2011-09-07 19:52:35|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

服务器端设计的缺陷

线程控制

服务器的流程控制线程在游戏开始之后才开始,游戏开始之前的选将等环节则没有用单独的线程来控制,这样只能通过主线程的异步的网络IO加上命令回调函数才能完成,造成游戏开始前代码逻辑的零散、混乱和不连贯,为了保存中间状态只能额外增加房间实体对象的字段,而不能像线程那样用堆栈上的局部变量来保存,造成较多的耦合。

性别机制

性别在程序是一个是布尔变量,因此是2元的,不能保存第三种性别,另外性别只与武将有关,与角色无关,这样导致有性别可以变化的武将如陆伯言和左慈只能以变身机制来实现,而不能像势力那样。

内存管理

服务器是由C++来编写的,C++缺乏垃圾回收的机制,而程序里也没有投入过多的处理。因此在很多地方不注意就会造成内存的泄漏,导致服务器不能长久的运行,否则会因资源耗尽而终止。

协议设计上的缺陷

服务器与客户端之间是使用一种基于指令行的纯文本通信协议,但是跟HTTP的无状态连接不同,是一种长连接的协议,因此是可以有状态的,而服务器的要求客户端的每一次应答消息,都必须附加对应的回复命令头,而实际上因为有状态的缘故,这个命令头其实很多情况下是不必要的,这造成了协议的较多冗余。

AI设计的缺陷

AI框架上很多都是以武将为中心,而不是以技能为中心,这样在很多副将的策略就会直接忽略。另外AI的行为只能由AI算法自行判断,导致是由AI做出一些不符合游戏规则的地方。

命名上的不规范

  1. 协议上:询问式有3类不同的格式:activate, askForXXX 和doXXX,而本质上他们都没有区别,完全可以统一以 askForXXX 的格式
  2. 在附加技能的时候,有 requireSkill 和attachSkillToPlayer 2种,而失去附加技能则只有detachSkillFromPlayer 这一种。显然,应该用requireSkill 的一个额外参数来指定附加技能的性质,而用loseSkill 来剥夺附加技能较为合适,目前这种API显得不太合适。
  3. 部分武将的内部命名不规范,如吕布为lubu,吕蒙为lumeng,而不是lvbu和lvmeng,为了保持向后的兼容性,只能用这种不合适的命名。
  评论这张
 
阅读(1409)| 评论(9)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017