在 FLASH 平台上 开发 MMO 网游 谈熠 2010 年 4 月
FLASH 和网络游戏
单机游戏和 MMO 网络游戏 单机游戏 MMO 网络游戏
网络游戏的复杂性在于 计算压力 数据传输时间 带宽压力 渲染压力 负责所有计算 显示游戏状态 接受用户输入
影响游戏产品成功的因素 在技术层面有三个因素: 程序质量! 程序质量!! 程序质量!!!
如何避免印象产品成功的因素 程序:不要出错 降低范错误的频率 减少范错误的可能 提高代码质量 精简代码实现
为了便于表达,我设置两个变量 代表:客户端组 client-side guys 代表:服务器组 server-side guys
常见的开发工作流程 … 一种紧密耦合的状态 tightly coupled 低效,易出错,难管理
解耦客户端的开发 吃过了吗? 还没,您呢? <hello> 吃了吗 </hello> {hello:“ 吃了吗” } 010011101001101 … /hello/ 吃了吗
采用代理模式( Proxy Pattern ) function send(){ connectionObject.send() } RealConnection  可能是  xml, json, bin socket, restful http … Server send() ServerProxy @connectionObject send() RealConnection send()
用  flash.utils.Proxy  优化代理实现 server.walkTo(x,y)  //  发出 socket 数据包 “ WALKTO  X Y“ server.attach(targetId)  //  发出 socket 数据包 “ ATTACK targetId“
优化后开发团队工作流程 优点: 降低团队之间的依赖 工作效率提高,调试难度降低 缺点 系统整合时间长 初期构架的错误到后期才会暴露 系统整合
AS3 的单元测试 针对对象的方法进行正确性检验的测试 帮助开发人员编写代码,减少 bug 提升反馈速度,减少重复工作 避免递归性错误的发生 让代码维护更容易
Flexunit4 提供的简便功能 和 FLEX BUILDER4  高度整合 meta-data  驱动 通过 expects 进行异常捕捉 通过 [ Theory ] 提供“测试驱动开发 TDD” 工作方式
如何进行异步测试? AS 程序开发,需要大量异步测试 采用  async  进行异步测试
如何避免客户端测试对服务器端的依赖? 采用  mockito-flex  杜撰 (mock) 测试所依赖的数据 结合 mock story 和 theory 进行 TDD 开发
通过 ANT 脚本进行编译 ANT 编译提供的灵活性 FlexUnit4AntTasks 在 Adobe OpenSource  代码库中可以获得 http://opensource.adobe.com/svn/opensource/flexunit/branches/4.x/FlexUnit4AntTasks
持续整合! AS 程序  + FLEX UNIT 单元测试  + ANT 脚本编译  + CruiseControl =>  持续整合 将设计错误和实现错误控制在最小范围内解决
持续整合的工作流程 优点: -  通过 TDD 方式指导开发 -  部门互相解耦,大幅提供开发效率 -  将设计错误和实现错误控制在最小范围内解决, -  大幅提高代码质量 持续整合
谢谢! 谈熠 QQ: 2152525 Email: yi2004@gmail.com 开发者网站 : www.swfsh.com
 

在FLASH平台上开发大型MMO游戏