跳到主要内容

WebShopX 算法 详细手册

文档性质:深度手册


🏗️ 第一章:核心架构与设计哲学

动态价格算法、拍卖机制算法让 WebShopX 从传统的“静态商店”转向一个基于**热度反馈机制(Demand-Driven Feedback)**驱动的自适应经济引擎。系统的核心目标是通过算法自动调节物价,利用数学模型对冲服务器的通货膨胀。

1.1 核心防护机制

  • 🛡️ 钳制函数 (Clamping):所有动态价格在经过复杂公式计算后,最终都会被收敛在服主设定的绝对安全区间内: Pfinal=max(Pmin,min(Pcalc,Pmax))P_{\text{final}} = \max(P_{\min}, \min(P_{\text{calc}}, P_{\max})) 这意味着无论算法如何暴走,物价永远不会击穿 PmaxP_{\max}(最高限价)和 PminP_{\min}(底价)。
  • 📜 事务溯源:底层的 MarketService 与持久化层深度绑定,每一笔订单、每一次价格演变均有详细日志记录,支持发生挤兑时的经济复盘。
  • 🔒 乐观锁并发:采用基于 version 字段的数据库乐观锁控制,在高频交易(如全服抢购)场景下,严格防止“超卖”和“读写竞争”产生的经济漏洞。

🧪 第二章:动态价格算法全解析 (7大基石模型)

系统通过监测需求热度 (DtD_t),利用以下数学模型实时计算成交价。每一种算法都对应着不同的经济调节目的。

📈 1. 线性需求 (LINEAR_DEMAND_V1)

最经典、最直观的供需模型。买得越多,涨得越稳。

  • 数学公式Pt=P0+kDtP_t = P_0 + k \cdot D_t
  • 参数解析kk 为价格斜率。若 k=0.5k=0.5,每增加 1 点热度,价格上涨 0.5。
  • 经济学应用:适用于**基础矿物(铁锭、煤炭)**等产出稳定、消耗极大的硬通货。能有效设定服务器的基础物价基准。

📉 2. 边际递减 (DIMINISHING_RETURN_V1)

初期涨价明显,但随着热度不断攀升,涨价幅度会遭到强力压制,最终无限趋近于一个上限。

  • 数学公式Pt=P0+aDt1+bDtP_t = P_0 + a \cdot \frac{D_t}{1 + bD_t}
  • 参数解析:极限溢价为 a/ba/b。若 a=10,b=0.1a=10, b=0.1,则无论买多少,最高只会比原价贵 100。
  • 经济学应用:适用于大宗建筑方块(泥土、石砖、混凝土)。保护建筑党玩家,防止他们因为购买几千个方块而破产。

🌊 3. 对数平滑 (LOG_SMOOTH_V1)

对数字变化极度脱敏的模型,曲线非常圆润。

  • 数学公式Pt=P0(1+αln(1+Dt))P_t = P_0 \cdot (1 + \alpha \ln(1 + D_t))
  • 参数解析α\alpha 控制平滑度。在热度从 100 涨到 1000 的过程中,价格可能只上涨了不到一倍。
  • 经济学应用:适用于日常高频消耗品(火把、面包、箭矢)。玩家零碎购买时,体感上几乎察觉不到涨价,体验极佳。

🚀 4. 指数防护 (EXPONENTIAL_DEFENSE_V1)

极其暴力的反垄断防御塔。热度微小的提升会导致价格呈几何倍数核爆级上涨。

  • 数学公式Pt=P0eβDtP_t = P_0 \cdot e^{\beta D_t}
  • 参数解析β\beta 为指数倍率。通常设置在 0.01 到 0.05 之间。
  • 经济学应用:适用于战略级物资(下界合金锭、信标、极品附魔书)。允许普通玩家买一两个,但若土豪企图一次性买 50 个清空库存,天文数字的价格会瞬间抽干他的钱包。强烈建议严格配置 PmaxP_{\max}

🚧 5. 阈值分段 (THRESHOLD_STEP_V1)

