《C++游戏开发》笔记十五 专栏说明&游戏中的寻路算法(一):概论

来源:互联网 发布:java基础看什么书 编辑:程序博客网 时间:2024/05/16 06:27

本系列文章由七十一雾央编写,转载请注明出处。

 http://blog.csdn.net/u011371356/article/details/9796269

作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5&mod=personinfo


 

      大家看到概论应该就知道了,今天雾央不打算写程序,呵呵。因为雾央今天想先谈一下这个系列以后的行文思路和专栏的定位,所以只能大致的说一下寻路算法的东西了。这一篇其实雾央更希望和大家交流一下,也感谢大家一直以来的支持,另外雾央也想知道大家的想法,欢迎大家交流一下对游戏的看法或者对文章的看法。


      前几天雾央申请成功了《C++游戏开发》专栏后,就一直在思考一个问题:后面继续写什么?这个专栏前面的内容是雾央以前就会的东西,后面的就是雾央和大家分享的自己学习到的知识。把自己学到的东西写出来,一方面可以帮助到初学的朋友们,另一方面也可以加深自己的理解,我觉得,如果能让大家看懂,那么自己理解的也就差不多到位了。

      

      到现在为止,雾央介绍的都是游戏实现的一些基础的东西,比如粒子系统、障碍判定、战争迷雾等等,接下来雾央打算写完寻路算法,之后计划写一个RPG游戏Demo,因为微博里面不少朋友留言问游戏组织和场景切换等的问题,写一个Demo初学的朋友们应该就明白了。

      写完Demo之后,2D游戏开发的基本东西差不多就写完了,初学的朋友们也可以写写自己喜欢的小游戏了,应该不会有什么问题了。

      Demo之后,雾央思考了好几天,决定写3D游戏方面的东西,因为雾央学过一段时间的Direct3D,写出来巩固一下自己学的东西,也分享给感兴趣的朋友。

      这个专栏的定位就是游戏实现方面的细节,雾央想分享自己学到的在游戏开发过程中需要解决的一些问题。最近由于需要和同学快速的做出Android游戏,所以雾央也在学习cocos2d-x引擎,它最近很火,大家看看博客里面讨论这个的博文数量就知道了,所以有时间雾央可能也会写一下cocos2d-x学习经历,引擎里面很多功能都已经帮大家封装好了,比如粒子系统,想写出满屏下雪的效果大概只需要3行代码就可以了,所以如果大家是要参加比赛或者做项目用引擎是再合适不过了,非常的方便。

      但是雾央在笔记一中说过了,用引擎开发最大的弊端就是自己学到的东西不够多,只能是什么引擎火就去学什么,调用一下它的函数就实现了功能,不太容易明白实现的过程,只能知其然,不过有些引擎是开源的,大家功力够了之后可以去研究它的实现。

      雾央仍然认为,如果是在学习阶段,最好是从填像素做起,这样自己进步才快,事实上,自己知道原理的话,学引擎起来也是非常快的。另外,引擎主要提供了架构的支持和动画特效等方面的便利,像战争迷雾,寻路算法等仍然是需要自己实现的,所以这个系列雾央会坚持写下去的,欢迎大家继续关注,并且雾央希望在积累到一定程度后,写出自己的游戏引擎。

      其实,雾央想强调的就是一点:学习和开发是有很大不同的,学习就要自己动手去实现,探求原理,而开发则要选择最方便的工具,在最短的时间内实现。

 

      好了,扯了一下以后的行文思路和对引擎的看法之后,我们开始寻路算法。

 

      应该说,大多数游戏中都是需要寻路算法的,因为游戏中人物、怪物、NPC都需要移动,人物可以由玩家操纵运动,但是怪物和NPC就必须有寻路算法来决定他们的移动了。即使像冒险岛那样的横版游戏,其实也是有的,在怪物视野内没有人物的时候,我们看到怪物在四处瞎晃悠,这也算是随机寻路算法,在场景中漫无目的的走来走去,当玩家进入怪物的视野范围内时,怪物就会向接近玩家的方向运动,比较简单的跟踪算法就如同雾央在笔记九中写的那样,直来直去的,按照最短路径靠近。但是笔记九中的跟踪算法几乎是没有什么作用的,因为场景中不可能都是平地,游戏中是必然存在河流沟壑箱子等障碍物的,而且游戏中还有走来走去的怪物,这些都是移动的障碍物,这些因素的存在大大增加了寻路问题的复杂度。

      游戏中对寻路算法的需求一般都是要求最短路径,比如玩家自动寻路,怪物攻击玩家等,这类问题的研究已经非常成熟了,可以百度谷歌到很多资料,大家可以看看,雾央也会按照自己的理解写一遍原理和程序。

      要求最短路径,最直接的方法就是暴力穷举了,找出所有路径,然后比较出最短的那一条。当然大家想想就知道不合适了,地图上节点一多,游戏完全成了悲剧。现在游戏中比较最流行的算法就是A*算法了,属于启发式搜索,其实原理也比较简单,但是可能初学看起来会比较困惑。雾央会在下下节开始中讲解A*算法的原理和实现代码。

     为什么是下下节呢?因为下一节要讲其他的搜索算法,哈哈。雾央打算写一个迷宫寻路的程序,会用回溯法寻找路径,有时间可能还会扯下其他的。

 

     好了,今天就写到这里吧,剩下的下次继续,欢迎继续关注。

 

     今天没有写程序,所以给大家推荐一本游戏开发方面的书《游戏之旅-我的编程感悟》,这本书讲了一些游戏方面的技术,但是很多都已经过时了,毕竟它是云风大神十年前写的书,但是正如书名所言,书侧重的是编程感悟,书中包含了很多云风对游戏的思考和认识,写的很深刻,非常推荐大家读一下。另外,如果大家不知道云风,请自己百度一下。至于书籍的下载地址,大家直接百度书名,搜出来的新浪爱问上有零积分下载,如果实在找不到,也可以留邮箱,雾央发给你。

 

     另外如果大家对网页游戏感兴趣的话,也可以看看Yorhom的博客,他写了很多HTML5游戏开发的文章,很不错。PS:他还在上初二呢,让雾央惭愧了好久,呵呵。

 

 

    《C++游戏开发》笔记十五到这里就结束了,更多精彩请关注下一篇。如果您觉得文章对您有帮助的话,请留下您的评论,点个赞,能看到你们的留言是我最高兴的事情,因为这让我知道我正在帮助曾和我一样迷茫的少年,你们的支持就是我继续写下去的动力,愿我们一起学习,共同努力,复兴国产游戏。

      对于文章的疏漏或错误,欢迎大家的指出。

 

原创粉丝点击