ワンクリックで
meta-system
电竞经理游戏的版本更新(Meta)系统。管理20种Meta版本、位置权重、加权战力计算、赛季版本轮换。当需要修改Meta配置、位置权重、战力计算公式、版本轮换规则时使用此技能。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
电竞经理游戏的版本更新(Meta)系统。管理20种Meta版本、位置权重、加权战力计算、赛季版本轮换。当需要修改Meta配置、位置权重、战力计算公式、版本轮换规则时使用此技能。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
电竞经理游戏的数据中心系统。管理选手赛季统计、影响力排行、赛事表现记录、身价变化追踪。当需要修改统计计算、排行榜逻辑、年度评分时使用此技能。
电竞经理游戏的金额单位规范。全项目金额统一以「元」存储和传递,前端使用 formatMoney 系列函数格式化显示。当需要新增金额相关计算、修改身价/薪资/奖金/赞助公式、添加新的金额字段、或排查金额显示异常时使用此技能。
电竞经理游戏的选手系统。管理选手属性、成长曲线、忠诚度、满意度、身价计算。当需要修改选手属性、成长规则、身价公式、忠诚度机制时使用此技能。
电竞经理游戏的时间推进系统。管理赛季阶段、比赛模拟、赛季结算等核心游戏流程。当需要修改游戏进度、阶段推进、比赛模拟逻辑时使用此技能。
电竞经理游戏的选手特性系统。管理14种选手特性的定义、触发条件、修正计算、随机生成、互斥规则。特性影响比赛模拟中选手的ability/stability/condition。当需要修改特性效果、添加新特性、调整触发条件、修改生成规则时使用此技能。
电竞经理游戏的转会系统。8轮制转会流程、AI球队性格、选手评估、自由球员竞标、转会谈判、跨赛区转会偏好值。当需要修改转会规则、AI决策逻辑、转会流程、跨赛区意愿度时使用此技能。
| name | meta-system |
| description | 电竞经理游戏的版本更新(Meta)系统。管理20种Meta版本、位置权重、加权战力计算、赛季版本轮换。当需要修改Meta配置、位置权重、战力计算公式、版本轮换规则时使用此技能。 |
版本更新系统模拟电竞游戏中的"版本"(Meta)概念。每个赛季拥有不同的版本,版本决定了各位置(TOP/JUG/MID/ADC/SUP)对队伍战力的贡献权重。系统包含 20 种预定义 Meta,每赛季随机切换,直接影响队伍战力计算和比赛模拟结果。
文件: src-tauri/src/engines/meta_engine.rs
Meta 引擎核心,负责版本轮换和加权战力计算。
pub struct MetaEngine;
impl MetaEngine {
/// 为新赛季随机生成 Meta,写入数据库
pub async fn roll_new_meta(pool: &SqlitePool, save_id: &str, season: i64) -> Result<(), String>
/// 获取当前赛季的 Meta 权重
pub async fn get_current_weights(pool: &SqlitePool, save_id: &str, season: i64) -> MetaWeights
/// 使用 Meta 权重计算队伍战力(加权平均 + carry/drag 效应)
pub fn calculate_team_power_weighted(performances: &[(f64, &str)], weights: &MetaWeights) -> f64
}
pub enum MetaType {
Balanced, // 均衡版本
MidKingdom, // 中路为王
BotLaneDominance, // 下路统治
TopLaneCarry, // 上单Carry
JungleTempo, // 打野节奏
SupportEra, // 辅助时代
DualCarry, // 双C输出
SoloLaneMeta, // 单人线版本
TeamfightMeta, // 团战版本
EarlyGameAggro, // 前期进攻
LateGameScaling, // 后期发育
SplitPushMeta, // 分推版本
VisionControl, // 视野控制
PickComposition, // 抓单阵容
ProtectTheCarry, // 保护输出
DiveComposition, // 开团版本
SkirmishMeta, // 小规模团战
ObjectiveControl, // 资源控制
MidJungleSynergy, // 中野联动
TopJungleSynergy, // 上野联动
}
pub struct MetaWeights {
pub top: f64,
pub jug: f64,
pub mid: f64,
pub adc: f64,
pub sup: f64,
}
每种 Meta 的 5 个位置权重之和 = 5.0(归一化)。
替代原有的简单算术平均(5 名选手 ability / 5),引入三步计算:
// 第1步:加权均值
let weighted_avg = Σ(meta_weight[pos] × actual_ability) / 5.0;
// 第2步:carry/drag 效应
const CARRY_RATE: f64 = 0.3; // 强于均值 → 正面贡献
const DRAG_RATE: f64 = 0.5; // 弱于均值 → 负面拖累
let carry_drag = Σ(
if ability > weighted_avg: (ability - weighted_avg) × CARRY_RATE
if ability < weighted_avg: (ability - weighted_avg) × DRAG_RATE
);
// 第3步:最终战力
let team_power = weighted_avg + carry_drag;
设计意图:
Balanced(均衡版本)| 编号 | ID | 中文名称 | TOP | JUG | MID | ADC | SUP |
|---|---|---|---|---|---|---|---|
| 1 | Balanced | 均衡版本 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| 2 | MidKingdom | 中路为王 | 0.85 | 0.90 | 1.40 | 0.95 | 0.90 |
| 3 | BotLaneDominance | 下路统治 | 0.80 | 0.90 | 0.90 | 1.35 | 1.05 |
| 4 | TopLaneCarry | 上单Carry | 1.35 | 0.90 | 0.90 | 0.90 | 0.95 |
| 5 | JungleTempo | 打野节奏 | 0.85 | 1.40 | 0.90 | 0.95 | 0.90 |
| 6 | SupportEra | 辅助时代 | 0.90 | 0.90 | 0.90 | 0.90 | 1.40 |
| 7 | DualCarry | 双C输出 | 0.80 | 0.80 | 1.20 | 1.30 | 0.90 |
| 8 | SoloLaneMeta | 单人线版本 | 1.25 | 0.80 | 1.20 | 0.85 | 0.90 |
| 9 | TeamfightMeta | 团战版本 | 0.90 | 0.90 | 1.10 | 1.15 | 0.95 |
| 10 | EarlyGameAggro | 前期进攻 | 0.90 | 1.30 | 1.00 | 0.90 | 0.90 |
| 11 | LateGameScaling | 后期发育 | 0.85 | 0.85 | 1.05 | 1.30 | 0.95 |
| 12 | SplitPushMeta | 分推版本 | 1.30 | 0.90 | 1.00 | 0.85 | 0.95 |
| 13 | VisionControl | 视野控制 | 0.85 | 1.10 | 0.90 | 0.85 | 1.30 |
| 14 | PickComposition | 抓单阵容 | 0.90 | 1.25 | 1.10 | 0.85 | 0.90 |
| 15 | ProtectTheCarry | 保护输出 | 0.80 | 0.85 | 0.90 | 1.35 | 1.10 |
| 16 | DiveComposition | 开团版本 | 1.10 | 1.15 | 0.95 | 0.85 | 0.95 |
| 17 | SkirmishMeta | 小规模团战 | 0.95 | 1.20 | 1.15 | 0.80 | 0.90 |
| 18 | ObjectiveControl | 资源控制 | 0.90 | 1.25 | 0.95 | 1.00 | 0.90 |
| 19 | MidJungleSynergy | 中野联动 | 0.80 | 1.20 | 1.25 | 0.85 | 0.90 |
| 20 | TopJungleSynergy | 上野联动 | 1.20 | 1.20 | 0.85 | 0.85 | 0.90 |
CREATE TABLE meta_versions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
save_id TEXT NOT NULL,
season_id INTEGER NOT NULL,
meta_type TEXT NOT NULL,
meta_name TEXT NOT NULL,
weight_top REAL NOT NULL,
weight_jug REAL NOT NULL,
weight_mid REAL NOT NULL,
weight_adc REAL NOT NULL,
weight_sup REAL NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
FOREIGN KEY (save_id) REFERENCES saves(id) ON DELETE CASCADE
);
CREATE UNIQUE INDEX idx_meta_versions_save_season ON meta_versions(save_id, season_id);
文件: src-tauri/src/commands/meta_commands.rs
| 命令 | 功能 | 返回类型 |
|---|---|---|
get_current_meta(save_id) | 获取当前赛季版本信息 | MetaInfo |
get_meta_history(save_id) | 获取历史版本列表 | Vec<MetaHistoryEntry> |
get_all_meta_types() | 获取全部 20 种 Meta 配置 | Vec<MetaTypeInfo> |
get_meta_detail(meta_type) | 获取指定 Meta 详细信息 | MetaTypeInfo |
文件: src-tauri/src/models/meta.rs
pub struct MetaInfo {
pub season_id: i64,
pub meta_type: String,
pub meta_name: String,
pub description: String,
pub weights: MetaWeightsInfo,
}
pub struct MetaHistoryEntry {
pub season_id: i64,
pub meta_type: String,
pub meta_name: String,
pub weight_top: f64,
pub weight_jug: f64,
pub weight_mid: f64,
pub weight_adc: f64,
pub weight_sup: f64,
}
pub struct MetaTypeInfo {
pub id: String,
pub name: String,
pub description: String,
pub weights: MetaWeightsInfo,
}
advance_to_new_season() 在重置年度积分后、确认首发前,调用 MetaEngine::roll_new_meta() 生成新赛季版本src-tauri/src/services/game_flow/match_simulation.rssimulate_match_detailed() 在模拟前获取当前 Meta 权重simulate_game_with_players() 和 generate_team_stats() 使用加权计算替代简单平均src-tauri/src/commands/match_commands.rsrecalculate_team_powers() 查询首发选手 + 位置,调用 calculate_team_power_weighted() 计算加权战力src-tauri/src/services/game_flow/match_simulation.rsuse crate::engines::meta_engine::{MetaType, get_meta_weights};
let weights = get_meta_weights(MetaType::MidKingdom);
// weights.mid = 1.40 (中路权重最高)
use crate::engines::MetaEngine;
let performances = vec![
(80.0, "Top"),
(75.0, "Jungle"),
(95.0, "Mid"),
(85.0, "Adc"),
(70.0, "Support"),
];
let weights = get_meta_weights(MetaType::MidKingdom);
let power = MetaEngine::calculate_team_power_weighted(&performances, &weights);
// 中路为王版本下,95 能力的中单贡献更大
MetaEngine::roll_new_meta(&pool, &save_id, new_season).await?;