2011年6月4日

摘要: 发现引擎有内存泄露。根据TDD思想,将复杂的demo统统扔一边,写了几个非常简单的test工程(期间还了解了一下google开源的gtest单元测试框架,相当好用,推荐一下)。test工程依次测试了不同的dll,发现python.dll发生泄露,如果是以前我一定会忽略之,认为是检测工具的问题(我用的是visual leak detector 1.9d);但是自从查了几次泄露问题及翻了一下vld的代码之后,对于泄露问题还是比较谨慎。根据vld报的结果,在执行Py_Initialize()之后就发生了内存申请,并且这部分内存没有被释放。以前没有读过python源码,所以理解起来很费劲。依旧foll 阅读全文
posted @ 2011-06-04 15:22 konlil 阅读(1460) 评论(0) 推荐(0) 编辑

2011年5月17日

摘要: 查出来的三个值:INST_RETIRED.ANY : 表示指令的有效执行的计数CPU_CLK_UNHALTED.CORE: 表示非停机状态花费的机器周期CPI = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY, 表示一段代码(函数,模块)平均每条指令花费的机器周期.自然是愈小愈好.所谓Hot Spot就是:CPU_CLK_UNHALTED.CORE大的函数,且CPI也大的函数一般来说,CPI = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY, 表示一段代码(函数,模块)平均每条指令花费的机器周期.自然是愈小愈好.这样你就可以找 阅读全文
posted @ 2011-05-17 16:00 konlil 阅读(1067) 评论(0) 推荐(0) 编辑

2011年4月23日

摘要: 如果要让游戏里的角色或者NPC能执行预设的AI逻辑,最简单的用IF..ELSE...神器既可以实现,但是再复杂的一般用经典的状态机来切换状态,但是编辑器写起来比较麻烦。相对的,行为树(Behavior Tree)理解和编辑起来就非常简单了。行为树,其实也是一种有限状态机,只不过形式上分层呈树结构,人称分层有限状态机(HFSM)。行为树主要用四种节点(还有诸如:装饰节点等其他能更丰富功能的节点)来描述行为逻辑,顺序节点、选择节点、条件节点、执行节点。每一棵行为树表示一个AI逻辑,要执行这个AI逻辑,需要从根节点开始遍历执行整棵树;遍历执行的过程中,父节点根据其自身类别选择需要执行的子节点并执行之 阅读全文
posted @ 2011-04-23 23:19 konlil 阅读(8359) 评论(0) 推荐(1) 编辑

2011年4月10日

摘要: 从我的理解,一款引擎从功能上划分大致分为:基础系统,资源管理,io管理,内存管理,场景管理,材质管理,GUI,物理系统,渲染器,脚本接口层等,当我尝试将这些系统一个个的拼凑起来的时候,发现接口设计很费劲,就算把各个子系统之间的关系用图表示出来,也经常出现这样设计出来的接口却不是希望要的接口。“自顶向下”的设计在这里就显得很对症,引擎的实际用户实际上是脚本程序员,因此根据用户的需要定制接口是个好方法。比如:一个最简单的脚本demo是这样的: 1 --创建一个角色 2 player = CPlayer:new() 3 player:Load("aaaa.player") 4 5 阅读全文
posted @ 2011-04-10 12:03 konlil 阅读(557) 评论(1) 推荐(0) 编辑

2011年4月9日

摘要: 第一次使用git, 听人说比svn好用,google上了解了一下git的原理,跟svn还是有很大区别的。现在网络上提供网盘服务越来越多了, 金山快盘, 盛大EverBox, 微盘,当然还有墙外大名鼎鼎的dropbox. 这些网盘都可以自动同步本地文件的修改,因此配合git可以配置一个自己的git服务.1. 在网盘中建立仓库目录: >> cd d:/dropbox >> mkdir git/myrepo.git >> cd git/myrepo.git >> git --bare init #注意这里要用bare参数,不然后面的push会出错2. 阅读全文
posted @ 2011-04-09 20:58 konlil 阅读(1464) 评论(0) 推荐(0) 编辑

2011年3月24日

摘要: 无敌小黑被lp征用了,每天回去只能拿着ipad看书,不能寇丁了,相当不习惯。遂想着搞了个解决方案:1. ipad和小黑利用wifi互通(我用的ipad 代码编辑器是Textastic,支持ftp互通,很方便)2. 建立一个bat文件,让小黑自动编译(参考这里):1 REM 先设置好vc的环境变量2 call "d:\Program Files\Microsoft Visual Studio 8\vc\vcvarsall.bat"3 REM 编译开始4 vcbuild "***.sln" "debug|win32" /rebuild / 阅读全文
posted @ 2011-03-24 13:59 konlil 阅读(2340) 评论(0) 推荐(0) 编辑

2011年3月23日

摘要: 每次想要都忘了地址,备忘:http://www.kludx.com/browse_video_cards_detailed.php 阅读全文
posted @ 2011-03-23 13:15 konlil 阅读(241) 评论(0) 推荐(0) 编辑

2011年3月17日

摘要: 好的内存管理不仅仅可以提高程序的性能(尤其是对程序频繁申请释放内存的地方进行优化),而且可以提高程序的健壮性(相信人们对时不时发生内存非法访问而产生的crash深恶痛绝)。提到内存管理就不得不提内存池,现行的所有操作系统都有自己高效的内存池管理机制。这里的所谓高效有两个方面:一个就是提高程序访问内存的速度;另一个是提高内存的使用率,尽可能的减少内存碎片。《C++应用程序性能优化》一书中写的那个内存池实例就是一种经典的内存池实现,据说windows系统就有过类似的设计。这种内存池的设计需要预先设定内存的划块方法,每种方法都把内存切分成不同的粒度,根据程序分配内存的需要找到合适的切分粒度(合适的切 阅读全文
posted @ 2011-03-17 21:07 konlil 阅读(791) 评论(0) 推荐(0) 编辑

2011年3月6日

摘要: 【声明】:本系列文章译自:http://learningwebgl.com/blog/?page_id=1217, 感谢Giles Thomas;限于我的英文水平,本文翻译并不一定严格遵从原文,但也不会严重背离原文(如果有,请务必知会我一下,多谢);如果处于非商业目的,你可以自由转载并修改完善之;一切目的都是促进交流。如果能注明出处就最好不过了~~-----------------------------------------欢迎来到我的第一篇WebGL教程。这篇教程基于著名的Nehe Opengl教程的第二课。将向你展示怎样在网页中画一个三角形和一个方块。这个可能引不起你的多大兴趣,但是确 阅读全文
posted @ 2011-03-06 21:26 konlil 阅读(848) 评论(0) 推荐(0) 编辑

2011年3月5日

摘要: 【声明】:本系列文章译自:http://learningwebgl.com/blog/?page_id=1217, 感谢Giles Thomas;限于我的英文水平,本文翻译并不一定严格遵从原文,但也不会严重背离原文(如果有,请务必知会我一下,多谢);如果处于非商业目的,你可以自由转载并修改完善之;一切目的都是促进交流。如果能注明出处就最好不过了~~---------------------------------------------------先来简单的如果你只是想体验下WebGL的demo,并不需要自己开发也并不关心一些最新的特性是不是支持,那么通常我建议:1. 如果你使用windows 阅读全文
posted @ 2011-03-05 22:46 konlil 阅读(512) 评论(0) 推荐(0) 编辑

导航