外观
肉鸽秘境 · 技术实现
「玩家设定 →」随机构筑肉鸽玩法:35 种祝福 / 8 类事件 / 商店 / 评分排行,全部数值在 Java 配置类与
SecretRealmConstants。
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/SecretRealmController(/api/secret-realm) | 总览/进入/选房间/选祝福/战斗/商店/结算/排行 |
| config | config/SecretRealmBuffConfig | 35 个祝福模板(initBuffTemplates,攻击 12 + 防御 8 + 特效 10 + 诅咒 5) |
| config | config/SecretRealmEventConfig | 8 类事件模板(仙人指路 20% / 神秘商人 15% / 祭坛献祭 15% / 诅咒宝箱 15% / 灵泉 10% / 赌徒 10% / 传送阵 10% / 空房间 5%) |
| Service | service/SecretRealmService | 跑局状态机(进入→房间→战斗→结算) |
| Service | service/SecretRealmBuffService、service/SecretRealmBuffRegistry | 祝福选择/叠加/应用 |
| Service | service/SecretRealmEventService、service/SecretRealmShopService、service/SecretRealmStateStore、service/SecretRealmCleanupScheduler | 事件/商店/状态存储/清理 |
| domain | domain/SecretRealmConstants | 规则常量:每日 3 令牌、3 列地图、祝福选择 2/3、商店价格(50/120/250/500)、事件概率(赌徒 50%)、传送 1~2 层 |
| domain | domain/SecretRealmBuffCategory、SecretRealmBuffRarity、SecretRealmBuffTemplate、SecretRealmBuffInstance | 祝福模型(COMMON/RARE/EPIC/LEGENDARY) |
| domain | domain/SecretRealmRunState、SecretRealmRunPhase、SecretRealmFloor、SecretRealmRoom、SecretRealmRoomType、SecretRealmMode、SecretRealmDifficulty、SecretRealmRating、SecretRealmScore、SecretRealmEventTemplate、SecretRealmShopItemType | 跑局/房间/难度/评分模型 |
| balance | BalanceTrack.SECRET_REALM(V85 占位轨道) | 成长轨道闭合(unitCost × targetDays 恒等式占位) |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
secret_realm_run_state | player_id、run_id、phase、floor、hp_percent、rating | 跑局状态机(V84,V86 状态机迁移) |
secret_realm_score | player_id、run_id、score、floor、hp_percent、rank | 评分与排行(V84) |
player_secret_realm | player_id、daily_tokens、last_reset_at、total_runs | 玩家秘境总状态(V84) |
3. 配置与常量
- 规则常量:
名称 数值 说明 defaultDailyTokensDEFAULT_DAILY_TOKENS 3 — initialHpPercentINITIAL_HP_PERCENT 100.0 — startColumnSTART_COLUMN 1 — totalColumnsTOTAL_COLUMNS 3 — normalBuffChoicesNORMAL_BUFF_CHOICES 2 — eliteBuffChoicesELITE_BUFF_CHOICES 3 — maxRateMAX_RATE 1.0 — maxDamageReductionMAX_DAMAGE_REDUCTION 0.90 — procDamageMultiplierPROC_DAMAGE_MULTIPLIER 3.0 — reviveHpPercentREVIVE_HP_PERCENT 1.0 — restRoomHealPercentREST_ROOM_HEAL_PERCENT 30.0 — springDrinkHealSPRING_DRINK_HEAL 20.0 — springBathHealSPRING_BATH_HEAL 50.0 — altarHpCostALTAR_HP_COST 30.0 — gamblerSuccessRateGAMBLER_SUCCESS_RATE 0.5 — teleportMinFloorsTELEPORT_MIN_FLOORS 1 — teleportMaxFloorsTELEPORT_MAX_FLOORS 2 — shopCommonBuffPriceSHOP_COMMON_BUFF_PRICE 50 — shopRareBuffPriceSHOP_RARE_BUFF_PRICE 120 — shopEpicBuffPriceSHOP_EPIC_BUFF_PRICE 250 — shopLegendaryBuffPriceSHOP_LEGENDARY_BUFF_PRICE 500 — shopHealPriceSHOP_HEAL_PRICE 80 — shopRemoveCursePriceSHOP_REMOVE_CURSE_PRICE 200 — shopRefreshPriceSHOP_REFRESH_PRICE 30 — maxShopRefreshPerFloorMAX_SHOP_REFRESH_PER_FLOOR 3 — sRatingHpThresholdS_RATING_HP_THRESHOLD 80.0 — sRatingMaxFloorsS_RATING_MAX_FLOORS 12 — aRatingHpThresholdA_RATING_HP_THRESHOLD 50.0 — cRatingMinFloorsC_RATING_MIN_FLOORS 6 — scorePerFloorSCORE_PER_FLOOR 100 — scorePerHpPercentSCORE_PER_HP_PERCENT 50 — floorCurveEarlyFLOOR_CURVE_EARLY 0.06 — floorCurveMidFLOOR_CURVE_MID 0.10 — floorCurveLateFLOOR_CURVE_LATE 0.16 — bossFloorMultiplierBOSS_FLOOR_MULTIPLIER 1.5 — runStateCacheTtlSecondsRUN_STATE_CACHE_TTL_SECONDS 1800 30分钟 lockTimeoutSecondsLOCK_TIMEOUT_SECONDS 30 — lockKeyPrefixLOCK_KEY_PREFIX "secret-realm:" — mapGenerationMaxRetriesMAP_GENERATION_MAX_RETRIES 3 — buffRollMaxAttemptsBUFF_ROLL_MAX_ATTEMPTS 100 — floatPrecisionScaleFLOAT_PRECISION_SCALE 100 — percentMinPERCENT_MIN 0.0 — percentMaxPERCENT_MAX 100.0 — secretRealmMaterialLimitIdSECRET_REALM_MATERIAL_LIMIT_ID 5117L — secretRealmMaterialLimitNameSECRET_REALM_MATERIAL_LIMIT_NAME "肉鸽秘境材料限额" — secretRealmMaterialDailyLimitSECRET_REALM_MATERIAL_DAILY_LIMIT 200 — secretRealmEssenceItemIdSECRET_REALM_ESSENCE_ITEM_ID 9110L — secretRealmEssenceItemNameSECRET_REALM_ESSENCE_ITEM_NAME "秘境精华" — 来源:emberfall-server/src/main/java/com/emberfall/domain/SecretRealmConstants.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - 祝福模板(35 个,结构
code/名称/分类/稀有度/效果/数值/叠加上限):来源:emberfall-server/src/main/java/com/emberfall/config/SecretRealmBuffConfig.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - 事件模板:来源:
emberfall-server/src/main/java/com/emberfall/config/SecretRealmEventConfig.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - 关键数值(findings 复核):评分 = 100/层 + 50/HP%;怪物缩放 0.06/0.10/0.16(三档)、BOSS ×1.5;商店 50~500;材料日限 200;伤害减免上限 90%、暴击率上限 100%
- yml 键:无(全量 Java 配置)
4. 数据流简述
POST /api/secret-realm/enter 校验每日 3 令牌(player_secret_realm.daily_tokens,0 点重置)并创建跑局(3 列地图、中间起始)。每层三选一房间(战斗/精英/休息/事件/商店/宝箱),战斗按 SecretRealmDifficulty 缩放怪物(0.06/0.10/0.16 + BOSS×1.5),胜利后按战斗类型弹 2~3 个祝福选择(SecretRealmBuffService 应用 SecretRealmBuffTemplate 效果)。事件经 SecretRealmEventService 按概率抽取并结算选项。商店购买祝福/回血/去诅咒(价格 SecretRealmConstants)。结算按 100/层 + 50/HP% 评分写 secret_realm_score,令牌扣减与材料日限(200)在 player_secret_realm 与限额池登记。
5. 已知差异
无
6. 相关代码
- 余烬试炼场(
TrialRewardLimitService:神石日限共享) - 打金副本(
GoldDungeonRules:材料日限池同源) - 排行榜(
SecretRealmScore→ 评分排行) - 成长轨道(
BalanceTrack.SECRET_REALM占位闭合)