--- id: wiki-2026-0508-world-war-rising title: World War Rising category: 10_Wiki/Topics status: verified canonical_id: self aliases: [WWR, World War Rising MMO] duplicate_of: none source_trust_level: A confidence_score: 0.85 verification_status: applied tags: [4x-mobile, mmo-strategy, alliance-warfare, ww2-skin] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: Lua/C++ framework: 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 ```cpp 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(rem).count(); } }; ``` ### Speedup item application ```lua 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) ```lua 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 ```cpp struct Rally { int leaderId; int targetId; std::vector participants; std::chrono::time_point 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) ```python 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 - 변형: [[Mobile Strike]] · [[Game of War]] - 응용: [[Kingdom vs Kingdom]] - Adjacent: [[Gacha Mechanics Analysis]] · [[게임 디자인 및 가상 경제 시스템|VIP System]] · [[Power Creep (Content Treadmills)]] ## 🤖 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 |