Grandpa SDK 0.7发布
主要修改:
- Max插件能自动保存最后一次成功导出的设置
- 添加IVertexStream接口,顶点数据分为静态和动态两个stream
- 完善IEventHandler接口,支持任意用户自定义动画事件
- 添加IProperty接口,用户可以在模型,部件和材质文件中添加自定义属性
- 添加ISkin接口,支持GPU蒙皮
详情请见更新历史
主要修改:
详情请见更新历史
这篇是03年写的,那时候还没有进入游戏圈,现在回想起来游戏里很多问题的处理比之前想象的要简单。
一提起游戏中的寻路,很多人就会想起A*算法. 的确,A*无疑是当前用的最多的寻路算法,在比较简单的地图上它的速度非常快,能很快找到最短路径(确切说是时间代价最小路径),而且使用A*算法可以很方便地控制搜索规模以防止程序阻塞.
关于A*算法的文章已经很多了,上google随便一搜就能找到好多,但是国内网友原创的似乎不是很多,建议英文不太差的爱好者上国外的网站查找相关资料,比如这个Amit’s Game Programming Information.
A*算法本身表述起来很简单,程序写起来也不难,两三百行轻松搞定.关键是要在代码优化上下功夫,这就很考验程序员的算法功底了.基本的思路一般都是以空间(也就是内存的占用)换取时间(搜索速度),另外还有一些地图预处理(包括人工的预处理和用程序预处理)的技术比如多级地图精度或者地图分区域搜索等等,但我今天要讨论的不是A*算法本身,关于这方面有兴趣的网友可以另外和我交流.
不管怎么优化,寻路总是一项非常费时的工作,并且工作量和地图的大小基本成线性关系(不限制搜索规模的前提下).现在的rts往往允许每方生产200个以上的移动单位,同时可能会有大量的移动物体需要寻路.如果同时选定100个单位点并向他们下达远程行军命令,假设每次寻路需要5ms(在复杂地图上,这个数值一点都不夸张,我是说在我的机器上),那么就需要0.5秒的时间在寻路上,也就是说整个游戏将因此停顿0.5秒.你受的了么?
以前用d3d比较多,最近的一个项目采用我不熟悉的opengl做渲染api,碰到一些问题,这里记一下
刚才习惯性地上水木瞅了一眼,看见十大里有一个标题是“大家跨年做了什么”,才意识到已经是2010年了。
可以很骄傲的说,我是在写代码中度过的,好像去年也是……
祝福订阅这个blog的读者,偶尔来看看的读者,以及google到spam回帖中可疑关键词不小心点过来的过客
What’s new:
上次推荐过一个flash游戏Stack2。这个游戏的过关条件是,用关卡提供的所有积木摆成任意造型,只要保持若干秒不坍塌即可。
玩的过程中你会感觉到每关都有一种游戏设计者“推荐”的摆法,往往从关卡名称中可以得到提示。但是好游戏的一个重要标志就是你可以充分挖掘想象力,用另类的方式来过关。
以下是一些另类摆放方式的截图。如果你碰巧也玩了这个游戏,可以交流一下:)

刚刚从水木上得知一个星际争霸AI挑战赛的消息,久违的竞争欲望又开始弥漫……实际上我早就觉得应该有人举办这样的比赛了。想起两年前在老blog上发过的一篇文章,现在转过来:
本文说的不是“游戏里的AI”,而是“用AI来玩游戏”
曾经有一段时间对人工智能,尤其是博弈类的人工智能非常痴迷,大概是“深蓝II”打败卡斯帕罗夫的时候吧,写了一个五子棋程序,棋力很差,因为当时思路有问题,只用了一层搜索,大部分的时间都耗费在局面估价函数上了。结果是唬一唬五子棋初学者还行,下过我自己基本没戏,更不用说打败全人类了J。其实五子棋是状态空间很小的一个博弈游戏,很容易搜索到相当的深度,甚至某些开局已经被证明是必胜或必败而在正式比赛中被禁用,这也是阻碍它成为一个大的竞技项目的原因吧,相信现在最好的五子棋程序应该能轻松击败人类了。