十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cataclysm-DDA 电池与电力系统设计解析:从电压/电流抽象到容量驱动的设备匹配机制

Cataclysm-DDA 电池与电力系统设计解析:从电压/电流抽象到容量驱动的设备匹配机制 Cataclysm-DDA 电池与电力系统设计解析从电压/电流抽象到容量驱动的设备匹配机制【免费下载链接】Cataclysm-DDACataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.项目地址: https://gitcode.com/GitHub_Trending/ca/Cataclysm-DDACataclysm-DDA大灾变黑暗之日是一款回合制末日生存游戏其道具系统覆盖数千种电子设备与工具。本文基于仓库文档 doc/design-balance-lore/batteries_and_electricity.md系统讲解游戏中电池、储能与用电的核心设计决策为何只建模容量而不显式处理电压与电流、如何用少量电池尺寸等级抽象真实世界中纷繁复杂的电池型号、以及新增电动设备时应如何匹配电池与功耗以保证运行时长的真实感。读完本文你将掌握 DDA 电池体系的完整脉络并能在添加新设备时正确选择电池类型、设置功耗数值与BATTERY_*标志。设计总纲一套妥协出来的现实模型文档开篇即点明立场游戏中电池、储能与用电的处理方式是一堆妥协的产物a pile of compromises。作为一款生存模拟游戏DDA 并不追求对物理电路的真实仿真而是追求可玩性、可理解性与表达力之间的平衡。后续所有设计决策——抽象电压电流、压缩电池型号、按运行时长度身功耗——都可以看作这套妥协哲学的落地。这种取向与 DDA 整体以 JSON 驱动内容、以模拟支撑玩法的架构一致电池体系的复杂度被刻意压到最低让内容作者与玩家都能快速推理这块电池能让这个设备撑多久。电压、电流与容量只建模容量不建模物理电学为什么不显式处理电压与电流DDA 明确不显式建模电压voltage与电流current只建模容量capacity。理由是我们不是在设计系统而是在表征现实设备representing them rather than designing systems因此可以合理假定某一类电池天然适合其目标设备。文档给出两个典型例证手持设备用的电池单元被假定足以驱动对应手持设备而现实中某些设备确实需要高于普通电池平均水平的电流。一旦上升到电动汽车级别的电池包游戏中假定汽车级电池包适合汽车而现实中把电池从一辆电动车挪到另一辆几乎是不可能的工程难题。因此游戏刻意绕开了电流上限、电压匹配这类物理约束。文档同时留了一个伏笔未来若想让某些电源不适配特定任务实现方式将是引入类似高放电电源high-draw power source的标签化标注而不是去建模真实的电压/电流限制。容量在代码中的真实载体容量在游戏数据层有直接落点battery是一种弹药类型ammunition_type其显示单位就是kJ。见 data/json/items/ammo_types.json{ type: ammunition_type, id: battery, name: kJ, default: battery }这意味着电池本质上被实现为装填了电量弹药的弹匣MAGAZINE。每块电池的capacity字段以 kJ 为单位声明其总能量而设备TOOL则通过power_draw字段声明功耗例如 data/json/items/tool/lighting.json 中的手电筒类设备功耗从46 mW极省电的灯到5 W高亮灯具不等。运行时长的核心关系由此变得异常直观运行时长 ≈ 电池容量(kJ) / 设备功耗(W)功耗字段在源码中的解析入口位于 src/item_factory.cpp工具型物品通过power_draw字段units::power类型支持 W/mW 等单位后缀声明持续工作的耗电速率src/item_gun_tool_ammo.cpp 则在回合结算时按power_draw从电池扣减电量并把消耗计入载具链路电量统计。这正是只建模容量在运行时的完整闭环没有电压、没有电流只有每回合烧掉多少 kJ。电池表征把几十种型号压缩成四档尺寸等级为什么不做电池与设备严格匹配的玩法现实中电子设备使用五花八门的电池规格AA、AAA、C、D、18650、各种锂电工具包……。文档直言把电池匹配到特定电子设备很麻烦但这种麻烦有趣吗我断言并不有趣。因此游戏不做多型号严格匹配而是把电池抽象成一组接近最小必要数量的尺寸等级覆盖全部设备。与此同时现实中很多设备装多节标准电池例如三节 AAA但装几节电池同样不是有趣细节所以游戏进一步抽象为每个设备的电池仓只容纳一节合适容量的电池不处理多节并联。容量与尺寸为何对应真实外形名称却不沿用为了让玩家/作者推理电池更方便游戏让容量与尺寸尽量与真实电池外形规格form factor挂钩并在 JSON 的//注释中写明对应关系例如medium_battery_cell标注18650但ID、名称与描述刻意不引用真实型号。文档用 LED 小手电举例现实中它可能装三节 AAA但游戏中不会用 3 节 AAA而是一节大约 C/D 电池大小的单电池。若把这块游戏电池直接命名为D cell玩家很可能因为它现实中相对小众而忽略它——但在 DDA 里它其实极其常见。命名与真实规格脱钩是为了避免玩家用现实直觉误导游戏内价值判断。现行电池清单源码级核实文档给出电池清单表格我们可以在 data/json/items/battery.json 中逐一核实其实现并补充重量、体积、可充电性等细节ID现实对应物类型标志能量(kJ)实测capacity重量/体积源码是否可充电light_minus_battery_cell纽扣电池LIR2032/DL2032BATTERY_ULTRA_LIGHT223 g / 1 ml是RECHARGElight_minus_disposable_cell纽扣电池CR2032BATTERY_ULTRA_LIGHT223 g / 1 ml否light_cell_rechargeableAANiMH如 ENERGIZER NH15-2300BATTERY_LIGHT101027 g / 8 ml是light_battery_cellAA锂铁如 ENERGIZER L91BATTERY_LIGHT161615 g / 8 ml否medium_battery_cell18650锂离子BATTERY_MEDIUM565685 g / 17 ml是heavy_battery_cell小型电动工具电池如牧田 18V BL1815NBATTERY_HEAVY259259350 g / 382 ml是heavy_plus_battery_cell大型电动工具电池如牧田 18V BL1850BBATTERY_HEAVY503503680 g / 525 ml是数据来源data/json/items/battery.jsoncapacity单位即 kJ与ammo_type: battery的弹药单位一致。此外该文件还包含文档表格之外的扩展档位heavy_atomic_battery_cell4800 kJ重 1.6 kgBATTERY_HEAVY、不可充电、带放射性与huge_atomic_battery_cell100000 kJ 军用钚燃料电池用于机甲——它们说明这套档位体系是开放可扩展的且原子电池同样复用BATTERY_HEAVY标志印证了以标志归类、以容量区分的设计。五倍能量密度的分级逻辑从上表可以看出清晰的规律每一档电池的能量约为上一档的 5 倍2 → 10/16 → 56 → 259 → 503。这意味着如果某个工具现实中需要 5 节 AA游戏中就表达为一节 medium 电池。这套规律让作者在换算时拥有一个非常顺手的经验法则五节同级小电池 ≈ 上一级一节大电池。匹配电池与设备以总运行时长为核心的实操方法论首要目标让运行时长贴近现实给游戏添加一个电池供电设备时最重要、最需要做对的是整体运行时长overall runtime。具体流程是估算该设备在标准电池下能持续工作多久设定设备的功耗power_draw与它接受的电池类型使两者的组合大致还原该时长。文档特别提醒厂商在宣传电池续航时有强烈的误导动机因此对厂商宣称数据要保持怀疑但只要数据不过分离谱、或影响不大就不必过度纠结精度。以下是精确度把握的取舍准则高功耗、续航短的设备越需要谨慎校准。此类设备对功耗/容量误差极度敏感差之毫厘可能让实际续航偏离目标数倍。低功耗、或现实中设备容量远大于所需容差很宽松随便取一个合理的功耗即可。现实中频繁快速耗尽电量的设备更要避免高估或低估其续航能力既不要让它太耐用也不要让它瞬间没电。多节电池的换算规则现实设备若装多节电池按如下规则折算到单节游戏电池现实用5 节同级电池→ 游戏用高一级电池五倍能量密度规律的直接应用。现实用2 节→ 用同级的一节 light 电池并把功耗调低以匹配预期工作时长2 节 AA 约 20–32 kJ接近一节 light 的 10–16 kJ故降功耗补偿。现实用34 节→ 用高一级的medium 电池并把功耗调高以匹配预期工作时长。文档给出的边界情形处理思路是先用档位定容量再用功耗校准时长。当然也可以反过来寻找一个电池节数更好匹配的现实对应设备——作者拥有最终裁量权一切以手感与真实感为准。设备侧的落地方式MAGAZINE_WELL flag_restriction电池与设备的匹配在 JSON 数据层面通过**弹匣井MAGAZINE_WELL 标志限制flag_restriction**实现。以盖革计数器为例data/json/items/tool/electronics.jsonpocket_data: [ { pocket_type: MAGAZINE_WELL, rigid: true, flag_restriction: [ BATTERY_LIGHT ], default_magazine: light_battery_cell } ], tool_ammo: [ battery ]这段配置的含义是设备有一个刚性弹匣井只接受带BATTERY_LIGHT标志的电池即 light 档默认预装light_battery_cell同时声明tool_ammo: [ battery ]表明它消耗的是电池弹药kJ。与之对称电池侧则通过flags声明自己的档位如BATTERY_MEDIUM并通过pocket_data中的ammo_restriction: { battery: N }声明可容纳的电量data/json/items/battery.json。仓库中大量设备展示了多档兼容写法例如 data/json/items/tool/electronics.json 允许BATTERY_MEDIUM/BATTERY_LIGHT/BATTERY_ULTRA_LIGHT三档通用data/json/items/tool/electronics.json 则兼容全部四档——flag_restriction数组列出的标志越多设备能接受的电池越广这为作者提供了从严格单档到全档通用的弹性空间。功耗设置与运行时的完整闭环把上述机制串起来一个典型电动工具的工作流是设备 JSON 声明power_draw如 data/json/items/tool/lighting.json 中power_draw: 1 W、1200 mW、3 W等。玩家装入符合flag_restriction的电池电池以 kJ 计的capacity成为设备的总能量储备。设备激活后每回合结算按 src/item_gun_tool_ammo.cpp 的逻辑从电池扣减power_draw对应的能量直到电量耗尽。这条链路把只建模容量的设计原则、五倍档位体系和运行时长第一的内容制作准则无缝衔接构成了 DDA 电池系统从设计文档到运行时的完整闭环。面向内容作者的快速决策清单给 DDA 添加新电池供电设备时可按以下清单走完整个流程定档位按设备功耗级别与真实对应物从BATTERY_ULTRA_LIGHT/BATTERY_LIGHT/BATTERY_MEDIUM/BATTERY_HEAVY四档中选档高功耗工业级设备选 heavy微功耗小玩意选 ultra-light。换算容量现实用几节电池1 节 → 直接取对应档位2 节 → 同档 light 降功耗34 节 → 上一档 medium 升功耗5 节 → 直接上一档。设功耗用power_draw校准目标是把容量 ÷ 功耗的续航拉到与现实接近高功耗设备务必反复核对低功耗设备可从宽。接线设备侧加MAGAZINE_WELLflag_restrictiondefault_magazinetool_ammo: [battery]若需要新电池参考 data/json/items/battery.json 的既有条目复制修改并保留NO_SALVAGE/NO_UNLOAD/NO_RELOAD等基础标志与//真实规格注释。验证在游戏中实际开机运行检查续航是否符合预期时长必要时微调power_draw而非更换电池档位。总结Cataclysm-DDA 的电池与电力体系是一套深思熟虑的抽象用容量kJ统一表达电能、用四档尺寸等级压缩电池型号、用标志系统BATTERY_*与弹匣井完成设备匹配、用运行时长第一的准则指导内容制作。它牺牲了电学细节的真实性换来了内容创作与玩家推理上的极低认知负担——而文档 doc/design-balance-lore/batteries_and_electricity.md 所记录的正是这一整套妥协背后为什么这么做的设计哲学。对于想要为 DDA 添加新设备、或想理解其道具模拟深度的开发者来说理解这套电池逻辑就是理解 DDA 内容设计方法论的一把钥匙。【免费下载链接】Cataclysm-DDACataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.项目地址: https://gitcode.com/GitHub_Trending/ca/Cataclysm-DDA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表