去年大概四月份的时候,萌生了要自己做一个游戏的想法。我是一个特别喜欢玩游戏的人,尤其喜欢像 elona、符文工房、幻想国物语这样的游戏,它们的共同点就是具有一个微型的开放世界,玩家可以与 NPC 进行形式多样的交互,展开属于自己的独特冒险,就像是生活在一个虚拟世界中。我希望自己的游戏可以给玩家类似的、甚至更好的体验。
我比较擅长编程,仅从程序设计的角度讲,开发这类游戏的难点主要有两个:一是需要采用系统驱动型游戏设计,且需要较为复杂的系统来保证游戏性;二是 NPC 的 AI 设计,需要复杂的架构以保证 NPC 足够聪明,同时运算开销要小,不然存在大量 NPC 时会造成卡顿。
考虑了很久以后决定采用自己最擅长的 C++进行游戏底层系统的开发,同时也是考虑到其丰富的算法库和极高的运行效率对于解决以上两个难点很有帮助。也是出于这个原因选择了具有 C++接口的 Godot 游戏引擎,Godot 相当轻量、导出方便、文档齐全,并且还是开源的,对于当时初学游戏开发的我有很大帮助(吹爆 Godot!)。
去年 7 月到 8 月我开始尝试进行开发,当时想要实现随机生成整个游戏世界的功能,然后便沉迷于各种地形生成算法。到 8 月底的时候,已经可以生成草原、沼泽、热带、沙漠、湖泊、海洋、洞穴、雪地、火山等多种地形,达到这样的效果(地图大小为 2048*2048
,图中每个像素点代表一个 32*32
的区块):
实际地图看起来是这样的,还很粗糙:
9 月份的时候突然意识到地形生成其实根本不是游戏的核心要素,而且进一步生成合理且美观的建筑布局会相当困难。随机生成整个游戏世界的方式会对游戏机制的设计带来很大挑战,也很难对不同的功能区域进行组织管理。出于多种考虑,我才选择了现在这种传统的分块地图+手工制作的方式,之前研究的随机生成地图的算法也许只能在后期用来生成某些局部地图。
这两个多月走了弯路,浪费了一些时间,但是也学到了不少东西。由于游戏系统的特殊性,我决定自己写一个世界编辑器,用于编辑地图、大地图、角色属性,可以导出为游戏初始存档,在游戏完成后这个世界编辑器也可以用来制作模组。让我决定自己写编辑器的原因还有一个,就是 Godot 的 2d 地图编辑功能很糟糕(对我来说为数不多的缺点哈哈哈哈)。当时只是刚刚形成了这样的想法,然后就因为考研(当时在读大四)的原因,一直搁置到了今年年初。
考研一结束,我便马不停蹄地开始进行新一轮开发。撰写游戏设计方案、搜集并整理美术素材、制作世界编辑器和游戏本体。值得一提的是,Godot 的节点和信号机制用来制作游戏 UI 真的很方便!这是世界编辑器和游戏本体的界面(当时界面还没有这么丰富,这是昨天截的图):
二月份的时候,地形编辑、存档读档功能做得差不多了,基于指令的 Server 架构的雏形也已经形成,开始设计各种游戏机制。刚开始的时候每一步设计都异常艰难,不仅是因为要考虑游戏性,也因为游戏各个模块之间是相互耦合的,设计一个模块时必须考虑到对其他所有模块的影响。到了后期进行设计会受到前期设计的约束,这种情况会相对好转。
《幻想之国》开发进行到现在,也只是刚刚搭建好基础框架而已,现在的 demo 实在是过于简陋(游戏页面那几张地图是我临时制作的哈哈哈哈),还需要在现有架构下填充大量内容,NPC 的 AI 架构也还需要进行更进一步的设计,预计还需要一段不短的时间。还记得一月份的时候雄心壮志,觉得自己在毕业前就可以完成整个游戏,真是太天真了;到了五月份的时候就很绝望,需要进一步实现的功能越来越多,TodoList 减少的速度完全比不上增加的速度;现在已经认清现实了,这个游戏根本不是短时间内能够开发完成的,我已经将它视为一项需要长期投入的事业了。
游戏目前使用的美术素材都是在网上购买、然后拼凑到一起,有很多缺陷。希望后期游戏的各项细节敲定之后能够与像素美术合作,修改完善游戏的美术素材。等这个游戏做完我要自己学画画哈哈哈哈!
同开发沙盒中,支持下哈哈。感觉做沙盒最大的痛苦就是依赖的要素很多,无法像动作游戏一样快速出效果...开发的大部分时候都只能玩一个没什么游戏性的空壳
做AI之前最好先把角色和NPC能进行的各种行为选项给设计出大部分来,另外无论是行为内容的设计实现还是AI节点的实现都是挺大的工作量,要有心理准备
加油加油
很棒哦,我们也在做类似的游戏