不触碰红线就相安无事,一旦越界重拳出击。

  • 数学公式
    • DtTD_t \le T 时:Pt=P0+k1DtP_t = P_0 + k_1 D_t
    • Dt>TD_t > T 时:Pt=P0+k1T+k2(DtT)P_t = P_0 + k_1 T + k_2(D_t - T) (其中 k2k1k_2 \gg k_1
  • 参数解析TT 为安全阈值。
  • 经济学应用:适用于功能性道具(潜影壳、经验瓶、刷怪蛋)。精准区分“正常玩家买来用”和“工作室大规模囤货倒卖”。

⚖️ 6. 弹性模型 (ELASTICITY_V1)

引入经济学中的“价格弹性”概念。

  • 数学公式Pt=P0(Dt+εD0+ε)ηP_t = P_0 \cdot (\frac{D_t + \varepsilon}{D_0 + \varepsilon})^{\eta}
  • 参数解析η\eta(Eta)为弹性指数。η<1\eta < 1 市场表现迟钝(抗跌抗涨),η>1\eta > 1 市场极度敏感(暴涨暴跌)。
  • 经济学应用:适用于特殊代币、绿宝石。服主可以通过调整 η\eta 直接操控市场的神经敏感度。

🔥 7. 恐慌抢购 (PANIC_BUYING_V1)

模拟真实世界中的“羊群效应”与挤兑危机。

  • 数学公式Pt=P0+kDt+γmax(0,DtT)2P_t = P_0 + kD_t + \gamma \cdot \max(0, D_t - T)^2
  • 参数解析:引入了二次项 γ\gamma。突破阈值 TT 后,价格进入抛物线加速上涨轨道。
  • 经济学应用:适用于绝版头颅、活动限量盲盒。用极端的涨幅引爆玩家的抢购心理。

🔨 第三章:拍卖机制算法全解析 (4大模式)

📢 1. 英式公开拍卖 (English Auction)

  • 机制运行:经典的“价高者得”。每一次有效出价都会成为新的基准价
  • 反制狙击 (Anti-Snipe):系统内置软性延时机制。如果在结束前最后 NN 秒内有人出价,倒计时会自动延长 MM 秒,彻底消灭“在最后一秒卡点出价”的玩法。
  • 资产冻结:玩家出价瞬间,对应钱包资金即被强锁;一旦被后来者超越,AsyncRefundTask 会在毫秒级内将资金解冻退回。

📉 2. 荷兰减价拍卖 (Dutch Auction)

  • 机制运行:从一个不可理喻的天价起步,价格随时间流逝呈阶梯式下跌(例如每小时降价 5%)。
  • 心理博弈:全服玩家同时盯着一个物品,先点击“买断”的人瞬间成交。等得越久越便宜,但也越容易被截胡。
  • 应用场景:服务器官方清仓大甩卖、高价值地皮起拍。

📦 3. 密封第二价格拍卖 (Vickrey Auction)

  • 机制运行:暗拍模式。在开标前,所有人的出价都被加密隐藏。截止后,出价最高的人获胜,但他只需要支付“第二高的出价金额”
  • 经济学原理:诺贝尔经济学奖级的设计。这在博弈论中消除了“赢家诅咒”,在数学上证明了**“玩家报出自己内心真实的最高底线”是唯一的绝对优势策略(Dominant Strategy)**。无需互相揣测,回归物品真实价值。

🕯️ 4. 蜡烛随机拍卖 (Candle Auction)

  • 机制运行:流程类似英式拍卖,但真实的流拍结束点是一个隐藏的随机数
  • 应用特色:表面倒计时是晚上 8:00 结束,但系统可能在 7:55 到 8:00 之间的任意一毫秒悄悄落锤判定。玩家被迫尽早给出有竞争力的价格,而不是苟到最后。

🔧 第四章:服主深度调参实战指南

4.1 价格热度的双轨驱动

动态价格的引擎不仅受买入影响,还受时间影响:

  1. 正向反馈(买入/事件驱动):玩家每次下单,系统根据购买数量向该商品池注入热度(Demand)。
  2. 负向反馈(时间驱动/衰减):系统内部运行着一个 Cron 任务,以固定周期(如每 6 小时)执行衰减衰减:Dnew=Dold(1DecayRate)D_{\text{new}} = D_{\text{old}} \cdot (1 - \text{DecayRate})

4.2 调参安全红线 (Safety Protocols)

  • 灰度测试:不要一上来就把全服硬通货改成动态价格。先用“腐肉”、“骨头”这种边缘物品开辟一个试验田,观察玩家行为和曲线 3-5 天后再全面推广。
  • 热更新免覆盖:你可以随时修改 web/docs/ 目录下的 .md 说明文档。插件检测到文件被修改后,会触发保护机制,不会在重启时用默认文档覆盖你的修改。

🐛 第五章:技术故障排查与工单支持

Q1: 为什么网页端看到的价格,点购买时提示价格已变化? A: 这是正常的。在高频动态市场中,你浏览页面和发起请求之间存在时间差。如果有别人抢先买了一份,热度更新会导致最新价格高于你看到的缓存价。这也是 version 乐观锁在起保护作用。

Q2: 玩家反馈拍卖流拍后,钱卡在冻结状态没有退回? A: 大概率是服务器遭遇了瞬时的 TPS 骤降或内存溢出(OOM),导致异步退款任务(AsyncRefundTask)被挂起。 解决方案:请服主在后台查看日志定位报错,然后可手动调用管理员指令或重启插件同步状态。


📩 核心技术支持与 Bug 追踪

WebShopX 正在逐步完善中。如果您在部署过程中遇到任何 Bug,或希望加入到代码协作中,请务必联系我们!

👉 请至 GitHub 官方仓库提交 Issue: WebShopX-Issues (点击进入反馈中心)