独立开发50天,从零制作类幸存者游戏 回响幸存者 Demo
修改于9 小时前9 浏览
为什么要做这款游戏?
我从未想过涉足游戏领域,因为我自己是一名玩家,可能是市面上的类幸存者游戏,我都玩腻了,所以我决定亲自下场。
回响幸存者的核心战斗体验

回响幸存者 核心战斗体验
理想与现实
我有点完美主义,一开始我是想做暗黑3野蛮人的旋风斩,我觉得它的视觉特效和打击体验把感官刺激拉满了。我非常想实现这个效果。
等我真的开始开发,才发现,近战的打击感,视觉特效,难度非常高。
所以我只能循序渐进,先从法师开始做起,等我积累一些经验了,可能会增加近战职业。
开发经验
我本人拥有近10年的前端开发经验,普通的编程经验在游戏领域可以说聊胜于无。游戏开发我首先接触的就是每秒渲染60帧,这个对于开发和调试,难度是非常大的,不论是输出日志,还是下断点,问题都很难排查清楚。
再就是2D的移动、几何、坐标,老实说,我的数学并不好,只能借助ai来完成。如果没有AI辅助,这个游戏的开发周期可能会大幅延长。我不是那种一句话生成整个游戏功能的粗制滥造,我是以严谨的工程师思维,使用ai辅助编程,每个功能模块,都严格审核,力求完美。
开发理念:给小船装上航母核心
我前一个月大部分的时间都在研究ECS,迭代,重构,继续重构,一直琢磨,一直研究。
因为我玩过很多类幸存者游戏,比如苦痛殿堂,深岩银河幸存者,他们其实都有性能问题,作为玩家,我无可奈何。作为开发者,我必须把性能拉满。
很多独立游戏开发会优先快速验证玩法,而我选择先解决自己最在意的底层问题。
虽然这是一艘风雨飘摇的小船,但一点也不妨碍我,给它装上航母的核心。
披着Godot皮的Unity游戏
虽然我使用 Godot 开发,但我的开发思路并不是传统的节点堆叠方式,而是借鉴了很多 Unity 生态中的工程化思想。
包括 ECS、数据驱动、System 架构等设计方式,让游戏逻辑更加适合处理类幸存者游戏中大量敌人和投射物的情况。
ECS:游戏核心架构
首先,我要介绍,ECS。它是我游戏里面的核心。传统游戏都是面向对象编程的,这主要是为了降低程序的维护成本,降低复杂性。ECS其实是面向CPU编程、面向内存编程,系统里面的核心数据,全部都是适合CPU快速循环的结构。
简单来说,面向对象的循环,就像厨师每炒一个菜,都要到其他地方去取新的食材。
而ECS的循环,类似流水线,所有食材都放在厨师身边,厨师固定在自己的工位,一直炒菜。
这个其实就是CPU的寻址,寻址是有开销的,有成本的。
展示我游戏里面的移动逻辑,hero和怪物,都属于ECS里面的实体Entity,这些实体共同被这个System处理,所有的移动都在这里完成。每个System做自己擅长的事,且只做这一件事。这会使得,程序的逻辑非常清晰,没有互相交织,理不清楚的逻辑。当然ECS并不是完美无缺,System之间互相修改东西,刚上手,可能会很蒙,不知道哪个System改写了数值。

ECS 移动代码
ECS带来的性能优势
弄这么复杂,好处在哪里呢?
答案是:ECS完美匹配类幸存者游戏。因为类幸存者游戏里面有海量的怪物,海量的子弹,这些东西每秒都在移动、碰撞。ECS能够提供绝佳的游戏性能,不必再为游戏的性能、帧数而发愁,即便在非常差的电脑配置上,游戏也能流畅运行。
伤害数字
这个东西说再多,都不如2张图片,更有说服力。

伤害数字

我的伤害数字字体,其实是一张图片
作为玩家,你只需要看到大量伤害数字同时出现,而且游戏依然保持流畅。
作为开发者,我关注的不只是效果,更关注背后的性能。伤害数字并不是简单创建大量UI,而是通过 GPU 批量渲染,让战斗反馈和性能之间达到平衡。
经验宝石
我玩游戏的时候,其实非常讨厌收集这种经验宝石,这个纯属是把你的脚打断,然后给你发颗糖。因为它会给玩家造成负担,你需要不停地去捡垃圾,那种磁铁的吸附快感,来自于,前期给你极低的吸附范围,极低的移动速度。
我模仿苦痛殿堂,开发了宝石吸附时的连击音效,我个人比较满意。宝石吸收时,会产生叮叮咚咚的音效,非常悦耳。让收集成为一种解压,而不是负担。
后续计划
因为我已经闭门造车,快2个月了,想把游戏发出来,看看有没有玩家跟我品味相同。我刚做出这个经验宝石吸附效果的时候,我自己玩了很多遍,确实有点上瘾。
我目前还是专注于游戏的战斗体验、玩法相关功能开发。
希望最终做出一款,玩家喜欢玩,愿意玩的游戏。

