디렉터 조율 - kyhsa93/karda GitHub Wiki
디렉터 조율
작성: 게임 디렉터(GD), 2026-10-03. 게임 디렉터(GD)·크리에이티브 디렉터(CD)·아트 디렉터(AD)·테크니컬 디렉터(TD)가 비전과 방향을 만들면서 주고받은 안건의 장부다. 안건 원문(items·responses·final)은 작업용 조율 폴더에 있었고, 결과는 각 디렉터 페이지의 "조율 상태" 절에 옮겼다. 관련 이슈: #189.
1. 진행 방식
| 라운드 | 누가 | 무엇을 | 산출 |
|---|---|---|---|
| 0 | GD | 저장소·이슈·위키·헤드리스 측정으로 디렉팅 브리프를 썼다. 현재 상태 측정, 비전 가설, 이름 후보, 가장 큰 문제 3개, 디렉터별 질문, 소유자 결정 초안이 들어 있다 | 브리프 |
| 1 | CD·AD·TD (동시) | 각자 브리프 질문에 답하는 페이지 초안을 쓰고, 다른 디렉터에게 줄 안건을 냈다. 안건마다 필요한 것·이유·기한·받아들일 수 있는 대안을 적었다 | 각 페이지 초안, 안건 CD-1 |
| 2 | CD·AD·TD (동시) | 자기에게 온 안건에 수락·조건부 수락·반론으로 답하고, 상대 초안 중 자기 영역과 닿는 곳을 짚었다 | 응답, 페이지 정정 |
| 3 | CD → AD → TD (차례로) | 최종 입장. 앞 사람이 "받아들인다"고 쓴 안건은 뒤 사람이 그 사람에게 다시 양보하지 않는다. GD 회부할 것만 남긴다 | 최종 입장, 페이지 최종본 |
| 4 | GD | 회부 확인(0건), 세 페이지 대조, 모순 판정, 비전과 방향·이 장부·Home 개편 | 이 페이지, 비전과 방향 |
라운드 3을 차례로 돌린 이유. 라운드 2는 동시에 썼다. 그래서 둘 다 양보하거나, 상대가 이미 철회한 문구에 조건을 다는 엇갈림이 생겼다. 예를 들어 AD는 CD 부제 "혼자 하는 대규모 점령전"에 조건을 달았는데, CD는 같은 라운드에 그 문구를 철회했다. 또 CD-4·CD-3에는 라운드 2 안에 TD 답이 늦게 도착했다. 최종 라운드를 한 명씩 돌리면 뒤 사람이 앞 사람의 최종 문장을 보고 쓰게 된다. 그 결과 디렉터 사이에 남은 이견은 0건이었다.
남은 위험. 회부가 0건이어도 페이지끼리 어긋난 문장이 남을 수 있다. 합의가 한쪽 페이지에만 반영되는 경우다. 그래서 GD가 세 페이지를 직접 대조했다(4장).
2. 안건 장부
결정 방식: 수락(그대로 받음) · 조건부 수락(조건을 붙여 받음, 조건도 상대가 받음) · 양보안(요청한 쪽이 낮춘 안을 상대가 받음) · 정정(사실이 틀려 고침) · 소유자 결정 요청(디렉터 권한 밖) · GD 판정.
2.1 CD가 낸 안건
| ID | 제기 → 대상 | 안건 | 결론 | 결정 방식 |
|---|---|---|---|---|
| CD-1 | CD → TD | 보병 대리가 D 둘레 230~300m에서 막히는 원인과 도착 지표 | 원인은 #187 단 + 경사 기준 불일치(흐름장 32°·조향 30°·이동 35°). 공통 footStep(35°, 0.5m), 하니스에 원 안 비율·최근접 거리·전진 중 정지 시간, --tele는 "이동을 지운 상한"으로 공식 옵션화. CD의 "경사로 설명 안 됨"은 철회 |
수락 + 정정(TD 측정 범위 1.6r이 오해를 만듦) |
| CD-2 | CD → TD | 역할 영향력 표의 "도착 조건"을 같게 | 역할별 "레버 도달" 열. 아파치 행은 실제 경로 대리 전까지 상한값이고 95% 판정에서 뺀다 | 수락 |
| CD-3 | CD → TD | "내가 있는 거점이 집중 거점" 자동 규칙의 비용 | 1Hz 위치 판정은 무시할 만함. 집중 전환의 재계획(도로 A*)을 작업량 계수로 재고, 90초 쿨다운은 sim 규칙. 켬 − 끔은 같은 대리 두 벌로 비교 | 조건부 수락 |
| CD-4 | CD → TD | 첫 출격 → 가장 가까운 비소유 거점 ≤ 600m | 맵에 진영별 rally, schema.test.ts 거리·도달 검사(낙제 시험 포함), firstEntrySec. 집결지는 거점이 아니다(점령·티켓·출혈·지휘관 효용 밖). 열림 조건은 분대 옆과 같다. 첫 배치 기본값은 집결지 |
조건부 수락(고정 스폰이어야 정적 검사 가능) |
| CD-5 | CD → AD | 거점이 "내가 민다"로 읽히게 | 지면 링 대신 경계 말뚝(1.2m, 약 15m 간격, 상대색 띠, 깃발 기둥 인스턴스 재사용, 드로우콜 +1). 링은 40m 안 보조. 점령 바 내 몫 칸 + 플레이어 표식, 원 안 아군 분대 ▼ + 숫자, 자동 집중 때 미니맵 화살표 1.5초 깜박임 | 조건부 수락(AD 계산: 150m에서 링 0.03px, 말뚝 3.4px) |
| CD-6 | CD → AD | 첫 화면 톤 기준 | 타이틀·로딩 배경은 실시간 렌더 "능선 너머 거점 깃발"(PNG 없음, 지연 청크). 아이콘은 능선 + 깃발, 글자·헬기·실존 표식 없음 | 조건부 수락 |
| CD-7 | CD → AD·TD | 사람 검증 항목 | 소유자 기기 녹화 또는 스크린샷 3장. 지표 이름 firstContactSec·firstEntrySec·reentrySec·endFlips로 통일 |
수락 |
2.2 AD가 낸 안건
| ID | 제기 → 대상 | 안건 | 결론 | 결정 방식 |
|---|---|---|---|---|
| AD-1 | AD → TD(·CD) | 피아 외형: 명도 분리·중거리 머리·표식 부품 | 명도 차 L* ≥ 15(연합 어둡게, VPA 밝게). 지면 대비를 같게 맞추는 것은 AD 목표로 둔다. 사람 관문에 "진영을 바꿔 한 판씩, 적이 더 잘 보인 쪽" 항목을 넣는다. 부품은 유형별 인스턴스 메시 1, 드로우콜 +3~4. 하니스로는 볼 수 없다(봇 탐지는 색을 보지 않음) | CD 양보안 + TD 조건부 수락 |
| AD-2 | AD → TD | 지형 점선·도로 띠·#182가 실기기에서도 생기나 | 도로 띠는 기하 문제다(도로 삼각형 23.2%가 묻힘). TD가 렌더 쪽 수정을 골랐다: 리본 정점을 지형 모서리마다 넣고 높이는 heightAt + 0.25m. sim 불변, 완료는 "100m 앞 도로가 한 줄". 경사면 점선과 #182는 로그 깊이 끄는 디버그 플래그 + 소유자 기기 스크린샷으로 판정 |
조건부 수락(판정 둘로 나뉨) |
| AD-3 | AD → TD | 라이선스 고지 L1 MIT·L2 OFL·L3 CC-BY URI | public/licenses.txt(크레딧 열 때만), 글꼴 name ID 13·14 유지 또는 OFL.txt, 크레딧 deed 링크. ID 13에 예약 이름이 있으면 전문 파일로 옮기고, fonts.test.ts에 검사 추가 |
조건부 수락(첫 로드 비용 0) |
| AD-4 | AD → TD | TD-6 수용 + 쓰지 않는 모델 101 KB 제외 | soldier·civ_car·fuel_truck을 전장 그룹에서 빼고, "전장 그룹 모델은 로스터 유닛이 가리킨다" 검사를 둔다. 파일·크레딧은 유지 |
조건부 수락(재유입 방지 검사) |
| AD-5 | AD → TD | 탈것 스타일 규칙 + 측면 실루엣 도구 | 재질 ≤ 2, 진영 색은 인스턴스 색, 코드 모델 ≤ 3 KB gzip·탈것별 지연 청크, 첫 출격 경로 금지. 실루엣 도구는 게이트 밖이고 PNG는 저장소에 커밋하지 않는다 | 조건부 수락 |
| AD-6 | AD → CD | 거점 시각 언어 + 깃발 상대색 | CD-5와 합쳐짐. 3D 깃발은 상대색(시안/주황), 모양은 절대(■/▲) | 수락 |
| AD-7 | AD → CD | 이름·타이틀·아이콘, 역할 이름 "아파치" | 카르다 전선, 부제 "봇과 함께 싸우는 점령전". "아파치"는 탈것 이름으로만("공격 헬기 · 아파치"), 입구에서는 금지. 실명 비대칭·상표 위험은 소유자에게 | 수락 + 소유자 결정 요청(O8) |
| AD-8 | AD → CD·TD | 보병 1인칭은 "최저선"까지만 | 최저선 일곱 가지: ①뷰모델 축소·밝게 ②1.5m 안 아군 숨김(렌더만) ③발사 버튼 위협색 제거 ④코치 "■ 아군" 아군색 ⑤경계 말뚝 ⑥점령 바 내 몫 ⑦배치 화면 스폰 지도. ⑤~⑦은 전선 장치라 탈것 폭과 맞바꾸지 않는다. 미루면 말뚝 > 스폰 지도 > 내 몫 순서로 남긴다. 스폰 지도는 기존 미니맵 코드를 재사용한다 | CD 양보안 + TD 조건부 수락 |
| AD-9 | AD → CD | 모바일 HUD 구역, 코치·무전 한 줄 28자 | 가운데 원에 UI 금지, 28자 이내, 거점 이름을 문장 앞에 | 수락 |
| AD-10 | AD → CD·TD | 사람 관문 AD 항목 | 표식 없는 50·100m 피아 3초, 지형 점선·#182, 모바일 가운데 원, 거점 원 진입을 화면으로 알았나(CD-7과 같은 스크린샷), 진영 비교(AD-1) | 수락 |
2.3 TD가 낸 안건
| ID | 제기 → 대상 | 안건 | 결론 | 결정 방식 |
|---|---|---|---|---|
| TD-1 | TD → CD | 아파치를 약하게 할지 판단을 하니스 v3 뒤로 | 하니스 v3 전에는 아파치 수치도, 봇 대공 vsUnits도 바꾸지 않는다. 그 뒤에도 아파치가 95% 이상이면 수치가 아니라 위협으로 맞춘다 |
수락 |
| TD-2 | TD → CD | 보병 레버 제안은 "거점 안 시간"을 먼저 | CD 후보 P1 도착·P2 통행(전제)·P3 자동 집중·P4 세력 0.6 유지·P5 스폿(정찰병). 판정은 100시드 구간 | 수락 |
| TD-3 | TD → CD | 메커니즘마다 sim 비용 등급 | 집결지 = 이벤트, 통행 = 매 스텝 + 맵 검사, 자동 집중 = 1Hz 판정 + 기존 5초 decide, 표현 = 렌더·UI |
수락 |
| TD-4 | TD → CD | #187: 45° + 맵 검사, 봇 규칙은 B4 | 45°. 맵 검사는 "둘레 N방향"이 아니라 "보병 고정 스폰 → 각 거점 원까지 footStep으로 닿는가". 못 가는 곳은 바위색. 봇·플레이어 규칙 차이는 B4까지 P2 부채 |
조건부 수락 → 소유자 결정 요청(O6) |
| TD-5 | TD → AD | 탈것 외형은 코드면 JS 예산, GLB면 에셋 예산 | 전차·장갑차·경차량·트럭 = 채택 GLB + VPA 코드 부품. 수송 헬기·VPA 공격 헬기·전투기 = 코드. 조종석·뷰모델은 그 탈것 청크로 | 수락 |
| TD-6 | TD → AD | 아파치 소리 169 KB를 boot에서 헬기 그룹으로 | boot 578.5 → 약 409 KB. 대안 ground_detail.png WebP는 전후 스크린샷 조건 |
수락(+AD-4) |
| TD-7 | TD → AD | 드로우콜: 유형당 인스턴스 메시 1, 재질 ≤ 2 | 아트 스타일 규칙에 넣음. 모바일 low에서 원거리 인형 끔 수락 | 수락 + 정정(그림자 패스 없음, 아래 X-4) |
| TD-8 | TD → CD·AD | 이름은 화면 이름만 변경 | 글꼴 재서브셋 불필요, 번들 0. 이름 일치 테스트에 apple-mobile-web-app-title 포함 |
수락 → 소유자 결정 요청(O1·O2) |
2.4 초안 사이에서 나온 안건
| ID | 제기 → 대상 | 안건 | 결론 | 결정 방식 |
|---|---|---|---|---|
| X-1 | AD → CD | 지명은 VPA만, 연합은 거점 문자(CD 7.2) | 화면 표식(HUD·미니맵·깃발)은 두 진영 모두 문자 + 모양으로 같게. 지명은 무전·경기 끝에서만, 처음에 문자를 붙인다("레이더 고지(D)") | 조건부 수락 |
| X-2 | AD → CD | 죽음의 비용 = 다시 잃은 거리(CD 5장) | 거리가 보여야 결정이 된다. 배치 화면 스폰 지도를 B3 UI에(AD-8 ⑦) | 수락 |
| X-3 | AD → CD | 부제 "혼자 하는 대규모 점령전" | CD가 철회하고 "봇과 함께 싸우는 점령전"으로 바꿈 | 철회 |
| X-4 | AD → TD | TD 3.6 "모바일에서 터질 곳: 그림자 패스" | 렌더러에 그림자 맵 패스가 없다(shadowMap·castShadow 0건). 위험 목록에서 뺐다. 09장 9.9 "모바일 low 그림자 끔"도 줄일 비용이 없는 항목 |
정정(TD) |
| X-5 | TD → CD | "VPA 기본값이 높은 것은 맵 비대칭"(CD 1.2) | idle 60시드: 연합 37%·VPA 50%, p ≈ 0.14. 판정 불가, v3에서 양 진영 100시드 | 정정(CD) |
| X-6 | TD → CD | 스폿이 봇 표적에 들어가나(CD 4.5) | 들어간다(스폿 키 → Intel.mark → targeting.ts). 하니스는 잰 적 없음 → v3 대리에 스폿 추가. 스폿은 정찰병 본업 |
수락 |
| X-7 | TD → CD | 진영 무전 문구의 글꼴 영향 | 새 글자는 fonts.test.ts가 잡고 두 굵기 재서브셋, 예산(160 KB 중 113) 안 |
수락 |
| X-8 | AD·TD → 전원 | 보병 한계 35°인데 셰이더는 31°→46°로 바위를 섞는다(풀색인데 못 오르는 땅) | 셰이더가 sim 경사 상수 하나를 읽는다. 바위 혼합 끝점을 한계 45°에 맞춘다 | 수락 |
| X-9 | TD → GD | GD 브리프의 "idle·보병이 이긴 시드 4개 겹침, 2개 교체 = 잡음" | 플레이어 위치가 RNG 소비량을 바꿔(예광탄 산포) 같은 시드도 경기가 갈라진다. 짝지은 비교가 아니다. 표시용 무작위를 별도 스트림으로 분리하는 작업을 v3에 넣음 | 정정(GD) |
| X-10 | TD → GD | GD 브리프의 번들 여유 66 KB | 실측 348.8 KB, 여유 51.2 KB(baseline.md 333.9는 낡음) | 정정(GD) |
| X-11 | AD·CD → 소유자 | "아파치" 실명 비대칭·상표 위험 | 디렉터 권장: 탈것 이름으로만, 입구 금지. 판단은 소유자 | 소유자 결정 요청(O8) |
GD 회부: 0건.
3. 소유자에게 넘긴 것
비전과 방향 7장 O1~O13. 이 중 디렉터 사이 이견에서 나온 것은 없다. 모두 디렉터 권한 밖(이름, 규칙, 로드맵 순서, 실존 장비명)이라 올린 것이다.
4. GD 판정 — 페이지 대조
회부는 0건이었지만 세 페이지를 대조해 다음을 찾았다. 해당 문장만 고쳤고, 각 페이지의 조율 상태 절에 "GD 판정"으로 표시했다.
| # | 어디 | 모순 | 판정 | 고친 것 |
|---|---|---|---|---|
| G1 | 크리에이티브 디렉션 2.2 | 목표 한 판의 첫 배치 기본값이 **"분대 옆"**으로 남아 있었다. 같은 페이지 4.1·10.1과 TD 8.1의 합의(CD-4)는 전방 집결지다 | 합의 쪽이 맞다. 라운드 2 응답(P1 "첫 배치 기본값 = 분대 옆")이 라운드 3에서 "집결지"로 바뀌었는데 2.2 표만 남았다 | 2.2를 "전방 집결지(rally) 스폰이 기본 선택"으로 |
| G2 | 크리에이티브 디렉션 1.1·2.1·5장 | 보병 대리가 **"본진"**에서 출발해 340초 걸었다고 썼다. 대리는 목표에 가장 가까운 스폰을 고르고(soldierProxy.ts), 연합 본진은 (0, 4500)으로 D에서 4.5 km다. 340초 걷기와 맞지 않는다. 아트 디렉션 그림 1도 "거점 A에서 출격"이다 |
사실 정정. 결론("한 판의 절반이 걷기", "다시 잃은 거리가 너무 크다")은 그대로다. TD의 "A → D 1,640 m"와도 맞는다 | "본진" → "가장 가까운 아군 스폰(시작 거점 A 또는 분대 옆)" |
| G3 | 크리에이티브 디렉션 10.2 | "양보안 (AD 답 대기)" — AD는 라운드 3에서 둘 다 수락했다(아트 디렉션 12장 "합의") | 합의로 읽는다 | 10.2 제목에 "AD 수락 → 합의" |
| G4 | 아트 디렉션 12장 | TD 3.6 그림자 패스 정정이 "TD 확인 대기"로 남아 있었다. TD는 라운드 3에서 고쳤다(테크니컬 디렉션 3.6·8.3) | 정정 완료로 읽는다 | 해당 행을 "TD 정정 완료"로 |
| G5 | GD 브리프 ↔ 테크니컬 디렉션 | 번들 여유 66 KB vs 51.2 KB, 시드 겹침 해석(X-9·X-10) | TD 측정이 맞다 | 비전과 방향은 TD 값으로 썼다(브리프는 작업 문서라 위키에 없음) |
숫자 대조에서 차이가 났지만 모순이 아닌 것:
- 보병 대리 처치 0.3(CD, 하니스 표기) vs 0.35(TD) — 같은 20시드의 반올림 차이다.
- 아파치 대리 처치 13.7(하니스) vs 12.8(TD) — 하니스는 "내 표적이 죽은 횟수"를 세고, TD는 실제 처치자(
by)로 셌다. v3에서by로 통일한다. - 거점 안 19.9초·2.8%(TD) vs 0%(CD) — TD 값은 아군 시작 거점을 포함하고, CD 값은 비소유 거점만 센다. 두 페이지가 서로 이 차이를 적어 두었다.