17种方式减少你在AI原型时周转时间的方法
当你的工作是构建一个智能系统时, 你大部分的时间都将花在测试和调节更好的结果上..
倘若你浪费一半的工作日去等待编译又或者是什么事情发生..就根本无法达到最高的生产力和效率...
1 通过以下tips可以帮助你在这方面做得更好
- Building Tips 1-7tips为节约编译和Link时间
- Loading Tips 8-11 读取配置类
- Testing Tips 12-17 交互游戏和AI
2 tips
2.1 单元测试
= 测试用例最后一般都能被当作example用... |
经常对自己的代码做单元测试,其实不需要太多时间...
( = = 最近开始用了CppUint...单元测试绝对能让开发安心不少... 每写一部分都要测试下!
2.2 分布式编译
使用分布式编译工具较少编译时间
现在一般自己开发引擎的公司都有用分布式编译吧...囧
选择编译的时间就像美工选择渲染时间一样, 你不要把大量的编译时间放在你的工作时间中...这样会严重影响工作效率的....可以放在晚上挂家或者午休的时候...
2.3 使用Edit & Continue IDE功能
-
编辑后依然可以继续运行的...VS就支持这样的功能...
- 分布式编译可能不支持
2.4 库和分支
- Core lib不经常改变... 把每个游戏子系统分别编译成不同的DLL...
- 把AI逻辑特别地独立分离出来, 没必要和其他部分整个一起编译...
- Either use a separate branch in source control, or build dependent libraries once and for all to reduce build times even further.
2.5 混合编译类型
2.5.1 考虑同时可以使用2种方式编译...不同的情况做不同的选择...
- Debug
- Release
2.5.2 2种类型的优缺点
- Debug调试信息多, 但速度慢
- Release则相反
NOTE
让AI逻辑保持在DEBUG模式
2.6 使用DLL
- 如果引擎够强壮的话你可以把AI逻辑放在不同的DLL中
- 让你引擎可以在Runtime load and reload新库
- 担心内存问题
2.7 脚本语言
- 只要是关于逻辑和行为的, 不要犹豫! 都用脚本语言实现..
- 只有关键部分代码才编译成DLL,其他部分都用动态解释语言以避免烦杂的编译周期..
2.8 低图形测试用Level
叫美工建些调试用场景和人物先...当然你要保证团队中其他人同意...
2.9 情景脚本
通过脚本让你的游戏起动的时候就可以到达某个需要调试的情景... 比如我在游戏一起动就可以进行测试这段特殊剧情部分...
2.10 游戏存档
2.10.1
同上 存档调试是必要的...你可以通过读档的方式载入一定进度...
2.11 使用命令行
让游戏程序支持用命令行进行各种控制...
2.12 可定制的游戏逻辑
- 不要犹豫调节游戏的启动状态, 把你的引擎设计得更容易改变游戏的状态...
- set parameters such that you don’t have to wait too long
2.13 Debug工具和命令行
2.14 存储设置和参数
在配置中设置调试参数, 你可以用.ini或者.cfg文件保存一些调试开关配置, 必要时支持从游戏中保存这些参数
2.15 纸上设计
不要用计算机, 而是 多在纸上设计画你的草案先 ... 先设计在编码! = mindmap美 |
2.16 Interleaved Editing & Testing
如果你不想使用 Edit & Continue ,设置编译器在运行时忽略你的新改变继续运行... = 考虑在游戏运行时使用test framework |
2.17 把精力集中在移除瓶颈上
当你在沉陷于实现细节泥塘的时候, 可以简单地把问题记下来并先忽略它, 记住什么才是重要的。(我经常犯这样的错误...
= 保持跟踪你在开发中花费的时间 |
-----------------------------脑残分割线-------------------------------------
吐槽...CU BLOG比CSDN的好用多了.... 也快...
囧看这里...
CU XSK