上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 70 下一页
摘要: 据 Drew 所知最短路经算法现在重要的应用有计算机网络路由算法,机器人探路,交通路线导航,人工智能,游戏设计等等。美国火星探测器核心的寻路算法就是采用的D*(D Star)算法。 最短路经计算分静态最短路计算和动态最短路计算。 静态路径最短路径算法是外界环境不变,计算最短路径。主要有Dijkstra算法,A*(A Star)算法。 动态路径最短路是外界环境不断发生变化,即不能计算预测的情况下计算最短路。如在游戏中敌人或障碍物不断移动的情况下。典型的有D*算法。 这是Drew程序实现的10000个节点的随机路网三条互不相交最短路 真实路网计算K条路径示例:节点5696到节点3006,三条最快 阅读全文
posted @ 2011-02-12 16:14 oayx 阅读(3557) 评论(0) 推荐(1) 编辑
摘要: 1、不要试图重载||,&&操作符,因为它们使用短路求值法(一旦确定了布尔表达式的真假值,即使还有部分表达式没有被测试,布尔表达式也停止运算),而重载之后采用的是函数调用法。首先当函数被调用时,需要运算其所有参数,所以调用函数functions operator&& 和 operator||时,两个参数都需要计算,换言之,没有采用短路计算法。第二是C++语言规范没有定义函数参数的计算顺序,所以没有办法知道表达式1与表达式2哪一个先计算。完全可能与具有从左参数到右参数计算顺序的短路计算法相反。同样,也不要试图重载逗号(,)操作符,因为 阅读全文
posted @ 2011-02-12 15:32 oayx 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 这个最好看MSDN,讲的比较清楚http://msdn.microsoft.com/en-us/library/aa366599(VS.85).aspx不过要注意以下几点:1 申请的私有内存只能被调用进程(就是call这个api的进程)使用2 HANDLE WINAPI HeapCreate( __in DWORD flOptions, __in SIZE_T dwInitialSize, __in SIZE_T dwMaximumSize);第三个参数的设置,如果指定为0的话,则堆可以在需要的情况下不断增大。Applications that need to allocate large m 阅读全文
posted @ 2011-02-12 14:03 oayx 阅读(4127) 评论(0) 推荐(0) 编辑
摘要: 好久没有更新过博克了,春节的最后一天更新一下,写一下关于游戏中关于光影效果的方法,以及我的实现.去年有个机会和call duty3的程序总监聊天(此人是一个华人,当时已经回国在腾讯做互动娱乐部门副总,想找我过去),他提到次时代游戏和前一代游戏的最大区别之一就是游戏的光影效果,可见游戏中光影效果是如此的重要。关于游戏中的光照,就目前来看大致两种方式,一种是Unreal的与渲染光照贴图+ShadowMap,另一种则是Crysis的完全实时光影。效果上都不错,下面来简单分析一下。在讨论之前先要明确一点,游戏中的光影真的要追求和现实中一样的物理机理么?答案是否定的。画面是一个视觉艺术,只要看上去真是, 阅读全文
posted @ 2011-02-11 11:00 oayx 阅读(2152) 评论(0) 推荐(0) 编辑
摘要: 最近这几天在搞一个GameFramework,其实就是在引擎基础上增加一个游戏框架,对游戏进行抽象,对引擎使用的一些封装。在进行具体设计的时候很多细节问题是值得思考的。总结如下 总的来说我所设计的游戏框架从功能上来讲就是两件事,一个是游戏的状态管理(什么菜单状态,游戏状态等等),在一个就是AI管理,又有一个有效的机制来负责对所有AI进行更新和维护还有交互。 对于一个所谓的通用框架需要考虑的是在各种不同游戏类型中的最小抽象是什么?那些东西是个各种类型游戏都需要有的,这个抽象如果过小很可能失去其意义,如果过大则很难做到普适,当然有些情况下想做一个通用的东西想法本身就是错误的。 根据我之前的单机游戏 阅读全文
posted @ 2011-02-11 10:52 oayx 阅读(1203) 评论(0) 推荐(0) 编辑
摘要: 昨天和同事无意中聊到开发引擎使不是一件容易的事情。我想首先需要搞清楚的是什么是引擎。早在上世纪80,90年代,那时候的游戏开发都是从头来做,没有什么引擎,后来一些聪明的开发者把个个游戏中共用的部分独立出来,包装成了一个函数库并提供一组API共二次开发者调用,这边有了引擎。也就是说引擎的本质概念就是一个能够在不同游戏项目中,或者至少是同类型游戏中重用函数库而已。而今的现代游戏引擎则更加复杂,它融入了游戏开发的各个模块系统,资源管理系统,渲染系统,物理系统,声音系统,等等。这些系统有些容易实现一些,有些较为复杂,而且它们之间有时候并不是完全隔绝独立的,更过的是相互交融配合,互为支持。更为重要的是, 阅读全文
posted @ 2011-02-11 09:29 oayx 阅读(593) 评论(0) 推荐(0) 编辑
摘要: 近几个星期以来一直在搞粒子系统,下面简要总结一下。粒子系统从其本质来说就是一些点被发射出来,并在其生命周期内受到一些影响。这些点的信息也无非就是位置,方向,颜色等等,根据需要也可以扩充其他。而渲染的时候则根据粒子的信息,再结合具体的渲染类型(比如billboard)进行渲染。从上面可以看出粒子系统分为4各部分1. 粒子,这里只要把他理解成一些关心的变量集合,比如位置,方向,颜色,纹理偏移,生命时间等2. 发射器,其实就是一个喷嘴,把粒子发射出来。所谓发射出来,听起来挺悬的,其实就是将粒子标记为活动,并对其数据进行初始设置。3. 影响器,对发射出来的例子数据施加影响,根据物理模型,或者其他什么规 阅读全文
posted @ 2011-02-11 09:28 oayx 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 作为一个引擎程序员,在我以往经历的项目中经常会遇到这样的问题,这个功能是不是该市现在引擎中,似乎放在逻辑中(或者客户端)也可以。每当举棋不定的时候我都会想引擎到底该做什么!?我这里我说说我的想法。很久以前并没有什么引擎,所有东西都是写在一起的,当开发新的游戏时基本上都是从头开始,这样就有大量重复的工作。后来一些聪明的程序员将那些可以在各个游戏中使用的代码独立出来,并作成一个库,这样便有了引擎。其实这已经很清楚了,引擎应该是可以在各个项目中进行重用的部分,或者说可以公用的模块。虽然现代的引擎更加复杂,模块更加丰富,但他依然没有改变它原有的职能。如果说某个所谓的引擎在拿到其他项目时需要进行大量的改 阅读全文
posted @ 2011-02-11 09:21 oayx 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 编写Max导出插件目前有两种选择,一种是使用max脚本,另一种就是使用max SDK了。使用Max SDK又分为使用Max标准API和IGame接口。我使用IGame接口编写Max导出插件。IGame接口就是在Max标准API的基础上有针对性地对游戏导出进行了封装,将通常繁琐的操作调用简化成一个函数,与此同时还可以通过IGame接口获得标准API的数据结构从而使用标准API进行一些复杂的操作。要想编写Max导出插件首先需要对Max内部对数据的组织形式有一个大致的了解。Max的数据不论是材质还是骨骼还是网格都是使用树结构保存,每个数据都在相应的节点上,通过便利节点,获得节点类型并作相应的转换便可 阅读全文
posted @ 2011-02-11 09:15 oayx 阅读(1757) 评论(0) 推荐(0) 编辑
摘要: 工作这么多年,也开发过几个引擎,去年还独立开发一个基于iPhone平台的3D FPS游戏引擎(包括引擎和所有编辑器)。最近在研究Unreal 3和Crysis的引擎,有了些新的想法,于是想全新开发一个新的引擎 ZeusEngine。在写这片博客的时候这个引擎已经开发一段时间。下面列出这个引擎将要支持的特性。首先这个引擎是一个同时支持PC和iPhone平台的引擎,使用统一架构(事实上没有写任何区分平台的代码)。根据资源及其配置情况便可支持在PC上的高级效果,也可以支持iPhone上的简单效果,一切都是外部资源决定。引擎特性如下:1. 材质系统 简单来说材质中分为Solution,Solution 阅读全文
posted @ 2011-02-11 09:12 oayx 阅读(577) 评论(0) 推荐(0) 编辑
上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 70 下一页