第10章.调试
【开发期】
- 使用Assert(断言)令程序崩溃以提前发现错误;对断言分级,并可选择关掉部分非常影响效率的部分;
- 将释放的指针置为空,空指针更容易把错误表现出来;
- 加入录像模块(记录输入数据到文件中),出错时便于重现;
- 使用分级log日志,并跟踪代码运行流程,便于定位。
【已发行】
第13章.开发方法
【失败经验】
- 过多的工作压在同一人身上;
- 过分的弹性工作制(弹性不代表无计划);
- 没玩没了的变化,没完没了的返工;
- 没有及时的测试,如果Bug太多,不如推倒重来做更好的设计;
- 项目主导严重偏向某个职位(市场策划程序美术应多沟通,共同努力)。
【成功经验】
- 引擎和实现分离(客户端应分出一人独立负责图像底层;服务端应一人独立负责网络和序列化,而不去管任何的游戏逻辑);
- 结对编程-有经验水准差不多的两人(一台电脑,周期性打乱配对互换位置,提高效率提升能力,每天6小时即可);
- 随时方便的测试,不要吝啬为实现写测试代码;应自动化,可录像回放。
- 尽早发现结构上的问题并及早重构;若发现太晚,及时冻结新功能加入,裁剪内容,保证现有东西不出错;
- 必须使用SVN/Git进行版本控制,并分为Realse/Dev两个分支;
- 使用脚本语言实现客户端UI,服务端剧情/任务等容易变动的部分。
【项目总结】
- 游戏是策划美术程序(细分为引擎、工具、实现)等合作开发的,存在依赖性,同时开展这些工作有时欲速则不达;
- 策划先写案子,然后美术依此完成场景、人物甚至界面,程序再开始;若策划/美术需改动,记录整理后放入下一版本;
或者 程序制作和具体设定无关的东西,美术填资源,策划按程序可实现功能做案子;不尽如意,迭代下一版本;
- 许多工具开发初期都可先省略,如地图编辑器可先用PS图层暂代,维护期再做亦可;
- 策划案完成后,先不考虑娱乐性,而应从平衡性考虑,把可删除的都删掉,以此基点,实现后再考虑扩展;
- 简洁的界面和简单的控制是受欢迎的,能尽快上手,是促使玩家尽快投入游戏的关键;应反复考虑:
- 鼠标点空地要做什么操作,点敌人会有何反应,点不可达区域怎样,点在物品、NPC上怎样;
- 左键和右键点的区别,普通攻击如何发出,魔法怎样发出;
- 游戏对玩家的操作会不会和玩家所想的有差异;
- 要增强玩家与游戏交互的临场感;避免人物走路打滑,角色与场景分离,攻击敌人反馈不真实;
- 比如攻击到强壮的敌人、攻击被格挡时,使玩家角色受到震荡后退,并不能进行下一次攻击。