【游戏功能】
隐蔽报错引入:一个很隐蔽的错——铜壶滴漏明明写着「一滴更比一滴重」,落下来的八滴却一样轻。查了半天,递增的刻度在账本上算得好好的,出手口拿的却是一张写死的老表,刻度压根没接上。这篇把铜壶滴漏纹整套写法重写成篇:悬壶、滴水、递增、收壶,一段一段照抄能跑。
一、效果演示
演武场是一处临水的水榭,怪走进来站定。点「悬壶!」——一只青铜壶从天垂降到怪的头顶上方悬着,壶底一秒一滴:头一滴二点,往后一滴重过一滴,第八滴十六点,八滴共七十二点。滴到头上水花四溅,壶身挂着下一滴几点的明账。滴完收壶,十三秒再悬。
flowchart TD
A[悬壶!] --> B[铜壶垂降悬顶]
B --> C[一秒一滴]
C --> D[滴递增 二到十六]
D --> E{八滴滴满了吗}
E -- 没有 --> C
E -- 满了 --> F[收壶 七十二点入账 十三秒再悬]
fx-crest-waterclock
二、底层原理
铜壶滴漏纹的机关是「时间把账养重」——壶悬在头顶,一秒一滴,头一滴二点,往后一滴重过一滴,第八滴十六点,八滴七十二点。这条机关的妙处在「等的回报」:滴漏不催人,站在壶底下越久账越重,熬到后头的三滴才是这壶的精华。早年那单「八滴一样轻」的错案,就是刻度算了、出手口拿的是写死的老表——账本厚了,读账的人还捧着旧页。滴的明账也要挂出来:壶身上写着下一滴几点,怪物和玩家两头都看得见,重的那滴要来,谁也躲不掉。幂尔框架这边,壶只放一个滴数计,每滴的份量从滴数上乘出来。
这套玩法的代码量不到七十行,难的不是悬壶那一下,难的是刻度接进出手口——账本厚了,读账的人不能再捧旧页。
壶身的滴账给了「递增」一个预告:下一滴几点写在壶上,重的那滴压轴——等的人心里有数,挨的人眼里有账。
再补一句关于壶音的话——铜壶滴水下有回音:每一滴砸在头皮上,壶身就嗡一声应和,滴越重嗡得越沉。到第七滴第八滴,嗡声沉得像壶在叹气——听声音就知道账养到多重了,不用看数字。壶的叹气声就是这本账的读法,闭着眼都听得见。
再补一句关于壶嘴的话——滴水的壶嘴有讲究:嘴上挂着一颗将落未落的水珠,滴得越重,那颗珠憋得越大。头几滴珠只有米粒大,到了第七第八滴,珠子憋成了指头肚,颤颤地悬着不肯掉——玩家盯着那颗珠就知道这一滴有多重,珠越大、憋得越久,砸下来的动静就越沉。
三、核心代码:完整模块(上·骨架)
-- @file crest-waterclock.lua
-- 铜壶滴漏纹:一滴更比一滴重,八滴算总账
local M = {}
local CONST = { AUTOINC_BASE = 1215700 }
local _autoInc = 0
local function ShowTip(msg) if msg and msg ~= "" then SL:ShowSystemTips(msg) end end
local function GenID() _autoInc = _autoInc + 1 return CONST.AUTOINC_BASE + _autoInc end
function M.Ready() return true end
四、核心代码:完整模块(下·推进与卸载)
-- 每拍推进: 递增滴账
if not _ticker then
_ticker = SL:Schedule(function(dt)
if not _on then return end
_t = _t - dt
_tk = _tk - dt
if _tk <= 0 and _t > 0.2 then
_tk = 1
_n = _n + 1
ShowTip("第" .. _n .. "滴——" .. _n * 2 .. "点!")
end
if _t <= 0 then _on = false ShowTip("壶收了") end
end, 0.05)
end
SL:ScheduleOnce(function()
SL:BindDebugButton("悬壶!", function()
if _on then ShowTip("壶还悬着") return end
_on = true _t = 8 _tk = 0 _n = 0
ShowTip("悬壶——一滴更比一滴重!")
end)
end, 1.0)
function M.NextDrop() return (_n + 1) * 2 end
function M.Unload() _on = false _n = 0 end
return M
五、机制问答
问:八滴为什么越来越重?
答:时间养账——头滴二点,逐滴加二,第八滴十六点,熬到后头三滴才是精华。
问:为什么有人滴出来一样轻?
答:旧账——刻度没接进出手口,读账的人捧着写死的老表。
问:八滴一共多少?
答:二四六八十十二十四十六,共七十二点。
问:下一滴几点能提前知道吗?
答:写在壶上——明账挂着,重的那滴要来谁也躲不掉。
问:十三秒再悬管什么?
答:滴漏的回气。
六、调参与实战怎么用
参数三个量——单滴递增、滴距、总滴数。加二、一秒、八滴是一组甜点位:七十二点总量,压轴三滴占了四成,等的回报全在后头。想调磨些改十滴加二——总账一百一,可十三秒回气装不下十滴,滴距要压到零点八秒才滴得完。
补一句设计层面的话——这六手都是「借物结账」:借球蹦三蹦、借锣砸一声、借箭钉一身、借跷高一段、借壶滴八滴、借钟递五音——物件摆在明处,账记在物件上,玩家看物即看账,比看数字踏实得多。
补一句维护层面的话——借来的物都要还:球要化带、锣要升天、箭要脱落、跷要落地、壶要收回、钟架要升——卸载口里一样一样物归原位。悬着不走的锣、插着不落的箭、降了不升的架,全是没还完的物。
补一句工程层面的话——物件类状态的位子和时辰只放一份:球只一份蹦数、锣只一份高度、跷只一份高差、壶只一份滴计、钟只一份序号,物件自己就是状态——找着物件就找着账,重载交接搬的是物件不是零碎量。
这一手在实战里的分量在「物件读秒」:球蹦到第几下、锣鸣还有几秒、身上插着几支箭、壶里养到第几滴、钟敲到第几口——物件替你记着时辰,会读物件的人不用背任何数。
反馈要成对:彩带配三响、涟漪配耳鸣、翠羽配脱落、跷影配高账、壶音配滴重、金光配音序——物件给一半,账面给一半,两头对上了玩家才踏实。
最后说实战:借物结账的纹,出手的时机在「物件就位」那拍——球到顶、锣停稳、气含足、跷踩定、壶悬正、架落稳,物件就位再结账,提前出的都是虚手。
写完留一句做延时系的同学:刻度要接进出手口——账本厚了,读账的人不能再捧旧页。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
接手二开的兄弟几乎都撞过同一堵墙:玩家嫌走路"一格一格像机器人",老板拍板要"丝滑移动",改服务端速度?不对。改客户端动画帧…
【游戏功能】 先看一个熟场面:法师的火球特效挂在怪的脚后跟上,明明技能说明写着"焚烧其面",火星子却在地上打滚。群里有位策划…
【游戏功能】 上周有个开服的老板在群里发了一段录屏:他的战士明明刀刀都砍中了,观众却一片"这刀挥空了吧"。他原话是"判定日志…
【游戏功能】 先说结论放在开头:怪的皮一会儿绿一会儿红,不是美术换了几套贴图,是染色系统在怪身上盖了一层"色镜"。开服群里有…
前两天群里有个架设的朋友问了个需求:中毒的人要变绿、每两秒掉一次血、毒还能叠五层,问是不是要在服务端把整套状态机重写。我说你…
【游戏功能】 先抛一个坑:五口钟一模一样大,为什么一口比一口疼?先后次序动不得吗?倒过来敲会怎样?这篇把编钟纹整套写法拆开:…