Realistic_Stamina_System

by ViVi141

3.12.0

## Release draft — RSS v3.12.0 (2026-02-09) ✅

### Short headline

**Realistic Stamina System (RSS) v3.12.0** — Adds environment temperature model, improves indoor detection, introduces config sync & server‑authoritative config, and smooths networked speed updates. 🔧

---

## English

**v3.12.0 — 2026-02-09**

What’s new

* ✅ Environment temperature physics model (step model, short/longwave + cloud corrections, sun/moon inference)
* ✅ Improved indoor detection (upward raycast + horizontal enclosure checks). 
* ✅ Config change sync pipeline & server-authoritative config (listeners, detection, sync, backup/repair).
* ✅ Network validation & smoothing — client reports stamina/encumbrance; server validates and issues speed multiplier (handles reconnect).
* ✅ Log throttling utility (unified Debug/Verbose throttling). `
* 🔁 Changes: Sprint drain default → **3.5** (configurable); encumbrance constraints and preset refresh; body weight included in drain input.

Important notes

* ⚠️ **Server‑authoritative config:** clients no longer write local JSON; server writes disk and performs backups/repairs. Server admins should ensure the config manager runs and that backups are accessible.
* The sprint drain default changed to 3.5 — check your server preset if you depend on sprint tuning.
---
## 中文
---

**v3.12.0 — 2026-02-09**

主要更新

* ✅ 新增​**环境温度物理模型**​(温度步进、短波/长波+云量修正、日出/日落与月相推断)。
* ✅ ​**室内检测增强**​:增加向上射线与水平封闭检测,减少开放屋顶/天窗误判。`
* ✅ ​**配置变更同步链路 & 服务器权威配置**​:监听/变更检测、全量同步、服务器写盘并增加备份与修复流程
* ✅ ​**网络校验与平滑**​:客户端上报体力/负重,服务器权威校验并下发速度倍率(含重连延迟同步)。
* ✅ ​**日志节流工具**​(统一 Debug/Verbose 节流)。
* 🔁 变更:冲刺消耗默认改为 ​**3.5**​(可配置);负重约束/预设刷新;体重参与消耗输入等。

重要提示

* ⚠️ ​**客户端不再写入本地 JSON**​,避免覆盖服务器配置;请注意服务器端配置管理与备份流程。
* 若依赖冲刺消耗相关设置,请核查或同步配置。
Game Version
1.6.0.119
Created
Mon, 09 Feb 2026 10:03:31 GMT
Last Modified
Mon, 09 Feb 2026 10:03:48 GMT

3.11.1

## [3.11.1] - 2026-02-02

This version is an enhanced and corrected version of the configuration system from 3.11.0.

### 🔧 Configuration Fixes

- **Fixed JSON configuration being forcibly overwritten** - UI settings such as `m_bHintDisplayEnabled` and `m_bDebugLogEnabled` modified by users via JSON are no longer overwritten by `EnsureDefaultValues()`.

- **Fixed ValidateSettings being too aggressive** - When a single parameter goes out of bounds, `FixInvalidSettings()` is now used to clamp only the out-of-bounds field, instead of clearing the entire configuration.

- **Fixed Custom preset case sensitivity** - Variants such as "custom" / "CUSTOM" are now correctly recognized as Custom mode.

### ⚙️ Configuration and Default Values

- **HUD switch is off by default** - The default value of `m_bHintDisplayEnabled` is now false. To avoid disrupting existing settings: If you have previously used this module and generated a JSON configuration file, the HUD will function normally according to the previous settings; users downloading this module for the first time will have the HUD disabled by default. Workbench mode is still forcibly enabled for debugging.

- **Configuration Field Readability Optimization** - Extracted magic numbers as constants, simplified attribute descriptions, and standardized grouping and formatting.

## [3.11.1] - 2026-02-02

本版本为 3.11.0 的配置系统增强与修正版本。

### 🔧 配置修复

- **修复 JSON 配置被强制覆盖** - 用户通过 JSON 修改的 `m_bHintDisplayEnabled`、`m_bDebugLogEnabled` 等 UI 设置不再被 `EnsureDefaultValues()` 覆盖
- **修复 ValidateSettings 过于激进** - 单个参数越界时改为 `FixInvalidSettings()` 仅 clamp 越界字段,不再清空全部配置
- **修复 Custom 预设大小写敏感** - "custom" / "CUSTOM" 等变体能正确识别为 Custom 模式

### ⚙️ 配置与默认值

- **HUD 开关默认关闭** - `m_bHintDisplayEnabled` 默认值改为 false。为不破坏已有设置:若你曾使用过该模组并已生成 JSON 配置文件,HUD 会按之前的设置正常工作;首次下载该模组的用户则默认关闭 HUD。工作台模式仍强制开启以便调试。
- **配置字段可读性优化** - 提取 magic number 为常量,精简 Attribute 描述,统一分组与格式
Game Version
1.6.0.119
Created
Mon, 02 Feb 2026 03:41:20 GMT
Last Modified
Mon, 02 Feb 2026 03:41:38 GMT

3.11.0

[3.11.0] - 2026-01-30
Core Improvements
Stamina System: Faster response and smoother start-up; fixed high-frequency monitoring and slope calculation; indoor scenes now ignore slope; refined metabolic and breath recovery logic; switched to native velocity calculation.
Load System: Real-time weight cache update on inventory change; fixed missing weapon weight inclusion for accurate total load.
Configuration: Replaced hardcoded constants with dynamic config management; resolved C/Python constant mismatch; updated GIVONI_CONSTANT to 0.6; tuned parameters for diverse motion models.
Toolchain Enhancements
Unified optimization pipeline rss_super_pipeline.py with multi-objective optimization (realism/playability/stability), default 500 trials.
Digital twin simulator rss_digital_twin_fix.py aligned with game logic, supporting calibration and optimization workflows.
Added calibration scripts (3.5km run, recovery time), JSON embedding/validation tools; deprecated legacy scripts, merged optimizer logic into main pipeline.
Project Maintenance
Removed generated images, obsolete configs, and redundant files to reduce repo size.
Restructured Tools directory for clarity: core pipeline, simulation, and calibration tools now well-separated.
Updated documentation covering tool usage, stamina/digital twin computation logic, and troubleshooting.
Recommended Presets
TacticalAction ⭐: Best balance (playability burden 422.8), recommended for general use.
EliteStandard: High realism (realism loss 0.1815).
StandardMilsim: Conservative and stable, easy to adjust.

[3.11.0] - 2026-01-30
核心优化
体力系统:提升响应速度与起步体验;修复高频监听与坡度计算问题;室内场景自动忽略坡度;优化代谢与呼吸机制;统一采用原生速度计算。
负重系统:库存变更实时更新负重;修复武器重量未计入问题,提升计算准确性。
配置管理:移除硬编码常量,全面迁移至动态配置;修复 C/Python 常量不一致问题;调整 GIVONI_CONSTANT 为 0.6;优化参数适配多运动模型。
工具链升级
主管道 rss_super_pipeline.py 集成多目标优化(拟真度/可玩性/稳定性),默认 500 次试验。
数字孪生仿真器 rss_digital_twin_fix.py 与游戏逻辑对齐,支撑校准与优化。
新增校准脚本(3.5km 跑步、恢复时间)、JSON 嵌入与校验工具;移除过时脚本,优化器逻辑统一归入主流程。
项目维护
清理生成图表、旧配置及冗余文件,显著减小仓库体积。
重构 Tools 目录结构,职责清晰:核心管道、仿真、校准工具分层明确。
更新中文文档,涵盖工具使用、体力/数字孪生计算逻辑及故障排查。
推荐预设
TacticalAction ⭐:平衡性最佳(可玩性负担 422.8),推荐日常使用。
EliteStandard:高拟真度(拟真损失 0.1815)。
StandardMilsim:保守稳定,易于调整。
Game Version
1.6.0.119
Created
Fri, 30 Jan 2026 14:58:42 GMT
Last Modified
Fri, 30 Jan 2026 14:59:03 GMT

3.10.0

feat: Optimized stamina system core logic and updated configuration parameters (v3.10.0)
- Enhanced the critical condition breathing protection mechanism to prevent deadlocks at 0 stamina.
- Improved weight-based speed penalty calculation, using a power function instead of linear calculation.
- Increased stamina monitoring accuracy to 60Hz, synchronized with the server.
- Added a function to detect heavy objects being held, affecting stamina consumption (interface reserved, not yet implemented).
- Cached frequently used components to improve performance.
- Refactored the stamina metabolism algorithm, using net value calculation.
- Updated the optimized configuration parameter file.
Additional notes: This modification significantly enhances various abilities in a lightweight state, including reduced consumption speed and increased movement speed. I'm not sure if this is good or bad, but it's what some players wanted. V3.9.0 became completely unusable; this version is a direct upgrade from 3.8.0 to 3.10.0.
Server administrators should note that for stability, please delete or back up the old JSON configuration generated by this module, and use the JSON automatically generated by this updated module during runtime. If you need to modify the presets, please generate a new one first before modifying it.

feat: 优化体力系统核心逻辑并更新配置参数(v3.10.0)
- 增强绝境呼吸保护机制,确保0体力时不会死锁
- 改进负重速度惩罚计算,使用幂函数替代线性计算
- 提高体力监控精度至60Hz,与服务器同步
- 增加手持重物检测功能,影响体力消耗(预留接口,暂未实现)
- 缓存常用组件提升性能
- 重构体力代谢算法,采用净值计算方式
- 更新优化后的配置参数文件
另附说明:此修改大大增强了在轻量状态下的各项能力,包括消耗速度降低,移动速度提高,我不明白这是好是坏,但是这是一些玩家所希望的。V3.9.0成完全不可用版本,此版本是从3.8.0直接升级至3.10.0
服务器管理员需注意,为了稳定,请把该模组生成的旧JSON配置删除或备份,使用这次更新后的模组在运行时自动生成的JSON,如果你需要修改预设,也请先生成新的再修改
Game Version
1.6.0.108
Created
Fri, 23 Jan 2026 17:43:19 GMT
Last Modified
Fri, 23 Jan 2026 17:43:36 GMT

3.9.0

[3.9.0] - 2026-01-23
🌟 Core Highlight: Revamped Online Experience
This update focuses on the stability and smoothness of multiplayer gameplay. We have completely rewritten how the mod synchronizes data between the server and players, eliminating the "stuttering health bar" or "desynchronization" issues that previously occurred in multiplayer games.
🛡️ Server Authoritative Architecture
Fairness and Consistency: Health calculation is now entirely server-side! This means that the rules for health consumption are absolutely consistent for all players, eliminating client-side cheating or judgment discrepancies caused by network latency.
No More Rubber-banding: Your client now only handles visual effects and no longer "competes" with the server for control, significantly reducing rubber-banding during movement.
⚡ Network Synchronization Optimization
Smooth Visual Experience: We have introduced a brand-new intelligent smoothing algorithm. Even with fluctuating network conditions, the changes in your health bar and movement speed transitions will be silky smooth, without abrupt jumps.
Reduced Bandwidth Usage: Optimized data transmission frequency (now synchronizing key data once per second), significantly reducing server bandwidth pressure and client performance burden while maintaining accuracy.
🐛 Key Fixes
"Join-in-Progress" Fix: Fixed a long-standing bug that prevented players joining a server mid-game (JIP) from correctly loading health configurations or initializing properly. Now, the system works perfectly regardless of when you join the game.
Multiplayer Independence: Fixed an issue where different players' configurations might interfere with each other in a multiplayer environment. Now, each player's state is completely independent.
🚀 Performance and Underlying Optimizations
Core Code Refactoring: We removed a large amount of outdated monitoring loop code (no longer polling every 50ms), replacing it with a more efficient event-driven model. This significantly improves FPS and reduces script lag.
Comprehensive Component Upgrade: 12 core systems, including swimming, terrain detection, and fatigue accumulation, have undergone underlying maintenance, resulting in more stable and efficient operation.

