系统总览
BlockZ 目前已经不是单一 UI 模组,而是一整套围绕生存携行、战术视角与联机同步构建的系统集合。本页按实际源码结构与玩法表现,对主要模块做分组说明。
DayZ 背包与占格物品系统
这是 BlockZ 最核心的玩法层系统,也是整个模组的视觉和交互中心。
自定义菜单结构
DayZInventoryMenu 负责整个库存布局与交互规则,DayZInventoryScreen 则负责实际渲染。它们共同实现了附近物品区、玩家状态区、库存区、装备区与扩展槽位等布局。
占格逻辑
物品可以按宽高占据多个格位,而不是固定 1x1。占格规则可由项目内置数据和外部网格规则文件共同决定。这直接改变了拾取、交换、摆放与分类整理的策略。
容量由装备决定
背包、背心、衣服和裤子都可以提供不同规模的容量网格;开局口袋数量则由配置控制。这意味着“穿什么”会直接影响可携带资源,而不是只影响外观。
Curios 扩展槽
BlockZ 已把 Curios 的额外槽接入 DayZ 风格 UI,并且支持分组、排序、图标读取与折叠显示。因此整合其他装备模组时,不必强行退回原版界面逻辑。
原理说明
之所以要做占格系统,而不是继续使用原版格子库存,是因为 DayZ 风格体验的本质并不是“更多槽位”,而是空间被离散化管理。这样可以自然引出背包容量、物品尺寸、装备价值和搜刮取舍。
HUD、体力与屏幕状态反馈
这一部分决定了玩家平时对自身状态的感知方式。
自定义 HUD
HUD 会展示生命值、健康值、体力、噪音、感染与伤势图标,并按不同系统开关与状态值动态变化。项目还区分普通 UI 与聊天界面下的显示条件,减少视觉重叠。
体力系统
体力值会在疾跑、跳跃、涉水等行为中消耗,并在安全状态下恢复。这个机制让移动不再是无成本行为,也让战斗撤离、绕点与长途奔跑出现明确节奏差异。
低健康屏幕效果
当健康值降低时,屏幕会出现灰黑、发白或暗角等视觉压力效果。它的目的不是单纯装饰,而是让玩家在没有打开菜单的情况下也能直观感知状态恶化。
噪音与姿态反馈
HUD 还会根据移动方式显示不同噪音等级,配合潜行、普通移动和疾跑三种节奏,帮助你理解当前生存风险。
医疗、伤害与状态系统
BlockZ 把传统“吃食物回血”式反馈拆分为多个更细的状态层。
- 流血:玩家在受伤后可能进入流血状态,需要用绷带或破布进行止血。它强调战斗后处理与资源消耗,而不是只关注瞬时伤害。
- 骨折:高处跌落等情况可能触发骨折,需要夹板等护理物品进行处理。骨折强化了地形风险与移动决策的意义。
- 止痛:吗啡和可待因等物品为临时性状态处理提供了工具,让医疗物资不只是回血道具,而是战术资源。
- 感染与健康分层:HUD 与客户端状态结构已经为感染、健康值与生命值分层展示提供支持。
设计原理
护理系统的价值在于把“受伤”从单次数值变化,转化为一个需要后续处理的持续事件。这样资源循环会更像生存游戏,而不是仅靠原版回复机制覆盖一切。
探头、趴下、相机与第一人称表现
BlockZ 的视觉与操控层,是项目区别于普通物品模组的重要部分。
- 左右探头:影响相机侧倾、横向偏移与动画平滑,适合掩体观察与角落预瞄。
- 趴下系统:由独立状态管理器与网络包负责同步,同时影响玩家姿态、身体渲染与部分移动表现。
- 真实第一人称身体:使用接近原版渲染链的方式实现,更利于和手臂、手持物层以及外部模组协同。
- 越肩相机与镜头摇晃:第三人称越肩镜头、自定义步态镜头摇晃和注视缩放共同塑造更偏战术视角的手感。
尸体、搜刮与容器交互
搜刮体验不是单点功能,而是由尸体、容器与 UI 接管策略共同构成。
- 玩家尸体:玩家死亡后会生成独立尸体实体,存放掉落物,并支持通过 DayZ 风格界面进行搜刮交互。
- 丧尸尸体:丧尸死亡后生成独立尸体实体,并拥有专门的装备槽 + 战利品布局。
- 容器 UI 接管策略:项目不会盲目接管所有容器,而是对白名单菜单做转换,对模组容器和插件菜单尽量保留原逻辑。
- 容器区占格支持:目前容器区也能接入占格逻辑,因此搜刮时的体验与玩家背包区更加统一。
DayZ 丧尸系统
BlockZ 已为自定义丧尸提供独立配置项,而不是简单复用原版僵尸。
- 感知层:潜行、步行、移动、疾跑和近距离接触分别使用不同发现距离,并带有索敌间隔、记忆时间与呼叫同伴机制。
- 战斗层:可独立配置生命、移动速度、攻击、护甲、击退抗性与附加流血概率。
- 状态层:支持尸体停留时间与夜晚强化倍率等参数。
- 表现层:使用 GeckoLib 渲染链来承载自定义丧尸与尸体实体的表现。
服务端同步与状态权威
这是联机稳定性的关键,也是为什么很多系统要做专门网络包的原因。
- 配置同步:多个配置项会在登录或重载时下发到客户端,保证联机时以服务端配置为准,而不是依赖每个玩家本地 TOML 一致。
- 状态同步:趴下、探头、背包、UI 开关、体力与其他关键状态都有对应网络包与客户端缓存结构,避免视觉与逻辑不同步。
为什么必须这样做?
因为 BlockZ 的很多系统不只是客户端特效,而是会影响容量、姿态、交互、相机与判定。如果让客户端本地猜测这些数据,联机下很容易出现 UI 看起来能放、服务端实际上不能放,或姿态显示和服务器判定不一致的问题。