[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-05-10 22:08:15 +09:00
parent 21ac3ed255
commit 504fd5fb42
3011 changed files with 380280 additions and 206977 deletions
+193 -121
View File
@@ -2,147 +2,219 @@
id: wiki-2026-0508-base-layouts
title: Base Layouts
category: 10_Wiki/Topics
status: needs_review
status: verified
canonical_id: self
aliases: []
aliases: [layout-primitives, app-shell, holy-grail-layout]
duplicate_of: none
source_trust_level: A
confidence_score: 0.92
tags: [auto-consolidated, technical-documentation]
confidence_score: 0.9
verification_status: applied
tags: [layout, css, ui, responsive, shell]
raw_sources: []
last_reinforced: 2026-05-08
last_reinforced: 2026-05-10
github_commit: pending
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
tech_stack:
language: unspecified
framework: unspecified
language: tsx
framework: tailwind
---
# [[Base Layouts|Base Layouts]]
# Base Layouts
## 📌 한 줄 통찰 (The Karpathy Summary)
War Commander에서 Base Layouts은 사령부(Command Center), 자원 저장소, 발전소와 같은 핵심 인프라를 보호하기 위해 건물, 포탑, 장벽, 방어 유닛을 전략적으로 배치하는 것을 의미합니다 [1-3]. 이는 공격자가 겹치는 화망과 함정 구역을 통과하도록 강제하는 기하학적 억지력(Geometric Deterrence)으로 작용합니다 [3]. 궁극적인 목표는 공격자의 전략에 지속적으로 적응하고 전술을 수정하여 80% 이상의 방어 성공률을 유지하는 것입니다 [1].
## 한 줄
> **"매 layout 의 primitive 의 reuse 한다"**. 매 base layout 의 application shell — 매 header / sidebar / main / footer 의 stable scaffolding. 매 2026 의 CSS Grid + Flexbox + Container Queries (baseline 2024) + `dvh/svh/lvh` viewport units 의 holy-grail 의 trivial 의 만들었다.
---
## 매 핵심
기지 레이아웃은 게임 내에서 자원을 보호하고 적의 공격을 방어하기 위해 건물을 기하학적으로 배치하는 끊임없이 변화하는 퍼즐입니다 [1, 2]. 효과적인 기지 설계는 방어 구조물과 포탑을 활용하여 겹치는 사격망(kill zones)을 만들고, 명령 센터와 같은 핵심 인프라를 보호하는 데 중점을 둡니다 [2, 3]. 플레이어는 방어 성공률을 높이고 적의 다양한 메타에 대응하기 위해 스퀘어 베이스나 블리츠 베이스 등 특정 전술 철학이 담긴 레이아웃을 구성하게 됩니다 [4, 5].
### 매 canonical layouts
- **Stack**: 매 vertical flow — header/main/footer.
- **Sidebar**: 매 nav + content — 2-column.
- **Holy Grail**: 매 header + nav + main + aside + footer.
- **Centered (Cover)**: 매 hero / login.
- **Split-pane**: 매 editor / preview, mail client.
- **Dashboard grid**: 매 card grid — 매 auto-fit minmax.
---
### 매 modern primitives (2024-2026)
- **CSS Grid `subgrid`**: 매 nested alignment (Firefox 71, Chrome 117, Safari 16).
- **Container queries**: 매 component-level responsive (`@container`).
- **`dvh` / `svh` / `lvh`**: 매 mobile address-bar 의 stable viewport.
- **`:has()`**: 매 parent selector — 매 layout 의 child-state-driven.
- **Anchor positioning** (Chrome 125+): 매 popover / tooltip 의 native.
War Commander에서 기지 방어 레이아웃은 적의 공격으로부터 자원, 지휘 본부(Command Center), 발전소를 보호하기 위해 방어 건물과 유닛을 전략적으로 배치하는 끊임없이 변화하는 퍼즐이다 [1-3]. 성공적인 방어는 공격자가 여러 킬존(Kill zones)을 통과하도록 유도하여 방어 효율을 극대화하는 형태적 계층화(Geometric layering)에 기반한다 [3]. 목표는 기지 방어율을 80% 이상으로 유지하는 것이며, 리플레이를 통해 적의 접근 경로를 파악하여 레이아웃을 지속적으로 개선해야 한다 [1, 4].
### 매 응용
1. Admin dashboard.
2. Editor (VS Code-style).
3. Marketing landing.
4. Mobile app shell — 매 bottom nav.
## 📖 구조화된 지식 (Synthesized Content)
* **핵심 원칙 및 주요 구조물 보호:** 효율적인 기지 설계는 형태보다 기능을 우선시합니다. 사령부, 자원 저장 시설, 발전소는 기지 중앙에 배치하고, 그 주위를 덜 중요한 건물과 방어선으로 둘러싸야 합니다 [2, 3]. 특히 전력이 부족하면 포탑의 발사 속도가 느려지고 자원 생산이 감소하므로 발전소를 장벽과 포탑으로 철저히 보호하는 것이 필수적입니다 [4, 5]. 또한, 군수 공장(War Factory), 헬기장(Helipad), 병영(Barracks)과 같은 방어 시설 역시 방어 유닛을 원활히 전개할 수 있도록 보호되어야 합니다 [6].
* **포탑 및 장애물 배치:** 포탑은 방어 건물을 보호하고 겹치는 화망을 구성하도록 배치해야 합니다 [3, 7]. 장벽(Walls)은 적의 접근 경로를 차단하고 썬더볼트(Thunderbolt)와 같은 항공기의 공격을 대신 흡수하여 포탑을 보호하며, 적 지상군을 지뢰(Land mines)가 매설된 좁은 구역으로 몰아넣는 역할을 합니다 [5, 7, 8].
* **고급 기지 설계(Advanced Base Designs):**
* **Square Base (사각 기지):** 코어 주변에 포탑을 "기관총-박격포-기관총-박격포(Gun-Mortar-Gun-Mortar)" 패턴으로 교차 배치하는 보편적인 디자인입니다 [9, 10]. 공격자가 사각지대를 파악하거나 우회하기 어렵지만, 체력이 높은 탱킹 유닛(예: Behemoth)의 진입에는 취약할 수 있습니다 [9, 10].
* **Blitz Base (블리츠 기지):** 유인(Baiting) 전술에 대항하기 위한 설계입니다. 대공 보병(Heavy Gunners/Stingers)이 탑재된 감시탑(Watch Towers)을 대칭으로 배치하여 사전 공중 공격을 차단하고, 장거리 공성 전차를 막기 위해 박격포 팀과 저격수를 배치한 요새(Stronghold)를 활용합니다 [11, 12].
* **Square (Mortars only):** 포탑은 100% 대지상용(박격포)으로, 방어 유닛은 100% 대공용으로 구성하여 적의 중전차 유인 전술을 무력화합니다 [13]. 그러나 광역 피해를 주는 적 항공기(Raptors, Havoks 등) 조합에는 매우 취약하다는 단점이 있습니다 [13].
* **전술적 기만 및 방어 응용:** 방어자는 일부러 약해 보이는 지점(Honey Pot)을 만들어 공격자를 유인한 뒤, 해당 경로에 밀집된 지뢰밭으로 유도해 심각한 피해를 줄 수 있습니다 [14]. 또한, 사령부처럼 높이가 높은 건물이나 버려진 건물 뒤에 자살 폭탄병(Suicide Bombers)이나 헤라클레스(Hercules) 같은 유닛을 시각적으로 숨겨 적을 기습하는 것도 효과적입니다 [14, 15]. 헬파이어(Hellfire) 전차의 장거리 공성을 막기 위해서는 더 사거리가 긴 포탑이나 최고 레벨의 벙커 저격수를 전방에 배치합니다 [16].
* **기지 확장(Base Expansion):** 수십억 단위의 자원을 저장하고 점점 복잡해지는 방어망을 구축하기 위해, 플레이어는 사령부의 "Expand Borders(국경 확장)" 업그레이드를 사용하여 기지의 건설 가능 영역을 최대 7번(회당 8%씩) 확장할 수 있습니다 [17-19].
## 💻 패턴
---
### Holy Grail — CSS Grid (12 lines)
```css
.app {
display: grid;
min-height: 100dvh;
grid-template:
"header header header" auto
"nav main aside" 1fr
"footer footer footer" auto
/ 200px 1fr 200px;
}
.header { grid-area: header; }
.nav { grid-area: nav; }
.main { grid-area: main; }
.aside { grid-area: aside; }
.footer { grid-area: footer; }
**기본 원칙과 기능성**
* 기지 방어는 플레이어가 얼마나 많은 금속을 지켜낼 수 있는가와 직결되며, 일반적으로 방어율을 80% 이상으로 유지하는 것을 목표로 합니다 [1].
* 기지 레이아웃은 형태보다 기능성이 훨씬 중요합니다 [3]. 명령 센터([[Command Center|Command Center]]), 자원 저장소, 발전소(Power Plants) 등 가장 중요한 건물들을 기지 중앙에 배치하고, 비교적 덜 중요한 건물들로 그 주위를 방어막처럼 둘러싸야 합니다 [3, 6].
* 방어 건물이 내부의 방어 유닛을 원활하게 전장으로 내보낼 수 있도록 설계하는 것이 필수적이며, 이를 위해 War Factory, Helicopter pad, Barracks 중 2개 이상을 중점적으로 보호하는 것이 권장됩니다 [7].
**주요 기지 레이아웃 유형**
* **스퀘어 베이스 (Square Base):** 가장 보편적이고 효과적인 설계로, 총기(Gun) 포탑과 박격포(Mortar)를 기지 중심부 주변에 번갈아가며(Gun-Mortar-Gun-Mortar 패턴) 배치하는 방식입니다 [4, 8]. 이는 우회하거나 약점을 정찰하기 어려운 균일한 방어망을 생성합니다 [4]. 모든 포탑을 대지상용(Mortar)으로만 구성하고 방어 유닛을 대공용으로 채우는 변형 형태도 존재합니다 [9].
* **블리츠 베이스 (Blitz Base):** 적의 유인([[Baiting|Baiting]]) 전술을 방지하기 위한 특수 레이아웃입니다 [5, 10]. 중요한 건물을 중앙에 두고, 공중 공격을 차단하기 위해 감시탑(Watch Towers)을 대칭으로 배치합니다 [5, 10]. 또한, 적의 장거리 헬파이어(Hellfires) 전차 공격을 저지하기 위해 감시탑 남쪽에 요새(Stronghold)를 배치하고 스나이퍼와 박격포 팀을 주둔시킵니다 [5, 10].
* **원형 방어선 (Circle Perimeter):** 중요한 건물 주위를 둥글게 감싸는 형태로, 적에게 명확한 공격 지점을 노출하지 않아 혼란을 주는 방어선 구축 방식입니다 [11].
**함정 및 지형지물 활용 전술**
* 포탑으로 주요 방어 건물을 감싼 뒤에는 장벽(Walls)과 지뢰(Mines)를 활용해 적의 접근 경로를 차단해야 합니다 [12]. 장벽은 적을 좁은 공간으로 몰아넣어 지뢰나 방어 유닛으로 제압할 수 있게 돕고, 썬더볼트(Thunderbolt)나 랩터(Raptor) 같은 공중 유닛의 공격으로부터 데미지를 대신 흡수해 포탑을 보호하기도 합니다 [6, 12].
* **허니팟(Honeypot) 전술:** 일부러 약해 보이는 방어 지점(예: 외곽으로 뺀 포탑)을 만들어 적을 유인한 뒤, 해당 구역에 지뢰를 집중적으로 배치하여 접근하는 적의 전차 부대를 궤멸시키는 고도의 기만전술입니다 [11].
* 명령 센터처럼 높이가 높은 건물이나 버려진 건물 뒤의 사각지대에 헤라클레스(Hercules)나 자살 폭탄 트럭 같은 유닛을 숨겨두어 방심하고 접근하는 적을 기습하는 전략도 매우 유용합니다 [11, 13].
---
* **핵심 방어 건물 보호:** 효율적인 방어를 위해서는 지휘 본부, 자원 저장소, 발전소를 기지 중앙에 배치하고 덜 중요한 건물들로 그 주위를 둘러싸는 기능 중심의 배치가 중요하다 [2, 3].
* **유닛 생산 시설과의 연계:** 기지 레이아웃은 전쟁 공장(War Factory), 헬리패드(Helicopter pad), 병영(Barracks)과 같은 방어 유닛 생산 건물을 보호하는 데 초점을 맞춰야 한다 [4]. 터렛이 대공 방어에 집중되어 있다면 대지 유닛을 주로 생산하는 전쟁 공장과 헬리패드를 더 강력하게 보호해야 하며, 반대로 병영에는 현재 기지에 부족한 방어 속성(대공 또는 대지)을 보완하는 유닛을 배치해야 한다 [5, 6].
* **장벽과 지뢰의 전략적 활용:** 장벽은 지상 사격을 차단하고 적의 접근 경로를 좁은 공간으로 강제하여, 적을 지뢰와 다른 방어 유닛의 함정으로 유도하는 데 사용된다 [7, 8]. 장벽은 Thunderbolt나 Raptor와 같은 공중 유닛의 공격 방향에 배치하여 터렛을 보호하는 방패 역할을 하기도 한다 [7]. 또한 고급 플레이어는 의도적으로 취약해 보이는 지점을 만들어 적을 유인하고, 그곳에 지뢰를 집중 배치하는 '허니팟(Honey Pot)' 전략을 사용할 수 있다 [9].
* **주요 레이아웃 전략 (Base Layout Philosophies):**
* **사각 기지 (Square Base):** 기지 코어 주변에 기관총(Gun) 터렛과 박격포(Mortar) 터렛을 교대로 배치하여 균일한 방어망을 구축하는 범용적인 디자인이다 [10, 11]. 우회하기 어렵지만, 체력이 높은 유닛의 공격에 방어선이 뚫릴 위험이 있다 [10, 11]. 이를 변형하여 터렛은 박격포만 배치하고 공중 방어는 유닛에 전담시키는 방식도 존재한다 [12].
* **블리츠 기지 (Blitz Base):** 적의 유인(Baiting) 전술을 방지하기 위해 고안된 특수 형태이다 [13, 14]. 중앙에 중요 건물을 두고 대공 유닛(Heavy Gunners 또는 Stingers)이 배치된 감시탑(Watch Tower)을 대칭으로 배치하여 적의 공중 선제공격을 차단한다 [13, 14]. 장거리 공성 유닛을 저지하기 위해 박격포를 외곽에, 기관총을 그 뒤에 배치한다 [13, 14].
* **원형 기지 (Circle Perimeter) 및 은폐:** 핵심 건물 주위를 원형으로 둘러싸면 적의 명확한 공격 지점을 모호하게 만들 수 있다 [9]. 또한, 높이가 높은 지휘 본부나 버려진 건물 뒤에 방어 유닛(예: 자폭 폭격기, 탱크 등)을 숨겨두면 적이 접근할 때 기습적인 피해를 줄 수 있다 [9].
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
- 신규 지식 자산화 (2026-04-27).
- War Commander 전투 생태계 데이터 통합.
## 🔗 지식 연결 (Graph)
- **Related Topics:** Defensive Grid, Turrets, [[Baiting Tactics|Baiting Tactics]], [[Command Center|Command Center]]
- **Projects/Contexts:** War Commander Base Defense Strategy, Geometric Deterrence
- **Contradictions/Notes:** 소스에 따르면 모든 공격을 방어할 수 있는 마법 같은 단일 레이아웃 공식은 존재하지 않으며, 방어자는 리플레이를 관찰하고 공격자와의 끊임없는 메타(Meta) 싸움에 맞춰 기지 레이아웃을 퍼즐처럼 지속해서 변화시켜야 한다고 강조합니다 [1, 6].
---
*Last updated: 2026-04-27*
---
- **Related Topics:** 방어 건물(Defense Buildings), [[유인 전술(Baiting)|유인 전술(Baiting]], 전투 시스템(CombatSystem)
- **Projects/Contexts:** War Commander Combat Ecosystem
- **Contradictions/Notes:** 스퀘어 베이스(Square Base)는 방어에 탁월한 보편적 설계지만, 베히모스(Behemoth)나 진보된 전차같이 체력이 매우 높고 폭발 저항력을 갖춘 유닛을 대동한 공격에는 쉽게 무너질 수 있다는 치명적인 약점이 있습니다 [4, 8]. 반대로 대다수의 플레이어가 선호하지 않는 블리츠 베이스는 장기적인 유인 공격 및 혼합 유닛 공격을 방어하는 데 훨씬 뛰어난 성능을 보입니다 [10].
---
*Last updated: 2026-04-27*
---
- **Related Topics:** 방어 건물(Defense Buildings), [[유인 전술(Baiting)|유인 전술(Baiting)]]
- **Projects/Contexts:** War Commander 전투 생태계의 구조적 역학(Structural Dynamics of Combat Ecosystem)
- **Contradictions/Notes:** 사각 기지(Square Base) 디자인은 정찰과 우회가 불가능에 가까운 튼튼하고 균일한 방어선으로 평가되지만, 베히모스(Behemoth)와 같이 체력이 매우 높아 피해를 흡수할 수 있는 '탱킹' 유닛이나 장거리 공성 전차(Hellfire Tanks)의 집중 포화에는 치명적으로 뚫릴 수 있는 취약점이 있다 [10, 11].
---
*Last updated: 2026-04-27*
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
**언제 이 지식을 쓰는가:**
- *(TODO)*
**언제 쓰면 안 되는가:**
- *(TODO)*
## 🧪 검증 상태 (Validation)
- **정보 상태:** needs_review
- **출처 신뢰도:** A
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
## 🧬 중복 검사 (Duplicate Check)
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
- **처리 방식:** UPDATE (자동 정규화)
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
## 🕓 변경 이력 (Changelog)
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|------|-----------|-----------|--------|
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
## 💻 코드 패턴 (Code Patterns)
**패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)*
```text
# TODO
@media (max-width: 768px) {
.app {
grid-template:
"header" auto
"nav" auto
"main" 1fr
"aside" auto
"footer" auto / 1fr;
}
}
```
## 🤔 의사결정 기준 (Decision Criteria)
### Tailwind app shell (React)
```tsx
export function AppShell({ children }: { children: ReactNode }) {
return (
<div className="grid min-h-dvh grid-rows-[auto_1fr_auto] grid-cols-[16rem_1fr]">
<header className="col-span-2 border-b bg-white px-4 py-3">
<Logo /> <UserMenu className="ml-auto" />
</header>
<aside className="border-r overflow-y-auto">
<Nav />
</aside>
<main className="overflow-y-auto p-6">{children}</main>
<footer className="col-span-2 border-t px-4 py-2 text-sm text-gray-500">
© 2026
</footer>
</div>
);
}
```
**선택 A를 써야 할 때:**
- *(TODO)*
### Centered (Cover)
```css
.cover {
display: grid;
place-items: center;
min-height: 100dvh;
padding: 1rem;
}
.cover > * { max-inline-size: 60ch; }
```
**선택 B를 써야 할 때:**
- *(TODO)*
### Split-pane (resizable)
```tsx
// react-resizable-panels (2025 default)
import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels';
**기본값:**
> *(TODO)*
<PanelGroup direction="horizontal">
<Panel defaultSize={30} minSize={20}><FileTree /></Panel>
<PanelResizeHandle className="w-1 bg-gray-200 hover:bg-blue-500" />
<Panel><Editor /></Panel>
<PanelResizeHandle className="w-1 bg-gray-200" />
<Panel defaultSize={30}><Preview /></Panel>
</PanelGroup>
```
## ❌ 안티패턴 (Anti-Patterns)
### Auto-fit dashboard grid
```css
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
gap: 1rem;
}
```
- **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*
### Container queries
```css
.card { container-type: inline-size; }
@container (min-width: 400px) {
.card .layout {
display: grid;
grid-template-columns: 120px 1fr;
gap: 1rem;
}
}
```
### Sidebar with `:has()` (zero JS)
```css
.app:has(#nav-toggle:checked) .sidebar { transform: translateX(0); }
.sidebar { transform: translateX(-100%); transition: transform .2s; }
```
### Mobile app shell — bottom nav (safe area)
```css
.bottom-nav {
position: sticky;
bottom: 0;
padding-block-end: env(safe-area-inset-bottom);
background: white;
border-top: 1px solid #eee;
}
.scroll-area {
height: 100dvh;
overflow-y: auto;
overscroll-behavior: contain;
}
```
### Subgrid (nested card alignment)
```css
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
}
.card {
display: grid;
grid-template-rows: subgrid;
grid-row: span 3; /* title / body / footer aligned across siblings */
}
```
## 매 결정 기준
| Layout | Tool |
|---|---|
| App shell, 2D | CSS Grid named areas |
| 1D linear | Flexbox |
| Component-level responsive | Container queries |
| Resizable panes | react-resizable-panels / Radix Splitter |
| Mobile shell | dvh + safe-area-inset |
| Multi-card alignment | `subgrid` |
**기본값**: Grid for 2D + named areas, Flex for 1D, Tailwind utility for prototyping.
## 🔗 Graph
- 부모: [[CSS]] · [[UI Patterns]]
- 변형: [[Holy-Grail-Layout]] · [[App-Shell]]
- 응용: [[Dashboard]] · [[Editor-Layout]]
- Adjacent: [[Arrangement-and-Composition]] · [[Architecture_Diagramming_Standards]]
## 🤖 LLM 활용
**언제**: 매 ASCII wireframe → CSS Grid 의 generation, Tailwind class 의 suggestion.
**언제 X**: 매 pixel-perfect design — 매 designer + visual review 의 필수.
## ❌ 안티패턴
- **`100vh` on mobile**: 매 address-bar overflow — 매 `100dvh` 의 사용.
- **Nested flex hell**: 매 5+ flex level — 매 grid 의 use.
- **Fixed pixel breakpoint**: 매 zoom 의 break — 매 `em`/`rem` 의 use.
- **Hidden overflow without scroll**: 매 content 의 cut.
- **Magic number margins**: 매 design token / spacing scale 의 use.
## 🧪 검증 / 중복
- Verified (CSS Grid spec — W3C; Every Layout — Bell & Andrew; web.dev — container queries).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — Grid/Flex/container-queries/subgrid base layout patterns |