[3.9.0] - 2026-01-23
🌟 核心亮点:联机体验重铸
本次更新专注于多人游戏的稳定性与流畅度。我们彻底重写了模组在服务器与玩家之间同步数据的方式,消除了以往多人游戏中可能出现的“体力条抖动”或“不同步”现象。
🛡️ 服务器权威架构 (Server Authoritative)
公平与一致性:现在的体力计算完全由服务器说了算!这意味着所有玩家的体力消耗规则绝对统一,消除了客户端作弊或因网络延迟导致的判定差异。
拒绝“回弹”:您的客户端现在只负责显示视觉效果,而不再与服务器“争抢”控制权,这大大减少了移动时的回弹(Rubber-banding)现象。
⚡ 网络同步优化
丝滑的视觉体验:我们引入了全新的智能平滑算法。即使网络环境有波动,您看到的体力条变化和移动速度过渡也会变得像丝绸一样顺滑,不再有突兀的跳变。
带宽占用降低:优化了数据传输频率(现在每秒同步一次关键数据),在保证准确性的同时,显著减轻了服务器带宽压力和客户端的性能负担。
🐛 关键修复
“中途加入”修复:修复了一个长期存在的 Bug,该 Bug 曾导致后加入服务器的玩家(JIP)无法正确加载体力配置或初始化失败。现在,无论您何时加入战局,系统都能完美运行。
多玩家独立性:修复了在多人环境下,不同玩家的配置可能会互相干扰的问题。现在每个人的状态都是完全独立的。
🚀 性能与底层优化
核心代码重构:我们移除了大量陈旧的监控循环代码(不再每 50ms 轮询一次),改为更高效的事件驱动模式。这对提升 FPS 和减少脚本卡顿有显著帮助。
组件全面升级:包括游泳、地形检测、疲劳积累在内的 12 个核心系统都进行了底层维护,运行更加稳定高效。
Game Version
1.6.0.108
Created
Fri, 23 Jan 2026 10:51:49 GMT
Last Modified
Fri, 23 Jan 2026 10:52:08 GMT

3.8.0

This update is a major refactor and fix for the underlying numerical architecture of RSS.
We identified that our previous "Automated Optimization System" had logic issues where parameters were detached from the physics engine. In v3.8.0, we completely refactored the Python Digital Twin simulator to ensure AI-calculated values are correctly applied to the game.
Additionally, we fixed a critical gameplay issue: "Stamina Draining while Standing."
🛠️ Core Fixes & Improvements
Fixed: "Standing Stamina Drain"
Issue: Previously, due to strict physics modeling of load bearing, stamina would slowly tick down even when standing still with a heavy pack.
Fix: Introduced "Static Protection Logic". Unless you are carrying extreme loads (>40kg), standing still is now guaranteed to regenerate stamina slowly.
Automation Toolchain Refactor
Rewrote the RSSDigitalTwin simulator code to fix the "Parameter Detachment" bug where optimizer output wasn't affecting the calculation logic.
Re-calibrated core physics constants (e.g., Energy Coeff) to fix the "Instant Exhaustion vs. Infinite Stamina" imbalance found in previous internal builds.
Preset Re-Calibration
Based on the fixed automation system, we regenerated the three presets. They now offer distinct and logical experiences:
EliteStandard: Higher load penalties, slower recovery. Hardcore.
StandardMilsim & TacticalAction: More linear progression, less frustration.

本次更新是对 RSS 底层数值架构的一次重大重构与修复。
我们之前引入的“自动化优化系统”存在代码逻辑与参数脱节的问题。在 v3.8.0 中,我们彻底重构了 Python 数字孪生(Digital Twin)仿真器,修复了参数“空转”的 Bug,确保 AI 计算出的数值能正确应用到游戏物理引擎中。
同时,我们解决了一个严重影响游戏体验的顽疾——“站立掉体力”。
🛠️ 核心修复与改进
彻底修复“站立掉体力” (Fix: Standing Stamina Drain)
问题:此前由于物理模型对负重的计算过于严苛,导致玩家背负重物站立不动时,体力条仍会缓慢下降。
修复:引入了 "Static Protection Logic"(静止保护逻辑)。现在,除非你背负了极端重量(>40kg),否则站立不动时绝对保证体力会缓慢恢复。
自动化工具链重构 (Automation Refactor)
重写了 RSSDigitalTwin 仿真器代码,修复了优化器参数无法正确传递给物理计算函数的逻辑错误(Parameter Detachment)。
重新校准了物理常数(如 Energy Coeff),解决了之前版本“要么瞬间力竭,要么无限体力”的数值崩坏问题。
预设数值更新 (Preset Calibration)
基于修复后的自动化系统,我们重新生成了三个预设文件。现在的预设差异更加合理:
EliteStandard:负重惩罚更明显,恢复更慢,适合硬核玩家。
StandardMilsim & TacticalAction:手感更加线性,减少了不必要的挫败感。
Game Version
1.6.0.108
Created
Thu, 22 Jan 2026 14:39:48 GMT
Last Modified
Thu, 22 Jan 2026 14:40:13 GMT

3.7.0

## [3.7.0] - 2026-01-22

### Added
- **Enhanced Parameter Sensitivity Analysis Tools (Enhanced Sensitivity Analysis Tools v3.7.0)**
- **Core Functions**:
- One-at-a-time sensitivity analysis
- Global sensitivity analysis (Spearman rank correlation)
- Parameter interaction effect analysis (multi-dimensional)
- Joint sensitivity analysis (simultaneous adjustment of multiple parameters)
- **New Module**:
- `rss_sensitivity_analysis_enhanced.py`: Enhanced sensitivity analysis tool (approximately 800 lines)

### Improvements
- **Parameter Sensitivity Analysis Optimization**
- **Removed Unused Parameters**: Removed unused parameters from the digital twin simulator (energy_to_stamina_coeff, encumbrance_speed_penalty_coeff, load_recovery_penalty_exponent)
- **Expanded Parameter Range**: Expanded from ±20% to ±50% for 10 parameters
- **Optimized Objective Function**: Increased from 2 metrics to 3 metrics (completion time, recovery time, minimum stamina)
- **Increased Parameter Pairs**: Increased from 3 pairs to 9 pairs, covering the recovery system, load system, fatigue system, and cross-system interactions
- **Fixed Parameter Passing**: Created new constant instances for each simulation to ensure parameter changes take effect
- **Used Real Simulator**: Used the actual digital twin simulator instead of returning a fixed value of 50.0

### Fixes
- **Stamina 0 Deadlock Issue**
- **Problem Description**: The stamina system could not recover when stamina dropped to 0, causing the player to get stuck.
- **Solution**:
- Modified the stamina recovery logic to allow stamina to recover from 0.
- Removed the recovery restriction when stamina is 0.
- **Impact**: Players can now recover stamina normally after exhausting their stamina.
- **Desperation Wind Protection Mechanism**
- **Problem Description**: When stamina is extremely low (< 2%), static load consumption may offset recovery, preventing escape from the danger zone.
- **Solution**:
- Introduced the Desperation Wind protection mechanism: When stamina is extremely low... - When below 2% and not underwater, a minimum recovery value of 0.0001 is granted.
- This ignores the static consumption due to backpack weight, ensuring even a slight stamina recovery to break the deadlock.
- This is equivalent to recovering 0.05% per second, allowing the player to escape the danger zone in 20 seconds.
- **Effect**: Players can slowly recover stamina when their stamina is extremely low, preventing them from getting stuck.

## [3.7.0] - 2026-01-22

### 新增
- **增强版参数敏感性分析工具(Enhanced Sensitivity Analysis Tools v3.7.0)**
  - **核心功能**:
    - 局部敏感性分析(One-at-a-time)
    - 全局敏感性分析(Spearman 秩相关)
    - 参数交互效应分析(多维度)
    - 联合敏感性分析(同时调整多个参数)
  - **新增模块**:
    - `rss_sensitivity_analysis_enhanced.py`: 增强版敏感性分析工具(约 800 行)

### 改进
- **参数敏感性分析优化**
  - **移除未使用参数**:移除了数字孪生仿真器中未使用的参数(energy_to_stamina_coeff, encumbrance_speed_penalty_coeff, load_recovery_penalty_exponent)
  - **扩大参数范围**:从 ±20% 扩大到 ±50%,共 10 个参数
  - **优化目标函数**:从 2 个指标增加到 3 个指标(完成时间、恢复时间、最低体力)
  - **增加参数对**:从 3 对增加到 9 对,覆盖恢复系统、负重系统、疲劳系统以及跨系统交互
  - **修复参数传递**:为每次仿真创建新的常量实例,确保参数变化生效
  - **使用真实仿真器**:使用真正的数字孪生仿真器,而不是返回固定值 50.0

### 修复
- **体力为 0 死锁问题**
  - **问题描述**:体力系统在体力降为 0 时无法恢复,导致玩家卡死
  - **修复方案**:
    - 修改体力恢复逻辑,允许体力从 0 开始恢复
    - 移除体力为 0 时的恢复限制
  - **影响**:玩家在体力耗尽后可以正常恢复体力
- **绝境呼吸保护机制(Desperation Wind)**
  - **问题描述**:体力极低时(< 2%),负重静态消耗可能抵消恢复,导致无法脱离危险区
  - **修复方案**:
    - 引入绝境呼吸保护机制:当体力 < 2% 且非水下时,给予保底恢复值 0.0001
    - 忽略背包重量的静态消耗,保证哪怕一丝微弱的体力恢复,打破死锁
    - 相当于每秒恢复 0.05%,20 秒可脱离危险区
  - **影响**:玩家在体力极低时可以缓慢恢复体力,避免卡死
Game Version
1.6.0.108
Created
Wed, 21 Jan 2026 18:49:14 GMT
Last Modified
Wed, 21 Jan 2026 18:49:36 GMT

3.6.0

## [3.6.0] - 2026-01-21

### Added
- **Stance Transition Cost System v1.0 (Lactic Acid Accumulation Model)**
- **Core Idea:** Single actions are very light, but continuous actions increase dramatically. Simulates the transition from aerobic to anaerobic metabolism in muscles during continuous weighted squats. - **Base Values:**
- PRONE → STAND: 1.5%
- PRONE → CROUCH: 1.0%
- CROUCH → STAND: 0.5%
- STAND → PRONE: 0.3%
- Other transitions: 0.3%
- **Stance Fatigue Accumulator:**
- Introduces a hidden variable `m_fStanceFatigue` to simulate lactic acid buildup in muscles during continuous weighted squats.
- Increase: This variable increases by 1.0 each time the stance changes.
- Decay: Automatically decreases by 0.5 per second.
- Effect: Actual stamina consumption = BaseCost × WeightFactor × (1.0 + m_fStanceFatigue)
- **Weight Factor Linearization:** Changed the original 1.5 power to linear (WeightFactor = CurrentWeight / 90.0)
- **Synergistic Protection Logic:**
- No "breathing difficulty period" triggered: Stance transitions are instantaneous consumption and should not trigger the 5-second recovery prohibition logic like after stopping a sprint.
- Stamina threshold protection: When stamina is below 10%, forcibly slow down the stance switching animation (if animation speed can be controlled) or prohibit directly jumping from prone to standing.
- **New Module:**
- `SCR_StanceTransitionManager.c`: Stance transition management module (approximately 220 lines)
- **New Constants:**
- `STANCE_COST_PRONE_TO_STAND`: 1.5%
- `STANCE_COST_PRONE_TO_CROUCH`: 1.0%
- `STANCE_COST_CROUCH_TO_STAND`: 0.5%
- `STANCE_COST_STAND_TO_PRONE`: 0.3%
- `STANCE_COST_OTHER`: 0.3%
- `STANCE_FATIGUE_ACCUMULATION`: 1.0
- `STANCE_FATIGUE_DECAY`: 0.5
- `STANCE_FATIGUE_MAX`: 10.0
- `STANCE_WEIGHT_BASE`: 90.0
- `STANCE_TRANSITION_MIN_STAMINA_THRESHOLD`: 0.10

