Files
2nd/10_Wiki/Topics/Game_Design/World War Rising.md
T
koriweb d8a80f6272 chore(wiki): dangling 링크 canonical 정규화 (768파일/1200건)
이름만 다른(표기 변형) [[위키링크]]를 대상 문서의 canonical 제목으로 치환해
끊겼던 1,200개 링크를 연결. 제목/파일명 정규화 일치만 적용하고 별칭 매칭은
과병합 위험으로 제외(애매성 가드). 원본은 _link_reconcile_backup/ 에 백업.
도구: Datacollect/scripts/link_reconcile_apply.mjs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 12:24:15 +09:00

6.5 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-world-war-rising World War Rising 10_Wiki/Topics verified self
WWR
World War Rising MMO
none A 0.85 applied
4x-mobile
mmo-strategy
alliance-warfare
ww2-skin
2026-05-10 pending
language framework
Lua/C++ Cocos2d-x + custom server

World War Rising

매 한 줄

"매 4X mobile MMO + WW2 skin". 매 IGG (Lords Mobile dev) 매 2018-launched WW2-themed MMO strategy. 매 Mobile Strike / Game of War lineage 매 commander gacha + alliance kingdom war + research tree + VIP layered monetization 의 standard mid-core 4X 의 instance. 매 매 매 LTV-driven design 의 textbook.

매 핵심

매 game loop

  1. Build: HQ + production buildings + defense.
  2. Research: 4 trees (Economy / Military / Defense / Combat).
  3. Train troops: T1-T11 tier escalation, multi-day timers.
  4. Gather: Map resources (Food/Oil/Iron/Steel).
  5. Attack/Defend: PvP rallies, monster hunts.
  6. Alliance: Kingdom-wide warfare, capital siege events.

매 monetization layers

  • VIP: 1-15 levels, $0.99-$10K spend total.
  • Commanders (gacha): Pull 5-star unique commanders.
  • Speedups: 1m / 5m / 1h / 8h / 24h timer skip.
  • Resource packs: Food/Oil/Iron/Steel bundles.
  • Event packs: Limited-time bundles tied to LiveOps.

매 social mechanics

  • 매 Alliance (max 100): chat, helps, donations, gifts.
  • 매 Kingdom (server): 1000-3000 players, 매 KvK warfare.
  • 매 Capital tier sieges: 매 monthly, 매 alliance-vs-alliance.
  • 매 cross-server events: 매 inter-kingdom raids.

💻 패턴

Building upgrade timer

struct Building {
    int level;
    std::chrono::system_clock::time_point upgradeEndsAt;
    bool upgradeActive;

    void StartUpgrade(int seconds) {
        upgradeActive  = true;
        upgradeEndsAt  = std::chrono::system_clock::now() + std::chrono::seconds(seconds);
    }

    bool TickComplete() {
        if (!upgradeActive) return false;
        if (std::chrono::system_clock::now() >= upgradeEndsAt) {
            level++;
            upgradeActive = false;
            return true;
        }
        return false;
    }

    int SecondsRemaining() const {
        if (!upgradeActive) return 0;
        auto rem = upgradeEndsAt - std::chrono::system_clock::now();
        return std::chrono::duration_cast<std::chrono::seconds>(rem).count();
    }
};

Speedup item application

function ApplySpeedup(buildingId, speedupSeconds)
    local b = state.buildings[buildingId]
    if not b.upgradeActive then return false end
    b.upgradeEndsAt = b.upgradeEndsAt - speedupSeconds
    if b.upgradeEndsAt <= os.time() then
        b.upgradeEndsAt = os.time()
    end
    Analytics.Log("speedup_used", { building=buildingId, seconds=speedupSeconds })
    return true
end

Commander gacha pull (10x)

local POOL = {
    common   = { weight = 70, range = "C" },
    rare     = { weight = 22, range = "R" },
    epic     = { weight = 6,  range = "E" },
    legend   = { weight = 1.8,range = "L" },
    mythic   = { weight = 0.2,range = "M" },
}

local function rollOne(ssrPityActive)
    if ssrPityActive then return PickFrom("legend") end
    local roll = math.random() * 100
    local cum = 0
    for tier, info in pairs(POOL) do
        cum = cum + info.weight
        if roll < cum then return PickFrom(tier) end
    end
    return PickFrom("common")
end

function PullTen(player)
    local results = {}
    local pity = (player.pullsSinceLastL >= 90)
    for i = 1, 10 do
        local c = rollOne(pity and i == 10)
        table.insert(results, c)
        if c.tier == "L" then player.pullsSinceLastL = 0
        else player.pullsSinceLastL = player.pullsSinceLastL + 1 end
    end
    return results
end

Alliance rally aggregation

struct Rally {
    int leaderId;
    int targetId;
    std::vector<TroopBatch> participants;
    std::chrono::time_point<std::chrono::system_clock> launchAt;
    int maxJoiners;

    void Join(int playerId, TroopBatch troops) {
        if ((int)participants.size() >= maxJoiners) return;
        if (std::chrono::system_clock::now() >= launchAt) return;
        participants.push_back(troops);
        Notify(leaderId, "{} joined rally", playerId);
    }

    CombatPower TotalPower() const {
        CombatPower total{};
        for (const auto& p : participants) total += p.power();
        return total;
    }
};

VIP daily reward (tier-scaled)

VIP_DAILY = {
    1:  {"speedup_min": 5,   "gold": 10},
    5:  {"speedup_min": 30,  "gold": 100, "resource_pack": "S"},
    10: {"speedup_min": 120, "gold": 500, "resource_pack": "M",
          "commander_token": 1},
    15: {"speedup_min": 480, "gold": 2000, "resource_pack": "L",
          "commander_token": 5, "exclusive_skin": True},
}

def grant_vip_daily(player):
    bucket = max(k for k in VIP_DAILY.keys() if k <= player.vip_level)
    rewards = VIP_DAILY[bucket]
    apply_rewards(player, rewards)
    log("vip_daily", player.id, bucket, rewards)

매 결정 기준

상황 Approach
F2P player Focus alliance gifts + daily login
Mid-spender VIP 8-10 + selective commander pulls
Whale/leader Capital siege investment + max VIP
Kingdom war prep Save speedups, train T11 troops
Server merge incoming Liquidate inflated resources

기본값: 매 alliance-first play + 매 daily VIP claim + 매 selective LiveOps participation.

🔗 Graph

🤖 LLM 활용

언제: 4X mobile MMO design reference, gacha + speedup + VIP layered monetization 의 case study. 언제 X: Console RTS — 매 mobile timer-gated economy 의 model X.

안티패턴

  • Solo play: 매 alliance 외 의 stuck — 매 mid-game wall 매 hit.
  • Skip research: 매 troop tier escalation 의 미달 — 매 KvK 의 outclassed.
  • Hoarding speedups: 매 server merge 의 anti-pattern — 매 strategic timing 필요.

🧪 검증 / 중복

  • Verified (IGG WWR product page, AppMagic 2024 mid-core revenue data, community wiki).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — WWR 4X loop w/ gacha + VIP + rally