【游戏功能】
有玩家投诉自己的伤害"忽高忽低像抽奖"——同样的刀,一会儿五十四一会儿二十七,气得差点砸键盘。复盘录像才发现规律:他的刀气十息一个循环,涨潮的三秒里五十四,退潮的三秒里二十七,一轮一轮,周而复始。潮汐的真相就藏在投诉里:刀有涨落,十息一个浪头。今天拆潮汐,看"循环系"怎么把出刀的时机,演成一场看浪下钩的手艺。
一、涨潮、平潮、退潮三段
潮汐的循环三段。涨潮段:刀气泛起青蓝的潮光,三秒里每一刀都加价五成——涨潮段是全技能的黄金档:三秒、够出两到三刀,满价的账全靠这三秒挣,浪头上的刀光都比平时亮一档。平潮段:潮光褪成素白,两秒的原价期——平潮段是全技能的喘口:这两秒的刀不亏不赚,该走位走位、该续节奏续节奏,等下一个浪头。退潮段:刀光发灰,三秒里每一刀只值四分之三——退潮段是全技能的枯水期:会读的人在这三秒里收手,把刀留在鞘里养着,不会读的人一刀刀往外刨,刨的都是亏本账。三段的核心是"浪头即行情":刀的价码不由你定,由潮水定,你能做的只有看表。
完整演示在这,默认自动循环:
fx-tideloop
二、幂尔框架实现:行情是一张十秒一循环的表
潮汐的账本只有一个自增的时间——
local TideLoop = {}
local CYCLE = { 3, 2, 3 } -- 涨三、平二、退三
local MULT = { 1.5, 1.0, 0.75 }
local NAMES = { "涨潮", "平潮", "退潮" }
local tide = { t = 0 }
local function phaseOf()
local a = tide.t % 8
if a < 3 then return 1 elseif a < 5 then return 2 else return 3 end
end
function SL:OnTick(dt)
tide.t = tide.t + dt -- 潮水自己走,谁也拦不住
end
function SL:Swing()
local ph = phaseOf()
local dmg = math.floor(36 * MULT[ph])
SL:PlayActorAct("self", "attack")
SL:ScheduleDelay(0.17, function()
SL:HitActor("target", dmg)
SL:ShowTipAbove("target", "-" .. dmg
.. (ph ~= 2 and (" " .. NAMES[ph]) or ""))
end)
if ph == 1 then
SL:ShowTipAbove("self", "浪头上——满价")
elseif ph == 3 then
SL:ShowTipAbove("self", "退潮刀——亏本")
end
end
return TideLoop
潮水自己走是全技能的天条:OnTick 只加不减、不受任何技能影响——行情不由人,玩家能做的只有把自己出刀的表,往浪头的表上对。
三、潮色的演出规格
潮色是全技能的行情板:头顶一条八秒的循环带,三段底色涨蓝、平灰白、退深灰,一根指针随时间扫过去——指针在哪儿,行情就在哪儿,玩家的眼睛不用记表。涨潮的潮光贴着刀走:青蓝的细流从肩头淌到刀尖,人一抬手潮光就淌过去——潮光要"流"不要"闪",流的是水性,闪的是警报。三档的数字三副面孔:涨潮的五十四蓝字大一号、平潮的三十六素字原样、退潮的二十七灰字缩一号——亏本的账要写得小,涨价的账要写得亮。退潮期的提示是全技能的良心:第一刀退潮刀落账时,头顶冒一枚"退潮刀——亏本"的小字——第一刀提醒,之后全凭自觉,行情板天天挂着,不惯着谁。
四、定价与三条潮规
循环系的定价一句话:涨三平二退三、加五成减四分之一——一个八秒循环里赚的亏的相抵,纯赚的是那三秒里多出的刀数。三条潮规:其一,潮不认急——任何加速循环的手段都不存在,浪头有自己的班表,拔苗的脚本全在退潮期撞墙;其二,出刀不挪潮——涨潮期连出五刀,潮照样三秒就退,浪头不奖励贪,只奖励踩点;其三,潮色透明——行情板必须常驻,藏表的潮汐是抽签不是潮汐,循环系的脸面就在明码上。与火候对照着看:同是"刀的行情",火候看累计——交手越久越旺,是一条只涨不跌的单行道;潮汐看周期——涨完必退、退完必涨,是一条八秒一圈的环线,节奏系的两个门派在"熬直线"还是"读环线"上分了家。
五、循环系的看表学:把出刀排进浪头的班表
潮汐真正教的是"看表出刀"这门手艺:退潮期收手是最反直觉的动作——刀就在手里、怪就在眼前,凭什么不砍?可账本上写得明白:退潮的三刀不如平潮的一刀,收手的三秒是在攒下一波浪头的本钱。老玩家打到后来,手指会自己跟着指针走:指针扫进蓝段的那一瞬,出刀的频率自然提起来——潮汐练的不是反应,是把人的节奏并进天地的节奏。对观战者,循环带是最友好的战况板:指针进蓝段,所有人都知道接下来三秒有大事。工程收尾记一笔:指针扫过段位边界时要"哒"一声轻响——耳朵接手了报时,眼睛就腾出来盯怪,看表的功夫才不耽误打架。最后留给数值组的一句话:五成对四分之一,八秒一圈账面打平——循环系的收益全在"踩点率"里,会等的玩家白拿五成,不会等的玩家全程亏四分之一,这门功夫的公平,就是把不会看表的人淘汰出局。
潮汐还是全队的报时器:涨潮一开,道士的符跟上、战士的爆发跟上,全队的爆发窗口都往这三秒里挤——一个人的浪头,全队的汛期。会带队的会喊潮,"蓝了"两个字一出,队伍的刀齐刷刷往一个点砸;不会带的队各打各的表,浪头来了没人踩,白白看着潮水退回去。
写完再留一句给做循环系的同学:循环最容易做成"一个随机波动",而它本该是一张挂在天上的班表——带要常驻、指针要扫、边界要响,行情明码了,踩点才叫手艺。
补一个演示彩蛋位:涨潮的头一秒,角色的影子会先泛蓝——影子比刀先知道涨潮,眼尖的玩家盯着地上,比盯头顶的表还快半拍。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版的炮台索敌逻辑有个隐蔽报错:炮台永远打同一个怪——即使那只怪已经死了,索敌的游标也不挪窝。追到底索敌的游…
【语法算法】 先抛一个坑:打不完的火系怪怎么办?火抗怪火打不动,换冰系技能要切装备要换面板——切完黄花菜都凉了。元素转换的答…
【语法算法】 上个月的事故复盘会上有个数字被念了三遍:四成——策划写的是"同伴陪疼四成",代码落下去成了"陪疼四十点",两只…
【语法算法】 单行代码拆解:弹射初速=-420——弹射的全部动力就这一行的负初速。负号朝上、四百二十是弹射的初速大小——踩上…
【语法算法】 上一版的减速类模块全按"乘以零点五"来写,帧率无关的版本照搬了这套写法——结果高帧率机上减速效果好,低帧率机上…
【语法算法】 先抛一个坑:怎么把散在四处的怪聚到一起打?逐个拉是笨办法,一个范围技又只能打一片——引力球的答案是一个会动的吸…