### Improvements
- **Jump Detection Optimization**
- **Problem Description**: When jumping from a prone/crouching position, both jump stamina cost and stance transition cost were deducted simultaneously, leading to a sudden drop in stamina.
- **Solution**:
- Check the previous frame's stance: If jumping from prone or crouching, the jump stamina cost is not deducted; instead, it's handled by the stance transition system.
- Added `m_eLastStance` variable to record the previous frame's stance.
- Updated `m_eLastStance` in all return paths.
- Added debug information to display the original stance name.
- **Modified Files**:
- `SCR_JumpVaultDetection.c`: Added stance check logic (approximately 30 lines modified)
- **Post-Fix Behavior**:
- Jumping from standing: Deducts jump stamina cost (3.5%)
- Jumping from crouching: Does not deduct jump stamina cost, handled by the stance transition system (0.5%)
- Jumping from prone: Does not deduct jump stamina cost, handled by the stance transition system (1.5%)

### Technical Highlights
- **Lactic Acid Accumulation Model**: Based on realistic muscle fatigue mechanisms, simulating the transition from aerobic to anaerobic activity.
- **Stepwise Progressive Penalty**: Single actions have a light impact, while continuous actions increase significantly.
- **Linear Weight Factor**: Avoids excessive impact from weight, better aligning with game balance.
- **Stance-Aware Jump Detection**: Accurately determines whether jumping from prone/crouching, avoiding duplicate stamina deductions.
- **Cooperative Protection Logic**: Does not trigger the "breathlessness period," allowing players to immediately begin recovery after changing stances.

### Code Statistics
- **SCR_StanceTransitionManager.c**: New file (approximately 220 lines)
- **SCR_StaminaConstants.c**: Added 8 stance transition-related constants (approximately 40 lines modified)
- **SCR_JumpVaultDetection.c**: Added stance check logic (approximately 30 lines modified)
- **PlayerBase.c**: Integrated attitude transformation module (approximately 5 lines modified)
- **SCR_DebugDisplay.c**: Updated debug information display (approximately 25 lines modified)
- **Total**: Approximately 150 lines added/modified

### Documentation
- Updated README.md version history, added v3.6.0 update content
- Updated CHANGELOG.md, added detailed update log for v3.6.0

## [3.6.0] - 2026-01-21

### 新增
- **姿态转换成本系统 v1.0(Stance Transition Cost v1.0 - 乳酸堆积模型)**
  - **核心思路**:单次动作很轻,连续动作剧增。模拟肌肉在连续负重深蹲时从有氧到无氧的转变。
  - **基础数值**:
    - PRONE → STAND: 1.5%
    - PRONE → CROUCH: 1.0%
    - CROUCH → STAND: 0.5%
    - STAND → PRONE: 0.3%
    - 其他转换: 0.3%
  - **疲劳堆积器(Stance Fatigue Accumulator)**:
    - 引入隐藏变量 `m_fStanceFatigue`,模拟肌肉在连续负重深蹲时的乳酸堆积
    - 增加:每次变换姿态,这个变量增加 1.0
    - 衰减:每秒钟自动减少 0.5
    - 影响:实际体力消耗 = BaseCost × WeightFactor × (1.0 + m_fStanceFatigue)
  - **负重因子线性化**:将原来的 1.5 次幂改为线性(WeightFactor = CurrentWeight / 90.0)
  - **协同保护逻辑**:
    - 不触发"呼吸困顿期":姿态转换属于瞬时消耗,不应该像 Sprint 停止后那样触发 5 秒禁止恢复的逻辑
    - 体力阈值保护:当体力低于 10% 时,强制减慢姿态切换动画(如果能控制动画速度)或禁止直接从趴姿跳跃站起
  - **新增模块**:
    - `SCR_StanceTransitionManager.c`: 姿态转换管理模块(约 220 行)
  - **新增常量**:
    - `STANCE_COST_PRONE_TO_STAND`: 1.5%
    - `STANCE_COST_PRONE_TO_CROUCH`: 1.0%
    - `STANCE_COST_CROUCH_TO_STAND`: 0.5%
    - `STANCE_COST_STAND_TO_PRONE`: 0.3%
    - `STANCE_COST_OTHER`: 0.3%
    - `STANCE_FATIGUE_ACCUMULATION`: 1.0
    - `STANCE_FATIGUE_DECAY`: 0.5
    - `STANCE_FATIGUE_MAX`: 10.0
    - `STANCE_WEIGHT_BASE`: 90.0
    - `STANCE_TRANSITION_MIN_STAMINA_THRESHOLD`: 0.10

### 改进
- **跳跃检测优化(Jump Detection Optimization)**
  - **问题描述**:从趴/蹲姿跳跃时,同时扣除跳跃消耗和姿态转换消耗,导致体力骤降
  - **修复方案**:
    - 检查前一帧姿态:如果从趴着或蹲着跳跃,则不算跳跃消耗,而是姿态变换
    - 新增 `m_eLastStance` 变量记录上一帧姿态
    - 在所有返回路径中更新 `m_eLastStance`
    - 添加调试信息显示原始姿态名称
  - **修改的文件**:
    - `SCR_JumpVaultDetection.c`: 添加姿态检查逻辑(约 30 行修改)
  - **修复后行为**:
    - 从站姿跳跃:扣除跳跃消耗(3.5%)
    - 从蹲姿跳跃:不扣除跳跃消耗,由姿态转换系统处理(0.5%)
    - 从趴姿跳跃:不扣除跳跃消耗,由姿态转换系统处理(1.5%)

### 技术亮点
- **乳酸堆积模型**:基于真实的肌肉疲劳机制,模拟从有氧到无氧的转变
- **阶梯式累进惩罚**:单次动作很轻,连续动作剧增
- **线性负重因子**:避免负重影响过快,更符合游戏平衡
- **姿态感知跳跃检测**:准确判断是否从趴/蹲姿跳跃,避免重复扣除体力
- **协同保护逻辑**:不触发"呼吸困顿期",允许玩家在变换姿态后立即开始恢复

### 代码统计
- **SCR_StanceTransitionManager.c**: 新建文件(约 220 行)
- **SCR_StaminaConstants.c**: 新增 8 个姿态转换相关常量(约 40 行修改)
- **SCR_JumpVaultDetection.c**: 添加姿态检查逻辑(约 30 行修改)
- **PlayerBase.c**: 集成姿态转换模块(约 5 行修改)
- **SCR_DebugDisplay.c**: 更新调试信息显示(约 25 行修改)
- **总计**: 约 150 行新增/修改

### 文档
- 更新 README.md 版本历史,添加 v3.6.0 更新内容
- 更新 CHANGELOG.md,添加 v3.6.0 详细更新日志
Game Version
1.6.0.108
Created
Wed, 21 Jan 2026 10:37:23 GMT
Last Modified
Wed, 21 Jan 2026 10:37:48 GMT

3.5.0

- **Rain Wet Weight System Refactoring**
- **Remove String Matching Method:** Completely remove the `CalculateRainWeight()` method based on string matching of weather state names.
- **Unified Data Source:** All rain calculations use the `GetRainIntensity()` API (0.0-1.0 range).
- **Fix deltaTime Calculation Error:** Move the `m_fLastUpdateTime` update to the end of the method to ensure correct time increments.
- **Fix Indoor Detection:** Wet weight does not increase indoors, only decays.
- **Simplify Logic:** Use a unified linear decay logic for both indoor and outdoor environments.
- **Swimming Wet Weight Optimization**
- **Non-linear Growth:** Wet weight during swimming uses a square root function for growth: `wetWeight = 10.0 * sqrt(duration / 60.0)`
- **Growth Time:** Reaches a maximum of 10kg after 60 seconds.
- **Instant Effect:** Wet weight increases immediately during swimming, not only after getting out of the water.
- **Shared Weight Pool:** Swimming wet weight and rain wet weight share a single weight pool.
- Total wet weight formula: `totalWetWeight = swimmingWetWeight + rainWeight`
- Maximum limit: 10KG
- **HUD Display Updates**
-  Swimming activity type UI displays "Swim".
-  Swimming ground material UI displays "Water" (blue).
- **Code Statistics:**
- **SCR_EnvironmentFactor.c**: Removed CalculateRainWeight method, fixed deltaTime calculation (approximately 80 lines modified)
- **SCR_SwimmingState.c**: Modified wet weight calculation logic, added swimming time tracking (approximately 50 lines modified)
- **SCR_StaminaHUDComponent.c**: Added swimming state display support (approximately 30 lines modified)
- **SCR_DebugDisplay.c**: Updated debug information to display swimming state (approximately 10 lines modified)

    - **降雨湿重系统重构(Rain Wet Weight System Refactoring)**
      - **删除字符串匹配方法**:完全移除基于天气状态名称字符串匹配的 `CalculateRainWeight()` 方法
      - **统一数据源**:所有降雨计算都使用 `GetRainIntensity()` API(0.0-1.0范围)
      - **修复deltaTime计算错误**:将 `m_fLastUpdateTime` 更新移到方法末尾,确保正确的时间增量
      - **修复室内检测**:室内时不增加湿重,只进行衰减
      - **简化逻辑**:室内和室外使用统一的线性衰减逻辑
    - **游泳湿重系统优化(Swimming Wet Weight Optimization)**
      - **非线性增长**:游泳时湿重使用平方根函数增长:`wetWeight = 10.0 * sqrt(duration / 60.0)`
      - **增长时间**:60秒时达到最大值10kg
      - **即时生效**:游泳时湿重立即增加到负重,不是上岸后才生效
    - **共用负重池**:游泳湿重和降雨湿重共用一个负重池
      - 总湿重公式:`totalWetWeight = swimmingWetWeight + rainWeight`
      - 最大限制:10KG
    - **HUD显示更新**
      - 游泳时运动类型UI显示"Swim"
      - 游泳时地面材质UI显示"Water"(蓝色)
    - **代码统计**:
      - **SCR_EnvironmentFactor.c**: 删除CalculateRainWeight方法,修复deltaTime计算(约80行修改)
      - **SCR_SwimmingState.c**: 修改湿重计算逻辑,添加游泳时间追踪(约50行修改)
      - **SCR_StaminaHUDComponent.c**: 添加游泳状态显示支持(约30行修改)
      - **SCR_DebugDisplay.c**: 更新调试信息显示游泳状态(约10行修改)
Game Version
1.6.0.108
Created
Wed, 21 Jan 2026 01:56:08 GMT
Last Modified
Wed, 21 Jan 2026 01:56:27 GMT

3.4.1

## [3.4.1] - 2026-01-21

### Fixes
- **Urgent Fix: Config Override Not Working**
- **Problem Description**: Preset parameter values ​​modified by the user in the JSON configuration file were being overwritten by hardcoded default values.
- **Root Cause**: The `InitPresets()` method was called after reading the configuration from JSON, unconditionally overwriting all preset parameters.
- **Solution**: Split `InitPresets()` into 4 separate initialization methods, only initializing default values ​​when the preset object is `null`.
- `InitEliteStandardDefaults(bool shouldInit)`
- `InitStandardMilsimDefaults(bool shouldInit)`
- `InitTacticalActionDefaults(bool shouldInit)`
- `InitCustomDefaults(bool shouldInit)`
- **Behavior After Fix**:
- If preset configurations exist in the JSON file, the user's configuration values ​​are retained.
- If a preset is missing in the JSON file, the hardcoded default value is used.

