跳过正文

开发日志 03:走出庭院,把材料带回来

·2336 字·5 分钟·

材料袋终于可以捡起来,也可以带回咖啡店了。

上一篇里,庭院已经能移动、攻击和翻滚,玩家与敌人也换上了 2D 像素占位形象。但放在路上的材料袋还只是画面样品,战斗结束后,没有更多事情可以做。

这次围绕这件事往前走了一步:先把掉落、拾取和交付接起来,再增加一张外侧空地地图,让玩家从庭院出发,战斗后带着材料回来,与店员完成交付。

1. 让战斗留下可以带走的东西
#

第一步是让敌人死亡后掉落一袋材料。玩家靠近后按 E 拾取,界面里的材料数量随之增加;走到咖啡店门口,再按 E,消耗一份材料,完成本轮交付。

由此,原先只有战斗和重试的原型多了一段后续:击败敌人 → 拾取材料 → 返回咖啡店 → 完成交付

规则暂时很小:每个敌人固定掉落一份材料,每轮交付只需要一份,没有随机物品品质,也没有奖励。先把这一轮走通,才能继续判断材料、战斗与咖啡店之间需要怎样的联系。

看起来只多了一个 E 键,实际要处理不少边界。玩家死亡时不能拾取,隔着墙不能交互,离得太远时提示需要消失;如果附近有多个目标,则选择最近且可以接触到的目标。

一次按键只做一件事。 捡起材料和完成交付不会被同一次输入连续触发,重复交付也不会再次扣除材料。按 R 或在菜单里重新开始,会清空这一轮的材料与完成状态,让流程能够从头再试。

玩家靠近掉落的材料袋,界面显示 E 拾取材料提示
拾取检查:材料袋已经可以交互。这张图来自暂停菜单与 HUD 精简之前,保留了当时的界面布局。

2. 把说明和设置收进暂停菜单
#

玩法增加后,常驻界面也开始变得拥挤。这一轮加入了暂停菜单,将操作说明与设置分组放进去,重试和继续放在底部。平时的 HUD 保留血量与目标,交互提示只在靠近相应对象时出现。

打开菜单后,世界暂停,界面仍然可以操作。重新开始会重置游戏这一轮的状态,已经保存的画面模式和音量偏好则继续保留。

试玩时还修了一个很小、但手上很容易感觉到的问题:按钮悬停时没有明显反馈。检查后发现,普通、悬停与按下状态共用了同一份背景资源。将状态分开后,鼠标移上去和按下去终于有了可见的区别。

这些调整让说明、设置和游戏画面各有位置,也让反复试玩时的暂停与重试更方便。

3. 从庭院走到外侧空地
#

最初的流程仍然发生在同一个庭院里。随后增加了外侧空地,玩家靠近出口按 E,可以在两张地图之间往返。庭院保留店员和交付点,战斗放到外侧空地。

每次进入空地,会随机生成 2~5 个敌人。 生成位置会检查地面、障碍、出入口和其他敌人的出生点,避免角色一出现就挤在一起或堵住出口。采样次数有上限,如果空间不够,就减少生成数量。

多个敌人分别处理受击、死亡与掉落,界面显示最近的存活敌人。原有的攻击和翻滚继续使用,玩家需要在多个预警与接近自己的敌人之间寻找行动时机。

这仍然是平地上的占位战斗场景。敌人还没有寻路和群体避让,当前的生成检查也只服务于这种平地地图,复杂地形与更丰富的敌人行为留待后续。

外侧空地中的玩家与多个敌人,入口处标有返回庭院
外侧空地:多个敌人分散在场内,玩家可以从入口返回庭院。图为清晰模式。

4. 换一张地图,哪些东西应该留下
#

有了地图切换,就必须明确离开一个地方以后,什么继续保留。

当前采用的规则是:

  • 玩家带着当前血量、翻滚冷却和受伤保护进入下一张地图,切图会结束正在进行的攻击或翻滚。
  • 已经拾取的材料和本轮交付结果继续保留。
  • 离开空地时,旧敌人与地上尚未拾取的材料会清除;再次进入时重新生成敌人。
  • 按 R 或从菜单重试,会清空整轮状态并回到庭院。

因此,往返地图不会自动恢复血量。想带回咖啡店的材料,需要先捡起来;留在地上的袋子不会等到下一次回来。

实现上,本轮材料与完成状态由一个持续保留的数据对象管理,地图负责自己的敌人和地面掉落。这样,地图被替换时,玩家已经带走的材料不会跟着消失。

这些状态目前只在本轮运行中保留,退出游戏后不会保存。 音量和画面偏好的保存属于另一套设置逻辑。

5. 让店员接过材料
#

咖啡店门口原本只有交付标记。这次增加了占位店员,让收集和交付有了对话回应。

店员会根据当前状态显示三种内容:没有材料时说明需求,带着材料时显示交付按钮,完成交付后给出完成回应。玩家不需要先来“接任务”,也可以先去战斗,拿到材料后再回来。

交谈、推进和结束对话使用 E,也可以按 Esc 离开。交付由按钮明确触发,关闭对话不会自动扣除材料。每轮只交付一次、消耗一份;即使手里还有多余材料,再次交谈也会优先显示完成后的回应。

门口标记仍然可以交付,与店员共用同一套数量和完成状态检查,避免从两个入口重复提交。

对话期间世界暂停,并与暂停菜单互斥。界面操作需要隔离游戏输入,避免按键在关闭对话时又落到战斗或重试逻辑里。现在完整的一轮可以这样走:

庭院交谈 → 进入空地 → 战斗 → 逐份拾取 → 返回店员处交付 → 获得回应 → 重试。

店员形象与台词仍用于验证流程,交付还没有奖励,也没有扩展成通用任务系统。

玩家携带两份材料与店员交谈,对话框显示交付一份材料按钮
带着材料返回庭院后,店员显示交付选项。交付需要明确点击按钮,离开或结束对话不会自动扣除材料。

6. 工程里能交谈,导出包却丢了台词
#

这次最值得记下来的一次问题出现在导出之后:工程里对话正常,测试包里却只能看到交谈提示,打不开预期的对话。

检查最终打包的数据后发现,说话人名称还在,三组台词数组却都变成了空值。将对话资源里的台词字段从 PackedStringArray 改成 Array[String],重新导出后,台词得以保留,对话与交付流程恢复。

这次修复解决了当前资源的导出问题,但还没有定位到引擎内部原因,不能据此认为所有 PackedStringArray 都会出错。

它也提醒我:工程内检查通过之后,还需要检查最终发出去的包。 后续为两平台最终 PCK 增加了台词数据检查,并从打包资源运行对话与交付验证,确认旧包能够检出问题、修复后的包能够通过。

从庭院出发,走进空地战斗,再带着材料回到店员面前,这条短短的往返路线把原先分散的玩法连了起来。角色和场景还很简陋,交付也只有一句回应,但咖啡店开始有了让玩家回来的理由。接下来,希望能沿着这条路线,慢慢做出战斗之外的生活感。

Rondo 开发日志 - 这篇文章属于一个选集。
§ 3: 本文

相关文章

Hello World

·105 字·1 分钟
你好,世界!从这里开始,记录 Rondo 的开发过程、遇到的问题和每一步进展。

留言

留言经审核后显示,请勿提交密码或其他敏感信息。