接下来要介绍许多 RogueBasin 的文章,但是在此之前,如果你也是野生程序员,没学过数据结构和算法,我推荐两本书:
第一本书从时间复杂度开始,穿插着讲解数据结构和算法,不需要数学知识,知识点都提及了、但是不深入。第二本书更仔细地讲解了怎样用 JavaScript 实现各种数据结构和算法。看完这两本书,欺负小朋友已经没问题了。
Roguelike 开发中常用的工具有五种:管理时间,计算视野,寻路,生成地图和 AI。为了方便阅读,我在每节开头先列出文章,再做解释。
第一篇文章提供了三种时间管理系统,我推荐采用第三种能量系统,它的机制如下:
那么,怎样轮流“唤醒”玩家人物和怪物,方便地插入新怪物、删除(死亡的)旧怪物?第二篇文章指出,对于使用能量的时间管理系统,其核心是一个双向链表。
Shadowcasting(第一篇文章)挺复杂的,不过我知道的三个 API——libtcod(CPP),rot.js(JavaScript)和 RogueSharp(C#)——都能够计算视野。第二篇文章思路很巧妙,哪怕用不上也应该读一读。
我们可以把地图中的每个方格看作图(Graph)里的节点,以玩家人物所处位置为起点,用 Dijkstra 算法标记出每个节点到起点的距离,最后让怪物始终沿着距离减小的方向移动——也就是逐步逼近玩家人物。Brogue 开发者最早提出这个想法(第一篇文章),并指出这种方法有多种用途:
第二篇文章详细解释了上述思路,第三篇讲解了怎样遍历节点并标记距离。
粗略地说,生成一层地下城包括三个步骤,本文只提到前两个:
深究下去,每个步骤都有很多门道。我觉得先用粗糙的技术把游戏做出来,然后慢慢打磨,适当控制开发难度比较好。
这是一位作者写的系列文章,介绍了三种 AI:无状态 AI(Stateless AI),状态机 AI(State Machine AI)和演化 AI(Evolving AI)。前两种我理解,第三种实在看不太懂。
最后我想说,构思和技术好比游戏的两条腿,任何一条太超前了都不行。不过话说回来,各种奇思妙想哪怕用不上,看一看也令人愉悦。所以我的下一句话是——人的智慧是没有极限的,迪奥!
评论区
共 27 条评论热门最新