- **Urgent Fix: Config Fields Empty**
- **Problem Description**: Fields such as `m_sConfigVersion` and `m_sSelectedPreset` in the JSON configuration file were empty strings, and the HUD was disabled by default.
- **Root Cause**: The `defvalue` parameter of `[Attribute]` is only the default value for the UI editor and does not automatically initialize variables in the code.
- **Solution**: Added the `EnsureDefaultValues()` method to check and set default values ​​for all necessary fields after loading the configuration.
- **Fields Handled**:
- `m_sConfigVersion` - Defaults to the current version number
- `m_sSelectedPreset` - Defaults to "StandardMilsim"
- `m_bHintDisplayEnabled` - Default enabled in older configurations (user settings retained in new versions)
- `m_iHintUpdateInterval` - Default 5000ms
- `m_fHintDuration` - Default 2.0s
- `m_iDebugUpdateInterval` - Default 5000ms
- `m_iTerrainUpdateInterval` - Default 5000ms
- `m_iEnvironmentUpdateInterval` - Default 5000ms
- `m_fStaminaDrainMultiplier` - Default 1.0
- `m_fStaminaRecoveryMultiplier` - Default 1.0
- `m_fSprintSpeedMultiplier` - Default 1.3
- `m_fSprintStaminaDrainMultiplier` - Default 3.0
- **Special Handling**: `m_bHintDisplayEnabled`  Since the default value for a boolean is false, it's impossible to distinguish between "user set to false" and "field does not exist". Therefore, it is only forcibly enabled in older versions of the configuration.

- **New Debug Logs**:
- Print preset status during loading (`Elite=OK/NULL Standard=OK/NULL Tactical=OK/NULL Custom=OK/NULL`)
- Print the key parameter values ​​of the currently active preset at startup
- Print logs when setting default values ​​(for easier troubleshooting)

### Improvements
- **Custom Preset Configuration Logic**
- **Problem Description**: Global configuration items (stamina multipliers, environmental factor switch, advanced system switch) were effective under all presets, conflicting with the preset system design.
- **Solution**: These configuration items now **only take effect when the Custom preset is selected**.
- **Configuration生效规则**:
| Preset | 40 Core Parameters | Global Configuration Items |
|------|--------------|-----------|
| EliteStandard | `m_EliteStandard` | Ignored, using default values ​​|
| StandardMilsim | `m_StandardMilsim` | Ignored, using default values ​​|
| TacticalAction | `m_TacticalAction` | Ignored, using default values ​​|
| **Custom** | `m_Custom` | **Reads user configuration** |
- **Configuration items only effective in Custom preset**:
- Stamina System: `m_fStaminaDrainMultiplier`, `m_fStaminaRecoveryMultiplier`, `m_fEncumbranceSpeedPenaltyMultiplier`, `m_fSprintSpeedMultiplier`, `m_fSprintStaminaDrainMultiplier`
- - Environmental Factor Switches: `m_bEnableHeatStress`, `m_bEnableRainWeight`, `m_bEnableWindResistance`, `m_bEnableMudPenalty`
- Advanced System Switches: `m_bEnableFatigueSystem`, `m_bEnableMetabolicAdaptation`, `m_bEnableIndoorDetection`
- **Non-Custom Preset Default Values**: All multipliers are 1.0 (Sprint speed is 1.3), all switches are true

- **HUD Configuration Item Description Updates**
- Updated `m_bHintDisplayEnabled` description: Clarified that it controls the HUD display in the upper right corner of the screen.
- Marked `m_iHintUpdateInterval` and `m_fHintDuration` as deprecated (HUD is now a real-time, persistent display).

### Code Statistics
- **SCR_RSS_Settings.c**: Refactored the `InitPresets()` method, updated configuration item descriptions (approximately 50 lines modified)
- **SCR_RSS_ConfigManager.c**: Added `EnsureDefaultValues()` method and debug logs (approximately 120 lines)
- **SCR_StaminaConstants.c**: Added `IsCustomPreset()` method, modified 12 configuration retrieval functions (approximately 40 lines modified)

## [3.4.1] - 2026-01-21

### 修复
- **紧急修复:配置文件覆盖未生效(Config Override Not Working)**
  - **问题描述**:用户在 JSON 配置文件中修改的预设参数值被硬编码的默认值覆盖
  - **根本原因**:`InitPresets()` 方法在从 JSON 读取配置后被调用,无条件覆盖所有预设参数
  - **修复方案**:将 `InitPresets()` 拆分为 4 个独立的初始化方法,只有当预设对象为 `null` 时才初始化默认值
    - `InitEliteStandardDefaults(bool shouldInit)`
    - `InitStandardMilsimDefaults(bool shouldInit)`
    - `InitTacticalActionDefaults(bool shouldInit)`
    - `InitCustomDefaults(bool shouldInit)`
  - **修复后行为**:
    - 如果 JSON 中存在预设配置,保留用户的配置值
    - 如果 JSON 中缺少某个预设,才使用硬编码的默认值

- **紧急修复:配置字段默认值为空(Config Fields Empty)**
  - **问题描述**:JSON 配置文件中 `m_sConfigVersion`、`m_sSelectedPreset` 等字段为空字符串,HUD 显示默认关闭
  - **根本原因**:`[Attribute]` 的 `defvalue` 参数只是 UI 编辑器的默认值,不会在代码中自动初始化变量
  - **修复方案**:新增 `EnsureDefaultValues()` 方法,在加载配置后检查并设置所有必要字段的默认值
  - **处理的字段**:
    - `m_sConfigVersion` - 默认为当前版本号
    - `m_sSelectedPreset` - 默认为 "StandardMilsim"
    - `m_bHintDisplayEnabled` - 旧版本配置默认开启(新版本保留用户设置)
    - `m_iHintUpdateInterval` - 默认 5000ms
    - `m_fHintDuration` - 默认 2.0s
    - `m_iDebugUpdateInterval` - 默认 5000ms
    - `m_iTerrainUpdateInterval` - 默认 5000ms
    - `m_iEnvironmentUpdateInterval` - 默认 5000ms
    - `m_fStaminaDrainMultiplier` - 默认 1.0
    - `m_fStaminaRecoveryMultiplier` - 默认 1.0
    - `m_fSprintSpeedMultiplier` - 默认 1.3
    - `m_fSprintStaminaDrainMultiplier` - 默认 3.0
  - **特殊处理**:`m_bHintDisplayEnabled` 由于 bool 默认为 false,无法区分"用户设置为 false"和"字段不存在",所以只有在旧版本配置时才强制开启

- **新增调试日志**:
  - 加载时打印预设状态(`Elite=OK/NULL Standard=OK/NULL Tactical=OK/NULL Custom=OK/NULL`)
  - 启动时打印当前激活预设的关键参数值
  - 设置默认值时打印日志(便于排查问题)

### 改进
- **Custom 预设配置生效逻辑(Custom Preset Configuration Logic)**
  - **问题描述**:全局配置项(体力倍率、环境因子开关、高级系统开关)在所有预设下都生效,与预设系统设计冲突
  - **修复方案**:这些配置项现在**仅在选择 Custom 预设时生效**
  - **配置生效规则**:
    | 预设 | 40 个核心参数 | 全局配置项 |
    |------|--------------|-----------|
    | EliteStandard | `m_EliteStandard` | 忽略,使用默认值 |
    | StandardMilsim | `m_StandardMilsim` | 忽略,使用默认值 |
    | TacticalAction | `m_TacticalAction` | 忽略,使用默认值 |
    | **Custom** | `m_Custom` | **读取用户配置** |
  - **仅 Custom 预设生效的配置项**:
    - 体力系统:`m_fStaminaDrainMultiplier`、`m_fStaminaRecoveryMultiplier`、`m_fEncumbranceSpeedPenaltyMultiplier`、`m_fSprintSpeedMultiplier`、`m_fSprintStaminaDrainMultiplier`
    - 环境因子开关:`m_bEnableHeatStress`、`m_bEnableRainWeight`、`m_bEnableWindResistance`、`m_bEnableMudPenalty`
    - 高级系统开关:`m_bEnableFatigueSystem`、`m_bEnableMetabolicAdaptation`、`m_bEnableIndoorDetection`
  - **非 Custom 预设默认值**:所有倍率为 1.0(Sprint 速度为 1.3),所有开关为 true

- **HUD 配置项描述更新**
  - 更新 `m_bHintDisplayEnabled` 描述:说明它控制的是屏幕右上角 HUD 显示
  - 标记 `m_iHintUpdateInterval` 和 `m_fHintDuration` 为已弃用(HUD 现在是实时更新的常驻显示)

### 代码统计
- **SCR_RSS_Settings.c**: 重构 `InitPresets()` 方法,更新配置项描述(约 50 行修改)
- **SCR_RSS_ConfigManager.c**: 新增 `EnsureDefaultValues()` 方法和调试日志(约 120 行)
- **SCR_StaminaConstants.c**: 新增 `IsCustomPreset()` 方法,修改 12 个配置获取函数(约 40 行修改)
Game Version
1.6.0.108
Created
Wed, 21 Jan 2026 00:28:07 GMT
Last Modified
Wed, 21 Jan 2026 00:28:27 GMT

3.4.0

## [3.4.0] - 2026-01-21

