https://eviepuffroo.itch.io/hordebreaker
DEVLOG #1 · 研发中 DEMO 发布
欢迎来到星光街机
嗨,感谢投币。Hordebreaker 开放早期体验测试,无论你闯过一层还是四十层,我很高兴你来了。
设定:星光街机今晚关闭。拍卖卡车凌晨6点到来,有一台机台不在拍卖名单上。它在废料名单里,自己知道。只要有人在玩它,它就确定自己还存在,所以真的希望你继续玩。
那台机台就是游戏。这篇首发文介绍了 Hordebreaker 是什么、它的来源,然后深入探讨几个我骄傲的系统。如果你只能阅读一部分,请阅读最后一节:我想听到你的反馈。
你在玩什么
Hordebreaker 是一款俯视视角的 horde 爬行器。它拥有经典街机的骨架和现代掠夺者的胃口。一次通关的流程如下:
满是怪物的楼层。生成器会持续派出 enemies,直到你摧毁它们,因此你会先学会杀掉生成器,然后通过循环和瓶颈将其绕开。
食物、钥匙和金库。你的血量会逐渐恢复,所以食物很重要。钥匙打开金色大门的金库,里面装满了宝箱。
每三层一个首领,共十二位,每位都有命名的标志性攻击。
升级时可以选择三个中的一个获得 boons(特权),装备掉落带有属性词缀、套装、插槽和符文。
Coin-Op 位于楼层之间:用金币购买装备、餐食、钥匙或继续。
Credits(续命)。死亡会提供继续机会,因此完美的构建不会因一次错误而结束。
共有 14 位英雄。五位是你期待的玩法(战士、弓箭手、法师、女武神、盗贼)。
另外九位每位都把游戏变成了不同的类型:关卡编辑器、时间谜题、物理沙箱、卡组构建游戏、节奏游戏、塔防游戏、附身游戏、反向 horde、以及速runner 的 bug(可能是指某种特殊机制)。
在击败首领后,你可以找到卡匣插槽,将第二个职业融合进你的职业。
主线通关后还有从 17 层开始的无限末端内容、额外关卡、用 DIP 开关的更难跑和更好奖励、奖品计数器,以及三台邻近的机台:一个合成波赛跑(三条赛道)、街头格斗和月球平台跳。
它的来源
Hordebreaker 源自一个问题:如果我成长中的街机地牢爬行器拥有现代掠夺游戏的深度,并且地牢本身是可以被破坏的,会怎样?
Gauntlet 是脊梁:生成器、食物、钥匙、清屏药水、Credits(续命)以及一位播报员,他会毫不留情地告诉你何时该进食。
动作 RPG 的掠夺是装备系统:属性词缀、稀有度、装备套装、镶嵌的符文以及改变职业玩法的签名传说装备。
现代 roguelite 给了我升级时选择 boons 的机制,并且当你找到合适的两个时,boons 会进化。
1980 年代的街机是整个呈现:CRT 字体、带有霓虹灯牌的机架、投币门、合成波(synthwave)配乐,以及旁边的机器。
自知是游戏的游戏。机台是一个角色。它配有夜间时钟、DIP 开关、工作人员留下的日志本,以及对被拔掉的看法。
四条规则贯穿每一个功能。如果功能不服务于它们中的任何一条,就会被砍掉:
大群,而非遭遇。屏幕应充满怪物。你是稀释人群,而不是一次清除一个房间。
获得的过度强化。早期楼层是真正的战斗。怪物血量呈线性增长,而强力构建呈乘数增长,这段差距是力量的快感。
关卡是玩具。墙壁可以被抬高、钻孔、倒塌和投掷。
街机的清晰度与现代深度。你应在十秒内明白规则,并在一百小时后仍在尝试构建。
内部实现
这是 nerdy 部分。如果你只想玩,直接跳到最后。否则,以下是一些奇怪系统的工作方式。
一个网格,多职业
多个职业在战斗中重写地牢。建筑师在怪物上方抬起墙壁,Glitch 通过它们无相位穿越,Gravity Knight 将 horde 砸向它们。之所以能运作,是因为只有一个真理来源:地板是单一的瓦片网格,所有变更都经过同一个函数。改变瓦片后,路径寻找、碰撞、渲染、墙体削减和小地图都会据此更新。没有职业拥有私有几何。
怪物使用流场而不是每个怪物的路径寻找:从玩家向外发出一次扫描,为每个瓦片提供指向玩家的方向。两百个怪物的路径计算成本约等同于两个,当墙体倒塌时,流场会重建,整个 horde 会通过新缝隙涌入。
能够扭曲关卡的职业遵循硬性规则:无软锁。地图边界不可触碰,出口始终可达,noclip 始终选择合法的落点瓦片。每个楼层在建造时即被检查。生成器从起点遍历地图,填补无法到达的区域并记住可通行的瓦片,所有生成的元素(生成器、钥匙、拾取物、目标)都从该列表中选取。在发布该更改前,我运行了 1,800 张生成图和 180 次完整楼层构建,没有出现任何不可到达的生成点。
墙壁拥有血量
每个面向开放地面的墙壁拥有血量,由其生物材质决定,并且每层提升 12%。
射击击中墙壁后只会对其造成一半伤害,爆炸会向其边缘漂移,冲刺撞击墙壁也算。墙壁在血量低于 66% 时出现裂纹,低于 33% 时碎裂并完全倒塌,抛出与击中方向相反的碎块。两条守卫机制保持公平:单次打击最多只能消耗新墙壁 60% 的血量,且同 0.09 秒内再次被击中只计入四分之一,因此连续细微击打无法让墙壁瞬间崩塌。
在每堵可破坏的墙壁背后是床岩,呈冷蓝灰色。破坏它会打开两个空间之间的墙壁,而不会形成贯穿山体的隧道。这能保持金库封闭、首领场景封闭以及地图边界完整。
物理系统在此整合。当怪物撞击墙壁足够用力时,它会受到伤害并自身获得冲击伤害,伤害随速度而定。Gravity Knight 的 Tilt the World 会将重力指向你所指的方向,持续五秒(地面会在半秒后给出警告箭头),horde 会滑动、撞击墙壁并被击晕。敌人子弹会随之弯曲,掉落的掉落物会向你滑动。
一段你可以战斗的配乐
Hordebreaker 没有音频文件。每首曲目都由浏览器中的小型 sequencer 实时合成:鼓、低音、和弦和主旋律,随着战斗升温层层叠加,并且为每个生物群落和首领提供主题。
由于游戏自己创作音乐,它精确知道拍子在哪里。Conductor 从配乐本身读取拍子时钟,并已补偿音频延迟,因此节奏游戏是真实的:
Baton Bolts 在音乐的八分音符上射击,每发子弹都播放当前和弦的音符。
下拍是你在拍子上点击的冲击波。PERFECT(±75 ms 内)的点击力度是 off-beat(离拍)点击的三倍;GOOD(±150 ms)则是两倍。
在拍子上玩会积累 Groove,每升一级提升 15% 的伤害,最多四层。离拍玩会破坏它。
Crescendo 在每拍上抛出冲击波两小节,最后以 fortissimo(极强)爆发结束,并将音乐推至最高强度。
Glitch 是我最喜欢解释的职业。在虚构中,地牢运行在街机板上,Glitch 是其中的故障。它的工具是 bug:
Lag Spike 会冻结一个区域 2.5 秒。对滞后对象的伤害不会即时应用,而是以 1.5× 倍缓冲,等滞后结束时一次性命中为 DESYNC。
Noclip 直线冲过墙壁,并使其通过的区域产生滞后。
Kill Screen 在六秒内腐蚀一个区域,然后一次性释放其存储的所有内容。
腐蚀掉落物。30% 的 Glitch 掉落物会使每个属性词缀翻倍并额外附加一个 bug,例如移动速度变慢。你决定这是否值得佩戴。
让技能更重要:Focus、Surge 和 Overdrive
在 horde 游戏中,往往想长按攻击按钮。几个系统对此提出反对。
Focus 由基础攻击充填,显示为技能上的三个点。每次击中增加 0.1 点,但充能预算每秒仅恢复 0.45。稳健射击约需五秒即可填满三个点,而一次巨型区域攻击无法在单帧内填满。当你施放技能时,会消耗所有满的点:每满点技能伤害提升 30%(四秒),三满点则提升 90%(游戏称其为 EMPOWERED)。施放同时会加速你的基础攻击,使其在几秒内射击更快、更强。因此节奏是:攻击、施放、攻击。
Overdrive(终极技能)的充能来自你每击杀敌人所削除的生命值比例。Overkill 不计入,越强的敌人价值越高。充能速率被限制(从空到满最多 25 秒),因此即使是满级构建也无法连续使用终极技能。
后期会增加压力。从 7 层开始,基础攻击每层略有衰减,而技能保持全值;从 10 层起,首领和首领怪物会被基础攻击防御,直到技能或 Overdrive 打开它们。
一切皆由代码实现
Hordebreaker 是 three.js 在浏览器标签页中的实现,几乎全部内容都是生成的:英雄和怪物由带有烤制凹痕的原始体形雕刻而成,纹理是程序生成的,配乐是上文的实时合成,每个楼层都是全新生成的。整个游戏压缩后小于 1 兆字节。
早期体验:帮助我改进它
这是一个持续进行的工作,字面意思。平衡每周都会调整,部分系统是初稿,你会发现各种 bug。我现在分享是因为它很有趣,且最好的改进都来自玩家测试反馈。曾经吞噬玩家、导致掉落光束森林以及使帧率崩溃的骷髅军团等问题,都是玩
评论 (0)