下载 App
元素熔岩开发日志 #1:把攻击键删掉之后
**日期:2026-10-08**
大家好,这是《元素工坊:熔岩巨龟》的第一篇开发日志。这是一款把"战斗"交给环境的动作解谜战斗 Demo:单关、封闭圆形竞技场、目标体验三到五分钟。
## 一、第一个决定:不给玩家武器
做这个 Demo 的第一个决定,就是把攻击键从玩家身上删掉。
主角没有近战、没有射击、没有任何普通攻击。他手里只有火、水、冰、风四种元素瓶,数量是 2/2/2/1,用完就没了。而瓶子本身几乎不造成伤害——**真正能打死 Boss 的,是场上本来就在的东西。**
熔岩巨龟披着厚重的岩石护甲,免疫冰与风的直接伤害。唯一的破甲路径是:先用火把它烤到护甲过热,再让它在过热状态下骤冷,护甲才会碎裂,然后有约 12 秒的暴露窗口。窗口一过,石壳重新凝聚——但会保留裂纹,下次更容易破。
所以玩家的"战斗"其实是这样一件事:**先把火盆、水坑、冰柱、木箱和风车连起来,再把巨龟引进去。**
这一版还是纯矢量占位——人物是圆形加方向线,巨龟是灰色多边形,火焰和水面都是临时绘制的。美术很简陋,但玩法骨架已经跑通:移动、投瓶、元素反应、过热、破甲、倒计时、重凝,全都能触发。
![早期矢量原型]
这一版最让我确定的不是画面,而是巨龟的反应:**常态下它会主动躲开你点燃的地面、烧起来的木箱和吹旺的火盆。** 第一次看到它绕着我点的火走,我就知道这个设计成立了——因为它会躲,"让它躲不掉"才有意义。
## 二、火烤 → 骤冷 → 破甲,这条链怎么结算
巨龟有一个热量值:站在火里、靠近火盆会持续加温;进入水坑、踩上冰面、处在冷风区则会降温。热量到顶 → 护甲过热;过热状态下持续接触冷源约 0.25 秒 → 护甲碎裂。
听起来简单,但这里有个必须堵住的漏洞:**如果降温没有门槛,玩家可以先烤热、等它自己凉回护甲状态,热量清零后重来——过热就变成了可以反复刷的状态。** 所以自然散热只回到过热门槛的一半就停住:保留裂纹,下次更容易烤热,但不会归零。
环境这边同样互相牵连:
- 水坑是**可再生**的:水 → 蒸汽 → 暂时干涸/回流 → 水
- 冰柱有两根,融化后的水有固定落点,地面有明确标记
- 木箱可以推动(有短暂动作代价)、可以被点燃、可以倒塌
- 火球落地后复用火元素的环境反应:点火、解冻水坑、点燃木箱
风这一条我们专门加了约束:**风只能扩散已有的火,不能在空地上凭空生火。** 第一版风瓶会无条件生成火焰,玩起来像变魔术,不像物理——改掉之后,"先把火点起来,再用风推过去"才成为一个真正的思考题。
这一轮还修了几个不显眼但很致命的问题:投瓶的预览落点和真实落点不一致(改成"目标点释放、途中可被拦截",两者共用同一套检测);玩家站在水坑里投冰瓶时,冰瓶会被水坑的交互圈吞掉(改成忽略发射时已包含玩家的设施圈)。
现在受控测试能跑通完整的"零瓶击杀链":普通火盆受热 → 水坑骤冷破甲 → 引回火盆烧穿本体。**但这是逻辑可达,不等于真人通关**——真人躲避和手感还没验收,我不想把这两件事混为一谈。
## 三、给这个游戏定一套美术语言
玩法稳定之后,最大的问题是:整个画面还是圆的、方的、多边形的占位图形。
我们定下的方向是:**高清、非像素、有明确材质感的俯视战斗画面。** 不做像素风,不做景深虚焦,不做过度模糊滤镜。
原因和玩法直接相关:玩家必须一眼分辨"这块地是冰还是水""这个木箱是不是在烧""火焰的边界在哪里"。所以地面装饰必须安静,而火焰、危险边缘和预警必须比地面更醒目——**看清环境本身就是这个游戏的全部战斗技巧。**
配色也定了下来:冷灰与深蓝打底,黄铜机关点缀;火偏橙红、水冰偏青蓝、风偏青绿。玩家是青蓝色的炼金师,巨龟是厚重的灰岩壳,裂缝里藏熔岩。
地图按 16:9 制作,母版 3840×2160,运行底图 2560×1440,逻辑坐标仍是 1280×720。这里有个刻意的约束:**木箱、水面、冰柱、火焰和风车绝对不能烘焙进底图**,必须单独成图——因为它们都是会变化、会消失、会被推动的交互对象。
角色这边做了统一规范:玩家单帧画布 256×256,巨龟 512×512,透明背景,统一支点和光照方向。后续所有动作都沿用同一套参考,不再单独重新设计角色。
顺带说一个反面经验:地图生成出来的第一版构图坐标对不上,我们做了轻微仿射校准和局部纹理修补。**如果底图的池沿和游戏里的碰撞边界对不齐,玩家会立刻感觉到"这块地看起来能走但其实不能"——那种感觉比画得难看更伤。**
## 四、从占位图形到能看的画面
静态美术接进游戏之后,第一件事是解决"谁挡住谁"。
俯视战斗里,角色的绘制顺序不能按数组顺序来,必须**按地面锚点排序**——站在木箱下方的角色应该被木箱挡住下半身,站在上方的则应该盖住木箱。这个改动看起来很小,但它是从"占位图形"到"像一款游戏"的分界线。
同时接入的还有:
- 启动时一次性创建图片句柄,重开时复用,停止时释放(避免重复加载和图集泄漏)
- 融化后的冰柱、烧毁的木箱会从画面消失
- 水面只在"有水"状态绘制,火焰随燃烧/吹旺显示
- 风车拆成固定底座和可旋转转子两层
- 巨龟的完整护甲和破甲后暴露的本体是两张图,不会一直画着完整护甲
还有一个必须处理的问题:**巨龟的状态提示会挡住战斗。** 一开始它是一块纵向面板,实际出图之后发现太大,压住了角色和地面。最后改成 208×68 的横向状态牌,文字和倒计时环分列,头顶放不下就自动移到本体下方——只影响显示,不改世界坐标。
世界上的飘字("护甲过热""滑倒!""石壳重新凝聚…")也做了排队和避让:优先避开角色、存活木箱、火盆、风车和未融化的冰柱;如果候选位置全被占满,就记录一次 fallback,选遮挡最少的位置,而不是假装没有重叠。
## 五、小屏幕上,玩家得先找得到自己
把画面缩到 844×475 之后,问题立刻暴露:玩家角色本身偏小,在暗色石地上快速走位时**很难第一时间找到自己**。
解决办法不是把角色放大(那会改变已确认的比例和判定),而是在角色脚下加了一个低强度的青色椭圆定位标记。它固定在地面锚点上,只表示"我在这里",不表示任何碰撞范围;角色受伤无敌闪烁时它依然可见,死亡时不显示。
顶部瓶栏也做了调整:小屏下字号和数量位数会变化(0 / 1 / 9 / 10 / 100 都要排得下),所以名称和数量改成分开对齐,间距随位数调整。右下角的触屏按钮坐标和命中区域保持原样,没有一起动。
这一轮最典型的返工是教学提示条。它在底部显示操作提示,一开始固定贴在屏幕底部——实际出图之后发现,它正好挡住了下边缘的巨龟。改成在底部/顶部/中间三处候选位置里选一个,避开角色、状态牌和还在显示的死亡贴图,并且按本帧震动后的位置计算。
**移动端最容易被低估的就是这类问题:不是画面不好看,而是玩家在紧张的战斗里找不到自己、读不到状态。**
## 现状与下一步
目前的状态:
- 核心玩法、输入、地图坐标和战斗规则已经稳定,键鼠与触屏双端可操作
- 角色目前仍是静态单姿态加水平镜像,**还没有真正的动作动画**
- 地图外围部分源纹理仍偏软,还在继续修
下一步是把角色升级为真正的序列帧动画:先做玩家的待机、移动、投掷,以及巨龟的移动和喷火,作为第一批样片验证技术管线——锚点、朝向、遮挡、内存复用都跑通之后,再扩充动作。
之后还会继续写:动作接入、环境机关与元素连锁的演出、以及手机实机验收。这几篇会跟着实际进度陆续发出。
如果你试玩之后有反馈,我最想知道的是:**你是第几次才想到把木箱推到火盆旁边?**