### Added
- **Real-time Status HUD Display System**
- Displays complete stamina system status information in the upper right corner of the screen (similar to the game's native FPS/latency display bar).
- Uses a custom UI layout file (`StaminaHUD.layout`), a compact horizontal bar design.
- Updates every 0.2 seconds, synchronized with the stamina system.
- Controlled by the `m_bHintDisplayEnabled` configuration option.
- **Display Content (10 items):**
- **STA XX%** - Stamina percentage (<20% red, <40% orange, otherwise white)
​​   - **SPD X.Xm/s** - Current actual speed (color based on speed multiplier: ≥95% red, ≥80% orange)
- **WT XXkg** - Current weight (≥40kg red, ≥30kg orange)
- **Idle/Walk/Run/Sprint** - Movement type
- **SLOPE ±Xdeg** - Slope angle (≥20° red, ≥10° orange)
- **TEMP XXC** - Virtual temperature (≥35°C red, ≥28°C orange, 15-27°C white, 5-14°C light blue, <5°C blue)
- **WIND [Direction] Xm/s** - Wind speed and direction (≥15m/s red, ≥8m/s orange; displays "Calm" for no wind; 8 directions: N/NE/E/SE/S/SW/W/NW)
- **Indoor/Outdoor** - Indoor/Outdoor status (Indoor green, Outdoor white)
​​   - **Ground Type** - Ground material based on physical density (Wood/Floor/Grass/Dirt/Gravel/Paved/Sand/Rock)
- **WET Xkg** - Wet weight (Cyan when wet, white otherwise)
- **SCR_StaminaHUDComponent.c** - HUD Component Module (approximately 500 lines)
- Singleton pattern management, automatic initialization and destruction
- Intelligent change detection (UI updates only when values ​​change, optimizing performance)
- Rich color coding system, intuitively reflecting status

- **Configuration System Extension**
- **SCR_RSS_Settings.c** New configuration items added:
- `m_sConfigVersion` - Configuration file version number (for automatic migration)
- `m_bHintDisplayEnabled` - HUD display switch (enabled by default)
- `m_iHintUpdateInterval` - HUD update interval (milliseconds)
- `m_fHintDuration` - Hint duration (seconds)
- HUD display automatically enabled in workbench mode

- **Configuration Version Detection & Auto-Migration System**
- JSON configuration file adds `m_sConfigVersion` field to record the configuration version number
- Automatically checks if the configuration version matches the module version when the module starts
- Automatic migration when versions don't match:
- Retains existing user configuration values
- Only adds default values ​​for new fields in the new version
- Updates the configuration version number and saves it
- Logs the migration process for server administrators to troubleshoot
- Version comparison supports semantic versioning (e.g., "3.4.0" vs "3.3.0")

### Improvements
- **Wind Direction Display Fix**
- Fixed the issue where the API returned "the direction the wind is blowing towards" instead of "the direction the wind is coming from"
- Correctly displays the wind source direction after a 180-degree reversal (e.g., if the game settings are SE wind, the HUD displays SE)
- **Ground Type Display Optimization**
- Uses the physical density value from the game API (`BallisticInfo.GetDensity()`)
- Determines the ground type based on the actual density range (refer to `SCR_RealisticStaminaSystem.GetTerrainFactorFromDensity()`):
- Wood (≤0.7): Wooden surface - Green
- Floor (≤1.15): Indoor floor - Green
- Grass (≤1.25): Grass - White
- Dirt (≤1.4): Dirt - White
- Gravel (≤1.65): Gravel/Crushed stone road - Orange
- - Paved (≤2.4): Asphalt/Concrete - Green
- Sand (≤2.8): Sandy ground - Orange
- Rock (>2.8): Rocks/Gravel - Red
- **Color Coding System**
- Load color is based on combat load threshold (30kg Orange) and maximum load (40kg Red)
- Slope color is based on steepness (≥10° Orange, ≥20° Red)
- Temperature color is based on comfort level (Cold Blue, Comfortable White, Hot Orange, Very Hot Red)
- Ground color: Green = Good surface, White = Normal, Orange = Difficult, Red = Very difficult

### Technical Highlights
- **Modular HUD Architecture**: Independent HUD components, created directly using `WorkspaceWidget.CreateWidgets()`, without relying on complex InfoDisplay registration.
- **Configurable Access Control**: HUD display controlled via the `m_bHintDisplayEnabled` configuration item, supporting hot configuration.
- **Performance Optimization**: Intelligent change detection, using complete text hash comparison to avoid unnecessary UI updates.
- **Internationalization Support**: All labels use English abbreviations to avoid issues with game fonts not supporting Chinese characters.
- **Semantic Color Coding**: Red = Danger/High consumption, Orange = Warning/Medium, White = Normal, Green = Good, Blue = Cold/Wet
- **Configuration Version Management**: Automatically detects and migrates older configurations, preserving user settings while adding new features.

### Code Statistics
- **SCR_StaminaHUDComponent.c**: New HUD component (approx. 500 lines)
- **StaminaHUD.layout**: New UI layout file (approx. 320 lines)
- **SCR_DebugDisplay.c**: Updated parameter passing, added environmental data acquisition (approx. 30 lines modified)
- **SCR_RSS_Settings.c**: Added HUD configuration items and version number field (approx. 30 lines)
- **SCR_RSS_ConfigManager.c**: Added version detection and automatic migration system (approx. 80 lines)
- **PlayerBase.c**: Added currentSpeed ​​parameter passing, HUD initialization/destruction calls (approx. 10 lines modified)

## [3.4.0] - 2026-01-21

### 新增
- **实时状态 HUD 显示系统(Real-time Status HUD Display System)**
  - 在屏幕右上角显示完整的体力系统状态信息(类似游戏原生的 FPS/延迟显示条)
  - 使用自定义 UI 布局文件(`StaminaHUD.layout`),水平排列的紧凑条状设计
  - 每 0.2 秒更新一次,与体力系统同步
  - 通过 `m_bHintDisplayEnabled` 配置项控制开关
  - **显示内容(10项)**:
    - **STA XX%** - 体力百分比(<20% 红色, <40% 橙色, 其他白色)
    - **SPD X.Xm/s** - 当前实际速度(颜色基于速度倍数:≥95% 红色, ≥80% 橙色)
    - **WT XXkg** - 当前负重(≥40kg 红色, ≥30kg 橙色)
    - **Idle/Walk/Run/Sprint** - 移动类型
    - **SLOPE ±Xdeg** - 坡度角度(≥20° 红色, ≥10° 橙色)
    - **TEMP XXC** - 虚拟气温(≥35°C 红色, ≥28°C 橙色, 15-27°C 白色, 5-14°C 浅蓝, <5°C 蓝色)
    - **WIND [方向] Xm/s** - 风速风向(≥15m/s 红色, ≥8m/s 橙色;无风显示 "Calm";8方向:N/NE/E/SE/S/SW/W/NW)
    - **Indoor/Outdoor** - 室内/室外状态(室内绿色, 室外白色)
    - **地面类型** - 基于物理密度的地面材质(Wood/Floor/Grass/Dirt/Gravel/Paved/Sand/Rock)
    - **WET Xkg** - 湿重(有湿重时青色, 无湿重白色)
  - **SCR_StaminaHUDComponent.c** - HUD 组件模块(约 500 行)
    - 单例模式管理,自动初始化和销毁
    - 智能变化检测(只有数值变化时才更新 UI,优化性能)
    - 丰富的颜色编码系统,直观反映状态好坏

- **配置系统扩展**
  - **SCR_RSS_Settings.c** 新增配置项:
    - `m_sConfigVersion` - 配置文件版本号(用于自动迁移)
    - `m_bHintDisplayEnabled` - HUD 显示开关(默认开启)
    - `m_iHintUpdateInterval` - HUD 更新间隔(毫秒)
    - `m_fHintDuration` - Hint 持续时间(秒)
  - 工作台模式下自动开启 HUD 显示

- **配置版本检测与自动迁移系统(Config Version Detection & Auto-Migration)**
  - JSON 配置文件新增 `m_sConfigVersion` 字段,记录配置版本号
  - 模组启动时自动检测配置版本与模组版本是否匹配
  - 版本不匹配时自动执行迁移:
    - 保留用户已有的配置值
    - 只添加新版本新增字段的默认值
    - 更新配置版本号并保存
  - 日志输出迁移过程,方便服主排查问题
  - 版本比较支持语义化版本号(如 "3.4.0" vs "3.3.0")

### 改进
- **风向显示修复**
  - 修复 API 返回"风吹向的方向"而非"风来自的方向"的问题
  - 反转 180 度后正确显示风的来源方向(如游戏设置 SE 风,HUD 显示 SE)
- **地面类型显示优化**
  - 使用游戏 API 的物理密度值(`BallisticInfo.GetDensity()`)
  - 基于实际密度范围判断地面类型(参考 `SCR_RealisticStaminaSystem.GetTerrainFactorFromDensity()`):
    - Wood (≤0.7): 木质表面 - 绿色
    - Floor (≤1.15): 室内地板 - 绿色
    - Grass (≤1.25): 草地 - 白色
    - Dirt (≤1.4): 土质 - 白色
    - Gravel (≤1.65): 鹅卵石/碎石路 - 橙色
    - Paved (≤2.4): 沥青/混凝土 - 绿色
    - Sand (≤2.8): 沙地 - 橙色
    - Rock (>2.8): 岩石/碎石 - 红色
- **颜色编码系统**
  - 负重颜色基于战斗负重阈值(30kg 橙色)和最大负重(40kg 红色)
  - 坡度颜色基于陡峭程度(≥10° 橙色, ≥20° 红色)
  - 温度颜色基于舒适度(寒冷蓝色, 舒适白色, 炎热橙色, 高温红色)
  - 地面颜色:绿色=良好路面,白色=普通,橙色=困难,红色=非常困难

### 技术亮点
- **模块化 HUD 架构**:独立的 HUD 组件,使用 `WorkspaceWidget.CreateWidgets()` 直接创建,不依赖复杂的 InfoDisplay 注册
- **配置门禁**:通过 `m_bHintDisplayEnabled` 配置项控制 HUD 显示,支持热配置
- **性能优化**:智能变化检测,构建完整文本哈希比对,避免不必要的 UI 更新
- **国际化支持**:所有标签使用英文缩写,避免游戏字体不支持中文的问题
- **颜色语义化**:红色=危险/高消耗,橙色=警告/中等,白色=正常,绿色=良好,蓝色=寒冷/湿润
- **配置版本管理**:自动检测并迁移旧版本配置,保留用户设置的同时添加新功能

### 代码统计
- **SCR_StaminaHUDComponent.c**: 新建 HUD 组件(约 500 行)
- **StaminaHUD.layout**: 新建 UI 布局文件(约 320 行)
- **SCR_DebugDisplay.c**: 更新参数传递,新增环境数据获取(约 30 行修改)
- **SCR_RSS_Settings.c**: 新增 HUD 配置项和版本号字段(约 30 行)
- **SCR_RSS_ConfigManager.c**: 新增版本检测和自动迁移系统(约 80 行)
- **PlayerBase.c**: 添加 currentSpeed 参数传递,HUD 初始化/销毁调用(约 10 行修改)
Game Version
1.6.0.108
Created
Tue, 20 Jan 2026 23:54:00 GMT
Last Modified
Tue, 20 Jan 2026 23:54:24 GMT

3.3.0

## [3.3.0] - 2026-01-21

### 新增
- **贝叶斯优化器全参数扩展(Bayesian Optimizer Full Parameter Expansion)**
  - 将优化参数从 11 个扩展到 40 个,覆盖完整的体力系统
  - 新增参数类别:
    - **有氧/无氧效率因子**:aerobic_efficiency_factor、anaerobic_efficiency_factor
    - **恢复系统参数**:recovery_nonlinear_coeff、fast_recovery_multiplier、medium_recovery_multiplier、slow_recovery_multiplier、marginal_decay_threshold、marginal_decay_coeff、min_recovery_stamina_threshold、min_recovery_rest_time_seconds
    - **Sprint和姿态参数**:sprint_speed_boost、posture_crouch_multiplier、posture_prone_multiplier
    - **动作参数**:jump_stamina_base_cost、vault_stamina_start_cost、climb_stamina_tick_cost、jump_consecutive_penalty
    - **坡度参数**:slope_uphill_coeff、slope_downhill_coeff
    - **游泳参数**:swimming_base_power、swimming_encumbrance_threshold、swimming_static_drain_multiplier、swimming_dynamic_power_efficiency、swimming_energy_to_stamina_coeff
    - **环境参数**:env_heat_stress_max_multiplier、env_rain_weight_max、env_wind_resistance_coeff、env_mud_penalty_max、env_temperature_heat_penalty_coeff、env_temperature_cold_recovery_penalty_coeff
  - 优化范围更全面,覆盖体力消耗、恢复、移动、环境等所有系统

- **三预设系统(Three-Preset Configuration System)**
  - **SCR_RSS_Params 类扩展**:从 11 个参数扩展到 40 个参数
  - **新增 StandardMilsim 预设**:标准平衡模式(Optuna 优化出的平衡配置)
  - **预设系统完善**:
    - EliteStandard:精英拟真模式(极致拟真,医学精确度优先)
    - StandardMilsim:标准平衡模式(平衡拟真与可玩性,默认预设)
    - TacticalAction:战术动作模式(流畅游戏体验,可玩性优先)
    - Custom:自定义模式(管理员可以手动调整所有参数)
  - **默认预设切换**:从 EliteStandard 切换到 StandardMilsim
    - 工作台模式仍使用 EliteStandard(用于验证)
    - 游戏模式默认使用 StandardMilsim(平衡体验)

### 改进
- **预设参数完整性**:所有 40 个参数都有详细的 Optuna 优化值
- **配置系统用户体验**:
  - 管理员可以通过修改 JSON 文件中的 `m_sSelectedPreset` 字段快速切换预设
  - StandardMilsim 作为默认预设,提供平衡的游戏体验
  - 所有参数都有详细的中英双语注释,方便管理员理解参数作用

### 技术亮点
- **全参数优化**:40 个参数覆盖完整的体力系统,优化更全面
- **三预设架构**:完美覆盖帕累托前沿上的三个关键点(极致拟真、标准平衡、战术动作)
- **Optuna 优化集成**:所有预设使用 Optuna 优化的参数
- **动态参数获取**:所有核心参数从配置管理器动态获取,支持热重载
- **中英双语注释**:所有参数都有详细的中英双语注释,提升国际化支持

### 代码统计
- **SCR_RSS_Params.c**: 从 11 个参数扩展到 40 个参数(约 320 行新增)
- **SCR_RSS_Settings.c**: 更新 InitPresets() 方法,为所有 4 个预设配置 40 个参数(约 200 行修改)
- **SCR_StaminaConstants.c**: 新增 29 个配置桥接方法(约 350 行新增)
- **rss_digital_twin.py**: 新增 20+ 个常量定义(约 100 行新增)
- **rss_optimizer_optuna.py**: 优化参数从 11 个扩展到 40 个(约 150 行修改)
- **run_complete_optimization.py**: 更新参数列表(约 50 行修改)

### 文档
- 所有 40 个参数都有详细的中英双语注释
- 更新预设选择器说明,包含三个预设的详细说明

## [3.3.0] - 2026-01-21

### Added
- **Bayesian Optimizer Full Parameter Expansion**
- Expanded optimization parameters from 11 to 40, covering the complete stamina system.
- New parameter categories:
- **Aerobic/Anaerobic Efficiency Factors**: aerobic_efficiency_factor, anaerobic_efficiency_factor
- **Recovery System Parameters**: recovery_nonlinear_coeff, fast_recovery_multiplier, medium_recovery_multiplier, slow_recovery_multiplier, marginal_decay_threshold, marginal_decay_coeff, min_recovery_stamina_threshold, min_recovery_rest_time_seconds
- **Sprint and Posture Parameters**: sprint_speed_boost, posture_crouch_multiplier, posture_prone_multiplier
- **Action Parameters**: jump_stamina_base_cost, vault_stamina_start_cost, climb_stamina_tick_cost, jump_consecutive_penalty
- **Slope Parameters**: slope_uphill_coeff, slope_downhill_coeff
- **Swimming Parameters**: swimming_base_power, swimming_encumbrance_threshold, swimming_static_drain_multiplier, swimming_dynamic_power_efficiency, swimming_energy_to_stamina_coeff
- **Environmental Parameters**: env_heat_stress_max_multiplier, env_rain_weight_max, env_wind_resistance_coeff, env_mud_penalty_max, env_temperature_heat_penalty_coeff, env_temperature_cold_recovery_penalty_coeff
- More comprehensive optimization scope, covering all systems including stamina consumption, recovery, movement, and environment.

- **Three-Preset Configuration System**
- **SCR_RSS_Params class expansion**: Expanded from 11 parameters to 40 parameters.
- **New StandardMilsim preset**: Standard balanced mode (balanced configuration optimized by Optuna)
- **Improved Preset System**:
- EliteStandard: Elite simulation mode (extreme realism, prioritizing medical accuracy)
- - StandardMilsim: Standard Balanced Mode (balances realism and playability, default preset)
- TacticalAction: Tactical Action Mode (smooth gameplay experience, playability prioritized)
- Custom: Custom Mode (administrator can manually adjust all parameters)
- **Default Preset Switching**: Switching from EliteStandard to StandardMilsim
- Workbench mode still uses EliteStandard (for verification)
- Game mode defaults to StandardMilsim (balanced experience)

### Improvements
- **Preset Parameter Completeness**: All 40 parameters have detailed Optuna optimized values
- **Configuration System User Experience**:
- Administrators can quickly switch presets by modifying the `m_sSelectedPreset` field in the JSON file
- StandardMilsim is the default preset, providing a balanced gaming experience
- All parameters have detailed bilingual (Chinese and English) comments for administrators to understand their functions

### Technical Highlights
- **Full Parameter Optimization**: 40 parameters cover the complete stamina system, resulting in more comprehensive optimization
- **Three-Preset Architecture**: Perfectly covers three key points on the Pareto front (extreme realism, standard balance, tactical action)
- **Optuna Optimization Integration**: All presets use parameters optimized by Optuna
- **Dynamic Parameter Acquisition**: All core parameters are dynamically obtained from the configuration manager, supporting hot reloading
- **Bilingual Comments**: All parameters have detailed bilingual (Chinese and English) comments, enhancing internationalization support

### Code Statistics
- **SCR_RSS_Params.c**: Expanded from 11 parameters to 40 parameters (approximately 320 lines added)
- **SCR_RSS_Settings.c**: Updated the InitPresets() method to configure 40 parameters for all 4 presets (approximately 200 lines modified)
- **SCR_StaminaConstants.c**: Added 29 configuration bridging methods (approximately 350 lines added)
- **rss_digital_twin.py**: Added 20+ constant definitions (approximately 100 lines added)
- **rss_optimizer_optuna.py**: Optimized parameters expanded from 11 to 40 (approximately 150 lines modified) **run_complete_optimization.py**: Updated parameter list (approximately 50 lines of changes)

### Documentation
- All 40 parameters have detailed bilingual (Chinese and English) comments.
- Updated preset selector instructions, including detailed descriptions of the three presets.
Game Version
1.6.0.108
Created
Tue, 20 Jan 2026 18:42:45 GMT
Last Modified
Tue, 20 Jan 2026 18:43:27 GMT

3.2.0

## [3.2.0] - 2026-01-21

### 修复
- **游泳湿重系统修复(Swimming Wet Weight Fix)**
  - 修复 `SCR_EnvironmentFactor.UpdateEnvironmentFactors()` 方法没有接收游泳湿重参数的问题
  - 修复前:总湿重计算只考虑降雨湿重,完全忽略游泳湿重
  - 修复后:正确接收并使用 `swimmingWetWeight` 参数,使用 `SwimmingStateManager.CalculateTotalWetWeight()` 计算总湿重
  - 修复前:上岸后湿重不增加,体力消耗不受影响
  - 修复后:上岸后立即获得 7.5kg 湿重,30秒内线性衰减到 0kg
  - 更新调试信息,添加总湿重显示

- **时间单位错误修复(Time Unit Bug Fixes)**
  - 修复 `GetWorldTime()` 返回毫秒但多处代码没有转换为秒的问题
  - 修复前:所有时间相关的计算都错误了 1000 倍
  - 修复后:所有时间计算正确使用秒作为单位
  - 影响范围:
    - `PlayerBase.c`: 6 处修复(FatigueSystem、SwimmingStateManager、EPOC延迟)
    - `SCR_JumpVaultDetection.c`: 1 处修复(连续跳跃检测)
    - `SCR_RSS_ConfigManager.c`: 1 处修复(配置重载冷却)
    - `SCR_DebugDisplay.c`: 3 处修复(调试日志时间检查)
    - `SCR_StaminaUpdateCoordinator.c`: 1 处修复(速度计算时间)

- **ExerciseTracker 时间单位修复**
  - 修复 `ExerciseTracker` 期望接收毫秒但传入了秒的问题
  - 修复前:时间被除以 1000.0 两次,运动时间和休息时间累积慢 1000 倍
  - 修复后:正确传入毫秒,`ExerciseTracker` 内部转换为秒
  - 影响范围:
    - `PlayerBase.c:113`: `ExerciseTracker.Initialize()` 传入毫秒
    - `PlayerBase.c:493`: `currentTimeForExercise` 使用毫秒
  - 修复前的影响:
    - 疲劳恢复需要 16.7 小时后才开始(而不是 60 秒)
    - 快速恢复期持续 50 小时(而不是 3 分钟)
    - 中等恢复期持续 167 小时(而不是 10 分钟)
  - 修复后:所有时间相关功能正常工作

### 已知问题
- **体力恢复速度可能过快**
  - 当前恢复速度基于 Optuna 优化的参数,可能在实际游戏中感觉过快
  - 作者对目前体力恢复速度感到不满意,可能会在以后调整
  - 恢复速度相关参数:
    - `base_recovery_rate`: 基础恢复率(每 0.2 秒)
    - `standing_recovery_multiplier`: 站姿恢复倍数
    - `prone_recovery_multiplier`: 趴姿恢复倍数
    - `FAST_RECOVERY_MULTIPLIER`: 快速恢复期倍数(3.5x)
    - `MEDIUM_RECOVERY_MULTIPLIER`: 中等恢复期倍数(1.8x)
  - 管理员可以通过修改配置文件中的 `m_sSelectedPreset` 字段切换预设
  - 或者在 `Custom` 预设中手动调整恢复速度相关参数

### 代码统计
- **SCR_EnvironmentFactor.c**: 修复游泳湿重参数传递(约 10 行修改)
- **PlayerBase.c**: 修复时间单位错误(6 处修改)
- **SCR_JumpVaultDetection.c**: 修复连续跳跃检测时间单位(1 处修改)
- **SCR_RSS_ConfigManager.c**: 修复配置重载冷却时间单位(1 处修改)
- **SCR_DebugDisplay.c**: 修复调试日志时间单位(3 处修改)
- **SCR_StaminaUpdateCoordinator.c**: 修复速度计算时间单位(1 处修改)

## [3.2.0] - 2026-01-21

### Fixes
- **Swimming Wet Weight System Fix**
- Fixed an issue where the `SCR_EnvironmentFactor.UpdateEnvironmentFactors()` method was not receiving the swimming wet weight parameter.
- Before fix: Total wet weight calculation only considered rainfall wet weight, completely ignoring swimming wet weight.
- After fix: Correctly receives and uses the `swimmingWetWeight` parameter, using `SwimmingStateManager.CalculateTotalWetWeight()` to calculate the total wet weight.
- Before fix: Wet weight did not increase after getting out of the water, and stamina consumption was unaffected.
- After fix: Immediately gains 7.5kg of wet weight after getting out of the water, linearly decaying to 0kg within 30 seconds.
- Updated debug information, added total wet weight display.

- **Time Unit Bug Fixes**
- Fixed an issue where `GetWorldTime()` returned milliseconds, but multiple code sections did not convert it to seconds.
- Before fix: All time-related calculations were incorrect by a factor of 1000.
- After fix: All time calculations correctly use seconds as the unit.
- Affected areas:
- `PlayerBase.c`: 6 fixes (FatigueSystem, SwimmingStateManager, EPOC delay)
- `SCR_JumpVaultDetection.c`: 1 fix (continuous jump detection)
- `SCR_RSS_ConfigManager.c`: 1 fix (configuration reload cooldown)
- `SCR_DebugDisplay.c`: 3 fixes (debug log time check)
- `SCR_StaminaUpdateCoordinator.c`: 1 fix (speed calculation time)

- **ExerciseTracker Time Unit Fix**
- Fixed an issue where `ExerciseTracker` expected milliseconds but received seconds.
- Before fix: Time was divided by 1000.0 twice, causing exercise time and rest time accumulation to be 1000 times slower.
- After fix: Correctly passes milliseconds, which `ExerciseTracker` internally converts to seconds.
- Affected areas:
- `PlayerBase.c:113`: `ExerciseTracker.Initialize()` passes milliseconds
- `PlayerBase.c:493`: `currentTimeForExercise` Using Milliseconds
- Impact before the fix:
- Fatigue recovery only started after 16.7 hours (instead of 60 seconds)
- Fast recovery period lasted 50 hours (instead of 3 minutes)
- Medium recovery period lasted 167 hours (instead of 10 minutes)
- After the fix: All time-related functions work correctly.

### Known Issues
- **Stamina recovery speed may be too fast**
- The current recovery speed is based on Optuna optimized parameters, which may feel too fast in actual gameplay.
- The author is not satisfied with the current stamina recovery speed and may adjust it later.
- Recovery speed related parameters:
- `base_recovery_rate`: Base recovery rate (per 0.2 seconds)
- `standing_recovery_multiplier`: Standing recovery multiplier
- `prone_recovery_multiplier`: Prone recovery multiplier
- `FAST_RECOVERY_MULTIPLIER`: Fast recovery period multiplier (3.5x)
- `MEDIUM_RECOVERY_MULTIPLIER`: Medium recovery period multiplier (1.8x)
- Administrators can switch presets by modifying the `m_sSelectedPreset` field in the configuration file.
- Alternatively, manually adjust the recovery speed related parameters in the `Custom` preset.

### Code Statistics
- **SCR_EnvironmentFactor.c**: Fixed swimming wet weight parameter passing (approximately 10 lines modified)
- **PlayerBase.c**: Fixed time unit errors (6 modifications)
- **SCR_JumpVaultDetection.c**: Fixed continuous jump detection time unit (1 modification)
- **SCR_RSS_ConfigManager.c**: Fixed configuration reload cooldown time unit (1 modification)
- **SCR_DebugDisplay.c**: Fixed debug log time unit (3 modifications)
- **SCR_StaminaUpdateCoordinator.c**: Fixed speed calculation time unit (1 modification)
Game Version
1.6.0.108
Created
Tue, 20 Jan 2026 17:29:05 GMT
Last Modified
Tue, 20 Jan 2026 17:29:59 GMT

3.1.0

⚠️ NOTE / 注意:
EN: The mod preview charts and technical graphs on the workshop page have NOT been updated to reflect v3.1.0 values yet. New visualizations are coming soon.
中: 创意工坊页面的模组预览图表尚未更新以反映 v3.1.0 的数值变化。新的可视化图表将很快上传。

[3.1.0] - 2026-01-20
🆕 New Features / 新增特性
Preset-Driven Configuration System / 预设驱动配置系统
EliteStandard: Optimized by AI (Optuna) for elite Milsim. Strict recovery and high load penalties. / 精英拟真模式:基于 Optuna 优化的最严格模式,具有真实的恢复压制和负重惩罚。
TacticalAction: A smoother, faster-paced experience while maintaining biokinetic logic. / 战术动作模式:更流畅的游戏体验,在保留生物力学逻辑的同时提升节奏。
Custom: Allows administrators to manually tune all 11 core parameters. / 自定义模式:允许管理员手动调整所有 11 项核心参数。
Dynamic Parameter Bridging / 动态参数桥接
Core parameters (Recovery, Drain, Encumbrance) are now fetched dynamically from the Config Manager, supporting real-time hot-reloads via JSON. / 所有核心参数(恢复、消耗、负重)现在从配置管理器动态获取,支持 JSON 热重载。
Workbench Automation / 工作台自动化
Automatically forces EliteStandard model and enables debug logs when running in Workbench for developer verification. / 在工作台模式下自动强制使用“精英拟真”模型并开启调试日志,方便验证。
🛠 Improvements / 改进
Enhanced Admin Experience: All parameters in JSON now feature detailed bilingual comments explaining their biological impact and formulas. / 管理员体验优化:JSON 配置文件中的所有参数现在都附带详尽的中英双语注释,说明其生理影响和公式逻辑。
Code Refactoring: Cleaned up StaminaConstants, EncumbranceCache, and PlayerBase to utilize the new modular config architecture. / 代码重构:优化了常量类、负重缓存和角色基类,适配新的模块化配置架构。

[3.0.0] - 2026-01-20
🆕 New Features / 新增特性
Multi-Objective Optimization System / 多目标优化系统
Digital Twin Simulator (Python): A complete mirror of the EnforceScript stamina logic used to run millions of simulations. / 数字孪生仿真器:完全复刻游戏脚本逻辑的 Python 仿真器,用于执行数百万次模拟测试。
Bayesian Optimization (Optuna): Used AI to find the "Pareto Front" between Realism and Playability. / 贝叶斯优化:利用 AI 寻找“拟真度”与“可玩性”之间的帕累托最优平衡点。
13 Standard Test Scenarios: Including ACFT 2-mile run, Everon ruck marches, and fire-assault cycles. / 13项标准测试工况:包括 ACFT 2英里测试、Everon 拉练、火力突击循环等。
Analytical Tools / 分析工具集
Added scripts for Sensitivity Analysis (Spearman Rank Correlation) and visualization (Pareto Fronts, Heatmaps, Radar Charts). / 新增敏感性分析(斯皮尔曼秩相关)与可视化工具(帕累托前沿、热力图、雷达图)。
Automated Reports: Generates professional HTML/Markdown optimization reports. / 自动化报告:自动生成专业的 HTML/Markdown 优化报告。
🛠 Improvements / 改进
Algorithm Efficiency: Optuna Bayesian optimization is 25x faster than traditional GA methods, ensuring high-diversity solution sets. / 算法效率提升:贝叶斯优化比传统遗传算法快 25 倍,且解空间多样性更高。
Scientific Precision: Every Joule of energy expenditure and second of recovery is now backed by data from Pandolf and Givoni-Goldman models. / 科学精度:每一焦耳的能量消耗和每一秒的恢复现在都有 Pandolf 和 Givoni-Goldman 医学模型的数据支持。
🔬 Technical Highlights / 技术亮点
Preset-Driven Architecture: Switch the entire server's biokinetic model with a single line in the JSON config. / 预设驱动架构:仅需修改 JSON 中的一行即可切换整个服务器的体能模型。
AI-Tuned Constants: Constants are no longer "guessed"—they are mathematically derived to match elite soldier performance (Fitness 1.0). / AI 调优常量:常量不再是“猜”出来的,而是通过数学推导以匹配精锐士兵(体能系数 1.0)的表现。
Zero Performance Overhead: Event-driven caching ensures that complex physiological calculations do not impact server FPS. / 零性能损耗:事件驱动的缓存机制确保复杂的生理计算不会影响服务器 FPS。

📊 Code Statistics / 代码统计 (v3.1.0)
New Logic: ~600+ lines of EnforceScript added for config bridging and presets.
Optimization Suite: ~4,500+ lines of Python code for the Digital Twin and Optimizer.
Documentation: Full bilingual JSDoc-style comments for all admin parameters.
Game Version
1.6.0.108
Created
Tue, 20 Jan 2026 15:55:14 GMT
Last Modified
Tue, 20 Jan 2026 15:56:07 GMT

2.17.0

## [2.17.0] - 2026-01-20

### 新增
- **Python模拟器完整优化(Python Simulator Complete Optimization)**
  - **地形因素影响系统**:
    - 铺装路面(1.0x)、碎石路(1.1x)、高草丛(1.2x)、重度灌木丛(1.5x)、软沙地(1.8x)
    - 地形影响因子直接作用于体力消耗率
  - **环境因素影响系统**:
    - 温度影响:基于时间段的热应激计算(10:00-18:00,正午14:00达到峰值)
    - 风速影响:顺风减少消耗(最多10%),逆风增加消耗(最多5%)
    - 表面湿度影响:湿地趴下时的恢复惩罚(15%)
  - **动作成本计算系统**:
    - 跳跃消耗:3.5%体力(单次),连续跳跃50%惩罚(2秒窗口)
    - 攀爬消耗:1%/秒(持续攀爬)
  - **特殊运动模式系统**:
    - 游泳消耗:静态踩水(25W基础)+ 动态v³阻尼
    - 静态站立消耗:Pandolf静态项(1.5·W_body + 2.0·(W_body + L)·(L/W_body)²)
  - **高级修正模型系统**:
    - Santee下坡修正:陡峭下坡(>15%)的修正系数(0.5-1.0)
    - Givoni-Goldman跑步模型:高速跑步(>2.2 m/s)的能量消耗
  - **战斗负重系统**:
    - 战斗负重百分比计算(基于30kg阈值)
    - 战斗负重阈值判断(超过30kg触发)
  - **模拟器参数扩展**:
    - 新增地形类型参数(terrain_type)
    - 新增温度参数(temperature_celsius)
    - 新增风速参数(wind_speed、is_tailwind)
    - 新增表面湿度参数(surface_wetness)
    - 新增姿态参数(is_prone)
    - 新增时间参数(current_hour)
    - 新增室内参数(is_indoor)

### 改进
- **模拟器函数签名更新**:
  - `calculate_stamina_drain()`:新增8个环境参数
  - `simulate_stamina_system()`:新增6个环境参数
  - `plot_trends()`:新增6个环境参数
  - `calculate_temperature_factor()`:新增热应激时间计算
- **测试用例扩展**:
  - 示例1:Run模式,无负重,平地,铺装路面,正午
  - 示例2:Run模式,无负重,平地,软沙地,正午
  - 示例3:Run模式,无负重,平地,铺装路面,上午
- **测试结果验证**:
  - 正午+铺装路面:体力降至50%需要7.86分钟
  - 正午+软沙地:体力降至50%需要4.40分钟(地形影响显著)
  - 上午+铺装路面:体力降至50%需要10.10分钟(热应激影响显著)

### 代码统计
- **simulate_stamina_system.py**:新增12个函数(约450行)
  - `calculate_terrain_factor()` - 地形影响因子
  - `calculate_temperature_factor()` - 温度影响因子(含热应激)
  - `calculate_wind_factor()` - 风速影响因子
  - `calculate_surface_wetness_factor()` - 表面湿度影响因子
  - `calculate_jump_cost()` - 跳跃体力消耗
  - `calculate_climb_cost()` - 攀爬体力消耗
  - `calculate_static_standing_cost()` - 静态站立消耗
  - `calculate_swimming_drain()` - 游泳体力消耗
  - `calculate_santee_downhill_correction()` - Santee下坡修正
  - `calculate_givoni_goldman_running()` - Givoni-Goldman跑步模型
  - `calculate_combat_encumbrance_percent()` - 战斗负重百分比
  - `is_over_combat_encumbrance()` - 战斗负重判断

## [2.17.0] - 2026-01-20

### Added
- **Python Simulator Complete Optimization**
- **Terrain Factor Influence System:**
- Paved road (1.0x), gravel road (1.1x), tall grass (1.2x), dense bushes (1.5x), soft sand (1.8x)
- Terrain influence factor directly affects stamina consumption rate
- **Environmental Factor Influence System:**
- Temperature influence: Heat stress calculation based on time period (10:00-18:00, peaking at 14:00)
- Wind speed influence: Tailwind reduces consumption (up to 10%), headwind increases consumption (up to 5%)
- Surface humidity influence: Recovery penalty when lying down on wet ground (15%)
- **Action Cost Calculation System:**
- Jumping consumption: 3.5% stamina (per jump), 50% penalty for consecutive jumps (2-second window)
- Climbing consumption: 1%/second (continuous climbing)
- **Special Movement Mode System:**
- Swimming consumption: Static treading water (25W base) + dynamic v³ damping
- Static standing consumption: Pandolf static term (1.5·W_body + 2.0·(W_body + L)·(L/W_body)²)
- **Advanced Correction Model System:**
- Santee downhill correction: Correction coefficient (0.5-1.0) for steep downhill slopes (>15%)
- Givoni-Goldman running model: Energy consumption for high-speed running (>2.2 m/s)
- **Combat Load System:**
- Combat load percentage calculation (based on 30kg threshold)
- Combat load threshold judgment (triggered when exceeding 30kg)
- **Simulator Parameter Expansion:**
- Added terrain type parameter (terrain_type)
- Added temperature parameter (temperature_celsius)
- Added wind speed parameters (wind_speed, is_tailwind) - Added surface wetness parameter (surface_wetness)
- Added posture parameter (is_prone)
- Added time parameter (current_hour)
- Added indoor parameter (is_indoor)

### Improvements
- **Simulator function signature updates:**
- `calculate_stamina_drain()`: Added 8 environmental parameters
- `simulate_stamina_system()`: Added 6 environmental parameters
- `plot_trends()`: Added 6 environmental parameters
- `calculate_temperature_factor()`: Added heat stress time calculation
- **Test case expansion:**
- Example 1: Run mode, no load, flat ground, paved surface, noon
- Example 2: Run mode, no load, flat ground, soft sand, noon
- Example 3: Run mode, no load, flat ground, paved surface, morning
- **Test result verification:**
- Noon + paved surface: Stamina drops to 50% in 7.86 minutes
- Noon + soft sand: Stamina drops to 50% in 4.40 minutes (terrain effect is significant)
- Morning + paved surface: Stamina drops to 50% in 10.10 minutes (heat stress effect is significant)

### Code Statistics
- **simulate_stamina_system.py**: Added 12 functions (approximately 450 lines)
- `calculate_terrain_factor()` - Terrain influence factor
- `calculate_temperature_factor()` - Temperature influence factor (including heat stress)
- `calculate_wind_factor()` - Wind speed influence factor
- `calculate_surface_wetness_factor()` - Surface wetness influence factor
- `calculate_jump_cost()` - Jumping stamina cost
- `calculate_climb_cost()` - Climbing stamina cost
- `calculate_static_standing_cost()` - Static standing cost
- `calculate_swimming_drain()` - Swimming stamina drain
- `calculate_santee_downhill_correction()` - Santee downhill correction
- `calculate_givoni_goldman_running()` - Givoni-Goldman running model
- `calculate_combat_encumbrance_percent()` - Calculates combat encumbrance percentage
`is_over_combat_encumbrance()` - Checks if combat encumbrance limit is exceeded
Game Version
1.6.0.108
Created
Mon, 19 Jan 2026 22:51:37 GMT
Last Modified
Mon, 19 Jan 2026 22:52:14 GMT

2.16.0

## [2.16.0] - 2026-01-20

### 新增
- **休息时间累积修复(Rest Time Accumulation Fix)**
  - 修复时间单位错误:`GetWorldTime()` 返回毫秒,需要除以1000转换为秒
  - 使用 idle 状态判断是否休息(静止时间 ≥ 1秒)
  - 避免速度波动导致休息时间频繁重置
- **虚拟气温曲线(Simulated Diurnal Temperature)**
  - 使用余弦函数模拟昼夜温度变化,峰值出现在 14:00
  - 清晨(05:00):最低温 3°C
  - 正午(14:00):最高温 27°C
  - 基于虚拟气温计算热应激,而非固定时间段
- **热应激阈值优化(Heat Stress Threshold)**
  - 将热应激挂钩到阈值(26°C),而非线性时间(10:00-18:00)
  - 只有当虚拟气温超过 26°C 时,才开始计算热应激
  - 倍数 = 1.0 + (虚拟气温 - 阈值) * 0.02
- **静态消耗优化(Static Consumption Optimization)**
  - 降低 `PANDOLF_STATIC_COEFF_1` 从 1.5 到 1.2(降低20%)
  - 降低 `PANDOLF_STATIC_COEFF_2` 从 2.0 到 1.6(降低20%)
  - 30KG站立总消耗从 0.000543/0.2s 降低到约 0.00035/0.2s
- **跳跃和攀爬冷却拦截(Jump/Vault Cooldown Interception)**
  - 跳跃冷却:2秒冷却时间,冷却期间拦截跳跃输入
  - 攀爬冷却:5秒冷却时间,冷却期间拦截攀爬输入
  - 通过设置 `m_bJumpInputTriggered = false` 阻止游戏引擎执行动作

### 改进
- **调试信息优化**
  - 更新环境因子调试信息,显示虚拟气温
  - 格式:`虚拟气温=22°C | 热应激=1.0x | 降雨湿重=0kg | 风速=6.4m/s`## [2.16.0] - 2026-01-20

### Added
- **Rest Time Accumulation Fix**
- Fixed time unit error: `GetWorldTime()` returns milliseconds, which needs to be divided by 1000 to convert to seconds.
- Uses idle state to determine rest (stationary time ≥ 1 second).
- Prevents frequent resetting of rest time due to speed fluctuations.
- **Simulated Diurnal Temperature**
- Uses a cosine function to simulate diurnal temperature changes, with the peak at 14:00.
- Early morning (05:00): Minimum temperature 3°C
- Noon (14:00): Maximum temperature 27°C
- Calculates heat stress based on simulated temperature, not fixed time periods.
- **Heat Stress Threshold Optimization**
- Links heat stress to a threshold (26°C), rather than a linear time period (10:00-18:00).
- Heat stress is only calculated when the simulated temperature exceeds 26°C.
- Multiplier = 1.0 + (Simulated Temperature - Threshold) * 0.02
- **Static Consumption Optimization**
- Reduced `PANDOLF_STATIC_COEFF_1` from 1.5 to 1.2 (20% reduction).
- Reduced `PANDOLF_STATIC_COEFF_2` from 2.0 to 1.6 (20% reduction).
- Total consumption for a 30KG standing person reduced from 0.000543/0.2s to approximately 0.00035/0.2s.
- **Jump and Vault Cooldown Interception**
- Jump cooldown: 2-second cooldown, jump input is intercepted during the cooldown period.
- Vault cooldown: 5-second cooldown, vault input is intercepted during the cooldown period.
- Prevents the game engine from executing the action by setting `m_bJumpInputTriggered = false`.

### Improved
- **Debug Information Optimization**
- Update environmental factor debugging information, displaying virtual temperature:
- Format: `Virtual Temperature = 22°C | Heat Stress = 1.0x | Rainfall Wet Weight = 0kg | Wind Speed ​​= 6.4m/s`
Game Version
1.6.0.108
Created
Mon, 19 Jan 2026 22:16:42 GMT
Last Modified
Mon, 19 Jan 2026 22:17:27 GMT

2.15.0

Game Version
1.6.0.108
Created
Mon, 19 Jan 2026 20:36:43 GMT
Last Modified
Mon, 19 Jan 2026 20:37:36 GMT

2.13.0

## [2.13.0] - 2026-01-19

### Added
- **Deep Physiological Suppression Recovery System**
- Core Concept: Changed from "Net Increase" to "Metabolic Net Value"
- Final Recovery Rate = (Base Recovery Rate × Posture Modifier) ​​- (Load Suppression + Oxygen Debt Penalty)

- **Recovery Cooldown (RECOVERY_COOLDOWN)**
- The system completely stops processing recovery for 5 seconds after stopping exercise.
- Medical Basis: In the first 10-15 seconds after stopping strenuous exercise, the body is in a state of extreme oxygen deficit.
- Game Purpose: To eliminate the guerrilla-style gameplay of "running a few steps, stopping, and instantly recovering health."

- **Static Load Penalty Mechanism for Recovery (LOAD_RECOVERY_PENALTY)**
- Penalty Formula: Penalty = (Current Total Weight / Body Tolerance Baseline)^2 × 0.0004
- Test Results:
- 0kg load: Standing recovery 4.2 minutes
- 30kg load: Standing recovery 20.0 minutes (almost no recovery), prone recovery 0.6 minutes
- 40kg load: Standing recovery 20.0 minutes (almost no recovery), prone recovery 0.7 minutes
- Tactical Intent: To force heavy-armored soldiers to lie down (to offset the load penalty through posture bonuses).

- **Marginal Effect Decay Mechanism (MARGINAL_DECAY)**
- When stamina > 80%, Recovery Rate = Original Recovery Rate × (1.1 - Current Stamina Percentage)
- Test Results:
- Stamina below 80%: Recovery rate 0.86-1.13%/second
- Stamina above 85%: Recovery rate 0.16-0.21%/second (approximately 20-25% of the original)
- Tactical Intent: Players will often be in a "sub-healthy" state of 80%-90% stamina.

- **Minimum Stamina Threshold Limit (MIN_RECOVERY_STAMINA_THRESHOLD)**
- When stamina is <20%, recovery will only begin after remaining stationary for 10 seconds.
- Test results: When stamina is <20% and rest time is <10 seconds, the recovery rate is 0.
- Tactical intent: To prevent players from rapidly recovering stamina by "running a few steps and then stopping" when extremely fatigued.

### Improvements
- **Comprehensive adjustment of recovery system parameters**
- BASE_RECOVERY_RATE: 0.0005 → 0.0003 (Base recovery time extended from 6.6 minutes to 11 minutes)
- RECOVERY_STARTUP_DELAY_SECONDS: 1.5 → 5.0 (Breathing difficulty period extended from 1.5 seconds to 5 seconds)
- STANDING_RECOVERY_MULTIPLIER: 1.0 → 0.4 (Standing recovery efficiency reduced from 100% to 40%)
- CROUCHING_RECOVERY_MULTIPLIER: 1.3 → 1.5 (Crouching recovery efficiency increased from 130% to 150%)
- PRONE_RECOVERY_MULTIPLIER: 1.7 → 2.2 (Prone recovery efficiency increased from 170% to 220%)

### Technical Improvements
- Implemented breathing difficulty period logic (minimum stamina threshold limit)
- Implemented static penalty mechanism for weight on recovery (square penalty model)
- Implemented diminishing marginal returns mechanism (recovery speed significantly reduced when stamina > 80%)
- Implemented minimum stamina threshold limit (10 seconds of rest required when stamina < 20%)
- Updated Python trend graph script to reflect new recovery parameters
- Created a deep physiological suppression recovery system test script
Game Version
1.6.0.108
Created
Mon, 19 Jan 2026 15:23:33 GMT
Last Modified
Mon, 19 Jan 2026 15:24:33 GMT

2.12.0

[2.12.0] - 2026-01-19
Added
Comprehensive Debug Information System
Added bilingual (English and Chinese) debug information output for all key functional modules.
Vehicle Detection Debugging: Displays vehicle status and stamina recovery information.
Speed ​​Calculation Debugging: Outputs current speed information every 5 seconds.
Exhaustion Status Debugging: Outputs prompts when entering/exiting the exhausted state.
Jumping/Vaulting Debugging: Displays stamina consumption information.
Stamina Consumption Parameter Debugging: Displays complete parameters such as type, speed, load, slope, terrain coefficient, posture, heat stress, efficiency, fatigue, and sprint multiplier.
Stamina Recovery Debugging: Displays pre- and post-recovery status, recovery rate, rest time, and heat stress impact.
EPOC Latency Debugging: Displays EPOC state changes.
Indoor Detection Debugging: Displays indoor/outdoor status, number of hit points, and hit rate.
Environmental Factor Debugging: Displays heat stress multiplier, rainfall wet weight, and rainfall status changes.
Native System Interference Detection: Detects and warns of interference with the native stamina system.
Improvements
Optimized Debug Information Output Frequency
Most debug information is limited to outputting once every 5 seconds to avoid excessive logs.
Immediate output when state changes occur (e.g., exhaustion, EPOC, rainfall, etc.).
Balanced the completeness of debug information and the readability of logs.
Extended Debug Display Module
All formatting functions in the SCR_DebugDisplay.c module support bilingual (English and Chinese) output.
Slope information, sprint information, and status information uniformly use bilingual (English and Chinese) format.
Improved internationalization support.
Technical Improvements
Implemented a comprehensive debug information output system.
Unified debug information format (bilingual English and Chinese).
Optimized debug information output frequency mechanism.
Enhanced system observability and troubleshooting capabilities.
Game Version
1.6.0.108
Created
Mon, 19 Jan 2026 13:32:06 GMT
Last Modified
Mon, 19 Jan 2026 13:32:59 GMT

2.11.0

Game Version
1.6.0.108
Created
Mon, 19 Jan 2026 10:23:38 GMT
Last Modified
Mon, 19 Jan 2026 10:24:16 GMT

Showing 1 to 20 of 20 results

Rows per page