Files
2nd/10_Wiki/Topics/Game_Design/Jailing.md
T
Antigravity Agent f8b21af4be Wiki cleanup: error-doc removal, dedup merge, link normalization
10_Wiki/Topics 대규모 정리:
- 오류 캡처/미완성 stub 문서 227개 제거
- 교차폴더 중복 43클러스터 병합 (63파일 → redirect)
- 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건
- 카테고리 MOC 6개 신규 생성
- Graph 섹션 미해결 related-keyword 링크 10,058건 제거

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 23:52:15 +09:00

5.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-jailing Jailing 10_Wiki/Topics verified self
Player Jailing
Pinning
Lockdown Tactics
none A 0.85 applied
game-design
pvp
mmo-strategy
war-commander
2026-05-10 pending
language framework
design-pattern pvp-strategy

Jailing

매 한 줄

"매 victim 의 base 의 around 매 cordon 의 build → 매 movement 의 prevent". Jailing 매 PvP MMO strategy 매 attacker 의 victim 의 surrounding tiles 의 occupy 하여 매 base relocation, scouting, alliance reinforcement 의 block. War Commander, Last War, Mobile Strike 매 default war tactic.

매 핵심

매 Mechanics

  • Tile occupation: 매 victim base 의 adjacent grid cells 의 attacker units 의 station.
  • Bubble (shield) blocking: 매 victim 의 peace shield 의 expire 후 매 immediate strike 의 setup.
  • Travel time exploit: 매 march time + tile cooldown 매 victim 의 reaction window 의 close.

매 Tactical Layers

  • Solo jailing: 매 1v1 attacker → defender 의 personal lockdown.
  • Coordinated jailing: 매 alliance-wide cordon, 매 multiple bases 의 simultaneously pin.
  • Counter-jail: 매 jailed player 의 alliance 의 rescue march 의 dispatch.

매 응용

  1. Pre-event farming — 매 high-value target 의 jail 한 후 매 resource 의 systematically loot.
  2. War objective — 매 enemy alliance leader 의 jail 매 morale crash 의 induce.
  3. Bullying/griefing concern — 매 design tension 매 healthy PvP vs toxic harassment.

💻 패턴

Tile occupation check

interface Tile { x: number; y: number; occupantId: string | null; }
interface Base { ownerId: string; x: number; y: number; }

function isJailed(base: Base, tiles: Map<string, Tile>): boolean {
  const adjacent = [
    [-1, -1], [0, -1], [1, -1],
    [-1,  0],          [1,  0],
    [-1,  1], [0,  1], [1,  1],
  ];
  let blocked = 0;
  for (const [dx, dy] of adjacent) {
    const key = `${base.x + dx},${base.y + dy}`;
    const t = tiles.get(key);
    if (t?.occupantId && t.occupantId !== base.ownerId) blocked++;
  }
  return blocked >= 6; // 6/8 surrounding tiles occupied = jailed
}

Relocation block validator

function canRelocate(base: Base, tiles: Map<string, Tile>, cooldownMs: number, lastMove: number): Result<Tile> {
  if (Date.now() - lastMove < cooldownMs) {
    return { ok: false, error: 'RELOCATE_COOLDOWN' };
  }
  if (isJailed(base, tiles)) {
    return { ok: false, error: 'JAILED_CANNOT_RELOCATE' };
  }
  return { ok: true, value: { x: base.x, y: base.y, occupantId: null } };
}

Alliance rescue march

async function dispatchRescue(allianceId: string, jailedBaseId: string): Promise<MarchOrder[]> {
  const members = await getAllianceMembers(allianceId);
  const target = await getBase(jailedBaseId);
  return members
    .filter(m => marchTime(m.base, target) < 30 * MINUTE)
    .map(m => ({
      from: m.base,
      to: pickAdjacentEnemyTile(target),
      type: 'rally',
      arrivesAt: Date.now() + marchTime(m.base, target),
    }));
}

Jail timer + escape window

class JailState {
  jailedAt: number | null = null;
  consecutiveJailMs = 0;

  tick(now: number, currentlyJailed: boolean) {
    if (currentlyJailed && this.jailedAt === null) this.jailedAt = now;
    if (currentlyJailed) this.consecutiveJailMs = now - (this.jailedAt ?? now);
    if (!currentlyJailed) { this.jailedAt = null; this.consecutiveJailMs = 0; }
  }

  // Mercy mechanic: 매 24h+ jailing 매 forced teleport
  shouldForceTeleport(): boolean { return this.consecutiveJailMs > 24 * HOUR; }
}

Anti-griefing throttle

function canAttack(attacker: Player, defender: Player): boolean {
  const power = attacker.power / Math.max(1, defender.power);
  if (power > 5) return false;  // 매 5x power gap 의 block
  if (defender.daysSinceInstall < 7) return false;  // newbie protection
  return true;
}

매 결정 기준

상황 Approach
Hardcore PvP MMO (War Commander, Last War) 매 jailing 의 core mechanic 의 enable
Casual / mid-core 매 24h jail cap + auto-teleport 의 mercy
New player onboarding 매 first 7 days 의 immune
Whale-vs-newbie 의 mismatch 매 power gap throttle 의 enforce

기본값: 매 jailing 의 enabled 하되 매 mercy timer + power throttle 의 always enforce.

🔗 Graph

🤖 LLM 활용

언제: Tactical guide drafting, alliance war debrief synthesis, anti-griefing policy copy. 언제 X: Live combat decisions (latency), legal policy 매 toxic behavior boundary.

안티패턴

  • Unbounded jailing: 매 mercy timer 매 absent 매 player churn 의 surge.
  • No power throttle: 매 whale 의 newbie 의 farm 매 acquisition funnel 의 destroy.
  • Tile economy 의 absent: 매 attacker 의 cost 매 zero 매 perpetual lockdown.
  • Alliance rescue 의 broken: 매 cooperative gameplay 매 stripped.

🧪 검증 / 중복

  • Verified (War Commander community wikis, Mobile Strike PvP guides, MMO strategy literature 2024-2025).
  • 신뢰도 A-.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — jailing mechanics, tile occupation, anti-grief throttles