BurningTimesAi/공유/대화로그/FirstRising/2026-09-19_비주얼개선_세션인수인계.md

739 lines
34 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FirstRising 비주얼 개선 — 세션 인수인계서 (2026-09-19)
> 작성: 총괄PM (FirstRising 세션 `2026-09-18~19`) · 대상: **다음 세션**(비주얼 개선 A 묶음부터)
> 이 문서 한 장으로 시작한다. 다른 대화로그·지시 로그 전문은 읽지 않는다(필요한 절만 Grep — BT20-Org).
> 근거 기록: `공유/대화로그/FirstRising/2026-09-18.md` · `2026-09-19.md` §2~§4 · PD 지시 로그 BT18 ⑥~⑧
---
## 0. 다음 세션 시작 방법
**첫 프롬프트 v2 (PD 가 새 세션에 그대로 붙여 넣는다 · PD 원본 프롬프트 = 부록 A · ★ = 2026-09-19 검토 반영)**
```
< 비주얼 개선 프롬프트 v2 — FirstRising >
이 세션은 FirstRising 비주얼 개선 세션이다.
먼저 인계서 E:\BurningTimes\공유\대화로그\FirstRising\2026-09-19_비주얼개선_세션인수인계.md 를 읽어라.
프로젝트 실측값(§4), PD 결정 사항(§6), Unity CLI 사용법, 원본 프롬프트(부록 A)가 들어 있다.
다른 문서는 전문을 읽지 말고 필요한 절만 찾아본다.
[목표]
현재 에셋을 유지한 채 조명·색감·명암·그림자·AO·재질·캐릭터와 배경의 분리·깊이감·후처리·VFX·카메라를 정리해
"완성도 높은 Stylized / Casual Fantasy 3D Game" 으로 보이게 한다.
어두운 판타지 분위기는 유지하되, 화면이 어둡게 뭉치지 않고 잘 읽히게 한다.
고해상도 리얼리즘이 목표가 아니다. 가장 중요한 것은 "많이 추가하는 것"이 아니라 "통일된 시각적 규칙"이다.
[절대 원칙] (상세 = 부록 A)
1. 기존 캐릭터·몬스터·배경·오브젝트·UI 에셋을 교체하거나 삭제하지 않는다. 아트 스타일·색·캐릭터 디자인을 과하게 바꾸지 않는다.
2. 게임 플레이 로직·전투·UI 기능·이동을 바꾸지 않는다. 기존 씬 구조를 유지한다.
3. 외부 에셋 대량 다운로드, 유료 에셋, 불필요한 의존성을 추가하지 않는다. 기존 리소스를 재활용한다.
4. 저해상도·스타일라이즈드 에셋을 사실적인 AAA 처럼 만들지 않는다.
5. 모바일 성능을 우선한다. 무거운 후처리·셰이더 연산을 피하고 Bloom 은 제한적으로 쓴다.
6. 되돌릴 수 있게 작업한다. 기존 파일을 직접 고치기보다 새 Material / Shader / Volume / 설정 파일을 만들어 적용한다.
★7. 작업 위치: 씬 = Assets/Scenes/TestVisual.unity (+ TestVisual/TestVisual_Map.unity). 새 파일 = Assets/BurningTimes/Visual/.
원본 URP 에셋·ProjectSettings·게임 코드·실제 게임 맵은 내 승인 없이 수정하지 않는다.
★8. FirstRising 로컬 bt/work 브랜치에만, Phase 마다 1커밋한다. push 는 하지 않는다.
★9. 감사 에이전트는 부르지 않는다. 토큰이 많이 드는 작업·에이전트 호출은 비용을 먼저 보고하고 승인받는다.
[이미 확인된 사실] (상세 = 인계서 §4)
- Unity 6000.3.9f1 · URP 17.3 Forward+ · Linear · ECS(Entities Graphics) 하이브리드 · 모바일 세로 1080×1920
- 실행 중 품질은 게임 코드가 Midium 으로 바꾼다: 렌더 해상도 0.52(WorldManager.cs:90 계산) + FSR,
메인 그림자 꺼짐, 깊이 텍스처 꺼짐(AO 불가), AA 없음, 추가 광원 그림자 꺼짐
- TestVisual: Volume 0개(후처리 없음), 환경광 평평한 회색, 데모 라이트맵 소실,
조명 모델 3종 혼재(캐릭터 전용 Shader Graph / Simple Lit / Terrain Lit), 캐릭터에 PlayerFresnelRenderFeature 존재
[작업 순서]
PHASE 1 분석: 인계서 §4 값은 확인만 하고 빈 항목만 측정한다
(몬스터 셰이더, UI Canvas 구조, 파티클·VFX 현황, 노멀맵 보유, Frame Debugger 기준 Draw Call·SetPass).
부록 A 의 [Visual Problems] 형식으로 보고하고, 내가 승인하기 전에는 아무것도 수정하지 않는다.
A 묶음 (이번 목표): PHASE 2 조명+그림자+AO → PHASE 4 후처리 → PHASE 6 캐릭터 림라이트
★ 조명은 ACES 톤매핑만 켠 평가용 Volume 위에서 맞춘다 (톤매핑 없이 맞추면 PHASE 4 에서 다시 조정하게 된다)
★ TestVisual 전용 URP 설정(Midium 복제)을 쓰고, TestVisual 에만 둔 비주얼 전용 스크립트로 적용한다. 게임 코드는 건드리지 않는다. (이 스크립트 사용은 PHASE 1 보고 때 내 승인을 받는다)
★ AO·접촉 명암은 저비용 순서로 시험한다: 캐릭터 발밑 블롭 그림자 → 메인 그림자 켜기 → SSAO 저품질
★ 림라이트는 기존 PlayerFresnelRenderFeature 조정부터 하고, 부족할 때만 캐릭터 전용 새 머티리얼을 만든다
★ 렌더 해상도(0.52)는 비교 캡처만 하고 변경 여부는 내가 결정한다
A 묶음이 끝나면 종합 보고 후 내 승인을 받고
PHASE 3 재질·셰이더 → PHASE 5 안개·깊이 → PHASE 7 VFX(전투 코드에는 연결 구조만) → PHASE 8 카메라 순으로 진행한다.
각 단계의 세부 지침은 인계서 부록 A 의 3~13단계를 따른다.
[Phase 보고 형식]
Phase 가 끝날 때마다 변경한 파일·설정·머티리얼·셰이더·씬, 성능 영향, 기존 기능 영향, 되돌리는 방법을 보고하고
전후 비교 캡처를 2장 이내로 첨부한다.
[금지]
캐릭터 모델 교체, 텍스처 삭제, 기존 머티리얼 전체 덮어쓰기, 새 씬으로 기존 씬 대체,
게임·전투 로직 수정, UI 시스템 구조 변경, 무거운 에셋·외부 유료 에셋 추가, 사실적인 AAA 스타일로의 변경.
먼저 PHASE 1 분석 결과와 개선 계획을 보고하고, 내 승인을 받은 뒤 수정 작업을 시작해라.
```
**시작 체크 (도구 3회 이내)**
1. `unity status` → `7800 ready C:\BurningTimes\FirstRising` (Unity CLI 연결 · 없으면 PD 에게 Unity 실행 요청)
2. `git -C C:\BurningTimes\FirstRising status -b --short` → 브랜치 `bt/work` · 최신 커밋 `63b07f4595` 이후
3. `unity command --project-path C:\BurningTimes\FirstRising editor_status` → Play 여부 · 열린 씬 dirty 여부 확인 후 작업
---
## 1. PD 지시와 운영 결정
| 순서 | PD 발화 요지 | 처리 |
|---|---|---|
| ⑦ | "전체적인 퀄리티가 많이 저하 된 느낌 … 다크 판타지풍 … 개선 방안 제안해봐" | 원인 4 + 3단계 제안 |
| — | 화면 불만 9개(§4-5) · PD 개선안 12항(조명·Volume·컬러 그레이딩·AO·림라이트·재질·바닥 셰이더·Fake Normal·그림자·안개·VFX·발광 연출) · "픽셀 에셋을 억지로 3D처럼 만들지 말 것" · "게임 전체의 Visual Pipeline" | 계획에 반영 |
| ⑧ | "A 묶음부터 진행하되, 이 작업은 다음 세션에서 이어서 … 프롬프트를 체크해서 검토하고 인계서로 문서화" | **본 문서** · PD 프롬프트 원문 = 부록 A |
**운영 결정 (PD 해제 지시 전까지 · CLAUDE.md "현재 운영 결정"과 동일)**
- 감사(pm/dev/plan-auditor) 전부 생략 — BT19-Org
- 토큰이 많이 드는 에이전트 호출·대량 작업은 **비용·선택지 먼저 보고 → 승인 후** (C50)
- FirstRising 작업은 로컬 `bt/work` 에만 커밋 · **push 금지** · master 반영은 PD 지시 시 필요한 커밋만 — BT18 ⑤
- 병렬은 세션 1개 + 백그라운드 에이전트(`fr-worker`, 독립 작업이 여럿일 때만)
- 기록: PD 지시 로그 착수 1줄 → 종료 시 1~3줄 · 대화로그 안건 종료 시 1회 — BT20-Org
- `공유/조직공지/` 쓰기는 C35-9 게이트가 막는다(매니페스트 필요) — 프로젝트 문서는 `공유/대화로그/FirstRising/` 에 둔다
---
## 2. 검토 결과 — PD 프롬프트(부록 A) vs PM 계획(A 묶음)
**결론: 방향·원칙은 PM 계획과 일치한다. 아래 6개를 조정해 반영했다.**
| # | 항목 | PD 프롬프트 | PM 기존 계획 | 조정 (다음 세션 적용안) |
|---|---|---|---|---|
| 1 | 목표 톤 | "Stylized / Casual Fantasy 3D" · 어두운 판타지 분위기 유지 · 과하게 어둡게 뭉치지 않게 | "다크 판타지" | **프롬프트 기준**으로 통일 — 어둡되 읽히는 화면 |
| 2 | 작업 순서 | Phase 1 분석 → 2 Lighting+Shadow+AO → 3 Material → 4 Post → 5 Fog → 6 Rim → 7 VFX → 8 Camera | A 묶음 = 조명·볼륨·림·AO·해상도 | **Phase 1 → 2 → 4 → 6 (= A 묶음)** → 보고·승인 → 3 → 5 → 7 → 8. 이유: 지금 HDR 켜짐·톤매핑 없음이라 조명을 먼저 확정하면 Phase 4(톤매핑·그레이딩)에서 다시 맞춰야 한다. Phase 2 평가는 **ACES 톤매핑만 켠 평가용 Volume** 위에서 한다. Phase 마다 보고는 프롬프트 형식 그대로 |
| 3 | 비파괴 원칙(원칙 12) | 새 Material/Shader/Volume/설정 파일 우선 | TestVisual 전용 설정 | 일치. 새 파일은 전부 `Assets/BurningTimes/Visual/` 아래. 원본 URP 에셋·ProjectSettings·게임 코드는 수정하지 않는다 |
| 4 | 게임 로직 불변(원칙 3) | 로직·전투·UI·이동 변경 금지 | — | 품질 단계·해상도는 **게임 코드가 런타임에 바꾼다**(§4-3). 그래서 TestVisual 에서만 쓰는 작은 비주얼 전용 스크립트(가칭 `VisualProfileSwitcher`)로 전용 URP 설정을 끼우는 방식을 제안 — 게임 코드 무수정. **PD 확인 필요**(§6-2) |
| 5 | AO | 가장 저렴한 방법부터 | SSAO | 순서: ① 캐릭터 발밑 블롭 그림자(쿼드/데칼) ② 메인 라이트 그림자 켜기(현재 Midium 에서 꺼짐) ③ SSAO 저품질·다운샘플(깊이 텍스처 켜야 함 — 비용 측정 후) |
| 6 | 림라이트 | 현재 셰이더 시스템에 맞춰 | 기존 기능 조정 | 캐릭터는 이미 IDA Shader Graph + `PlayerFresnelRenderFeature` 가 있다 → **새 셰이더보다 기존 Fresnel 피처 조정이 먼저**. 몬스터 셰이더는 Phase 1 에서 확인 |
**PM 추가 실측 항목(프롬프트에 없던 것 · 계획에 넣음)**
- 렌더 해상도 52% (§4-3) — PD 불만 9 "픽셀 느낌"의 최대 원인. 게임 전체 성능 설계라 **PD 결정 사항**(§6-3)
- Midium 등급 메인 라이트 그림자 꺼짐 — PD 불만 4의 직접 원인
---
## 3. 반드시 지킬 원칙 (부록 A 요약)
- 에셋(캐릭터·몬스터·배경·UI) **교체·삭제 금지** · 아트 스타일·색·캐릭터 디자인 과도 변경 금지 · 사실적 AAA 화 금지
- 게임 로직·전투·UI 시스템·이동 **변경 금지** · 기존 씬 구조 유지(새 씬으로 대체 금지)
- 외부 에셋 대량 다운로드·유료 에셋·불필요한 의존성 **추가 금지** · 기존 Texture/Material/Mesh/Particle/Light 재활용
- **모바일 성능 우선** — 무거운 후처리·셰이더 연산 금지 · Bloom 은 제한적으로 · Fog 로 화면을 뿌옇게 만들지 않기
- **비파괴** — 기존 파일 직접 수정보다 새 파일 적용 · 모든 변경은 되돌릴 수 있게
- **한 번에 다 바꾸지 않는다** — Phase 단위 · Phase 끝마다 보고(변경 파일·설정·머티리얼·셰이더·씬·성능 영향·기능 영향·되돌리는 법)
- **Phase 1 분석 보고 → PD 승인 전에는 파일 수정 금지**
- 게임 전체에 영향이 가는 변경(원본 URP 에셋·ProjectSettings·게임 코드·실제 게임 맵)은 PD 승인 후
---
## 4. 현재 상태 (2026-09-19 실측 — 다음 세션은 재측정하지 말고 필요한 것만 확인)
### 4-1. 프로젝트·작업 환경
- Unity **6000.3.9f1** · **URP 17.3.0** · 렌더러 **Forward+** · 색공간 **Linear** · Entities/Entities Graphics 1.4 (ECS 전투 + MonoBehaviour UI 하이브리드) · 모바일(Android) 세로 1080×1920
- 레포 `C:\BurningTimes\FirstRising` (GitHub `bluecell2/FirstRising` · bluecell2 가 master 에 직접 push)
- 로컬 브랜치 `bt/work`: `dafe8ef1bf` L_FG 패키지 원본 · `071aa07d04` TestVisual · `63b07f4595` Unity CLI(`com.unity.pipeline` 0.6.0-exp.1)
- 로컬 미커밋(PD·Unity 자동 변경 — **커밋 제외**): `ProjectSettings/*` · `TagManager.asset` · `settingsTemplate.gradle` · 폰트 SDF · `CharacterFresnelEffect.mat` · `TemplateMenuItems.cs` · `DOTweenSettings.asset` · `output/`(CSV)
- **Unity CLI 사용 팁** (이번 세션 실증)
- C# 실행은 `unity command --project-path <프로젝트> eval_file --file <cs 파일>` — PowerShell 에서 `eval --code` 는 따옴표가 깨진다
- `capture_game_view --save_path` 는 **Assets 기준 상대 경로**로 저장된다(`Temp/x.png` → `Assets/Temp/x.png`) → 확인 후 Assets 밖으로 **이동**(삭제 명령은 보안 훅이 막는다)
- 게임 화면은 세로 1080×1920 → 캡처는 `--width 1080 --height 1920` 또는 비율 유지
- PD 가 같은 에디터에서 작업 중이다 — 씬 열기·Play 전 `editor_status` 와 열린 씬 dirty 확인. 첫 Play 는 서브씬 베이크로 수십 초 검은 화면일 수 있다
- 이번 세션 교훈: 맵 SubScene 을 바꿀 때는 보이는 배경만이 아니라 SubScene 안의 게임 오서링(`SubSceneEssential` · `PlayerPosition` · `TerrainAuthoring`)까지 대조할 것
### 4-2. TestVisual 구조
- `Assets/Scenes/TestVisual.unity` (test.unity 복사): `LevelEssential`(카메라 포함 프리팹) · `TestMonstersController` · `Spawn0`×4 · SubScene `TestVisual_Map` · `Ariel`(플레이어 GameObject)
- `Assets/Scenes/TestVisual/TestVisual_Map.unity` = L_FG `Demo6`(묘지) 배치 그대로 — 프리팹 인스턴스 625 · 렌더러 697 · Terrain 200×200(URP TerrainLit · `TerrainAuthoring`) · **`SubSceneEssential`**(게임 핵심 오서링) · `PlayerPosition` (4.82, 0.2, −7.25)
- **조명**: Directional (0.07, 0.16, 0.39) ×3 · Point 7 (난색 4 · 청록 3, 강도 1.4~2, 범위 15~30 m) — **전부 Mixed(라이트맵 전제)** · SubSceneEssential 의 Point Light(캐릭터 위 5 m) · 환경광 **Flat 회색 0.343** · 안개 ExpSq 0.03 (0.067, 0.173, 0.294) · 스카이박스 없음 · **라이트맵 없음**(데모 라이트맵 170개가 현 버전과 불일치)
- **카메라**: Perspective FOV 60 · 피치 45° · Y 180° · 플레이어 추적(거리 16) · postFX 켜짐 · **AA 없음**
- **Volume 0개** — 후처리 전혀 없음. 프로젝트에 VolumeProfile 43개 존재(재사용 후보 · 대부분 에셋팩 동봉)
### 4-3. 품질 단계 — 런타임은 **Midium** (게임 코드가 전환)
| 등급 | 해상도 | HDR | MSAA | 메인 그림자 | 거리·캐스케이드·해상도·소프트 | 추가 광원 | 추가 광원 그림자 | 깊이 텍스처 |
|---|---|---|---|---|---|---|---|---|
| Ultra | 1.0 (FSR) | 켜짐 | 없음 | 켜짐 | 10 m · 1 · 1024 · 하드 | PerVertex/1 | 꺼짐 | 꺼짐 |
| **Midium (실행 중)** | **0.52 (FSR)** | 켜짐 | 없음 | **꺼짐** | 10 m · 1 · 1024 · 하드 | PerVertex/1 | 꺼짐 | 꺼짐 |
| Low | 1.0 (FSR) | 켜짐 | 없음 | 꺼짐 | 10 m · 1 · 1024 · 하드 | PerVertex/0 | 꺼짐 | 꺼짐 |
- 렌더러 피처(3등급 공통): `CharacterBehindObjects` · `RenderPlayer` · `PlayerFresnelRenderFeature` · `Terrain` — **SSAO 없음**
- 전환 코드: `PlayerManager.cs:217·462` `QualitySettings.SetQualityLevel` · `WorldManager.cs:90` `renderScale = height / Screen.height`(고정 세로 해상도 → 1920 화면에서 0.52) · `SGSR2_URP.cs:266` 업스케일러 · Low 1.0 / Midium 0.52 역전은 의도 확인 필요
### 4-4. 재질·셰이더·텍스처
- 환경(L_FG): **Simple Lit 13**(구 Legacy Specular 변환) · Particles Unlit 5 · 잎 Simple Lit 컷아웃 · 바닥 Terrain Lit(레이어 5)
- 캐릭터: Shader Graph `IDA_Clothes`·`IDA_Skin`·`IDA_Cloak`·`IDA_Base`·`IDA_Hair` + `ThunderRisingGames/URP_Lit_Player`·`URP_IDA_Hair_Simple`
- → **조명 모델 3종 혼재**(캐릭터 전용 · Simple Lit · Terrain Lit) = PD 불만 2의 원인
- L_FG 텍스처 256~1024(대부분 512) 압축 · 노멀맵 보유 여부 미확인
### 4-5. PD 화면 불만 9개 ↔ 실측 원인
| # | PD 불만 | 실측 원인 | 담당 Phase |
|---|---|---|---|
| 1 | 너무 어둡고 탁함 | 톤매핑 없음(HDR) · 평평한 회색 환경광 · 라이트맵 소실 · 52% 해상도 | 2 · 4 |
| 2 | 명암 방식이 서로 다름 | 조명 모델 3종 혼재(§4-4) | 3 |
| 3 | 캐릭터가 배경에 묻힘 | 림 약함 · 캐릭터 키 라이트 없음 · 대비 부족 | 2 · 6 |
| 4 | 바닥에 붙어 있는 느낌 부족 | **Midium 메인 그림자 꺼짐** · AO 없음(깊이 텍스처 꺼짐) · 발밑 그림자 없음 | 2 |
| 5 | 광원 색 변화 없음 | 추가 광원 PerVertex·1개 설정 · 추가 광원 그림자 꺼짐 · 라이트맵(간접광) 소실 | 2 |
| 6 | 초점 불명확 | 비네트·조명 위계 없음 | 2 · 4 |
| 7 | UI·오브젝트·배경 같은 중요도 | 명도·채도 위계 없음 | 4 · 5 (UI 는 최소) |
| 8 | VFX 부족 | 전투 피드백 연출 없음 | 7 |
| 9 | 저해상도·픽셀 느낌 | **렌더 해상도 52% + FSR** · 텍스처 512 · AA 없음 | 2 (결정 필요) |
---
## 5. 작업 계획 — A 묶음 = Phase 1 → 2 → 4 → 6
| Phase | 목표 | 방법 (비파괴) | 산출물 | 검증 | 토큰 추정 |
|---|---|---|---|---|---|
| **1 분석** | 부록 A 1단계 목록 보고 | §4 실측값을 확인만 하고 빈 항목만 측정: 몬스터 셰이더 · UI Canvas 렌더 모드 · 파티클/VFX 현황(FxPool) · 노멀맵 보유 · Frame Debugger 기준(Draw Call·SetPass·배치) | `[Visual Problems]` 형식 보고 → **PD 승인 대기** | — | 3~5만 |
| **2 조명·그림자·AO** | 어둡되 읽히는 화면 · 접촉감 | 전용 URP 설정(Midium 복제: 메인 그림자 켜기·소프트·거리 20~30 m·캐스케이드 2) · 평가용 ACES Volume · 환경광 그라데이션(차가운 하늘/어두운 땅) · 달빛 강도·색 조정 · 캐릭터 추적 약한 난색 키 라이트 · 이벤트 색 조명 · 발밑 블롭 그림자 → 필요 시 SSAO 저품질 · 해상도 비교(PD 결정 시) | `Assets/BurningTimes/Visual/` 설정·프로필 · TestVisual 수정분 | 전후 캡처 2장 · Frame Debugger 비용 | 6~9만 |
| **4 후처리** | 통일된 색 | Volume: ACES · Color Adjustments(노출 +0.2~0.5 · 대비 +10~20 · 채도 +5~15 시작값) · 그림자 청록/중간 녹갈/하이라이트 황색(Split Toning 또는 SMH) · 제한적 Bloom · 약한 Vignette | Volume 프로필 1 | 전후 캡처 · Bloom 비용 | 3~5만 |
| **6 림라이트** | 캐릭터 실루엣 | `PlayerFresnelRenderFeature` 값 조정(약하게 · 푸른/보라 계열) → 부족하면 캐릭터 전용 새 머티리얼 변형 | 설정·머티리얼 | 캡처(어두운 배경 대비) | 3~5만 |
| (A 끝) | A 묶음 종합 보고 → PD 승인 | | | | |
| 3 · 5 · 7 · 8 | 재질 통일 · 안개/깊이 · VFX 구조 · 카메라 | 부록 A 6~8·10~11단계 | | | 승인 후 견적 |
- **TestVisual 전용 적용 방식(제안)**: `Assets/BurningTimes/Visual/` 에 전용 URP 에셋(Midium 복제)·Volume 프로필·새 머티리얼을 만들고, TestVisual 에만 둔 비주얼 전용 스크립트가 Play 시작 후 그 URP 에셋을 끼운다 → 원본 설정·게임 코드·다른 맵 무영향. 되돌리기 = 스크립트 오브젝트 비활성 또는 커밋 되돌림
- **커밋**: Phase 마다 `bt/work` 1커밋(`[BT18-⑧ PhaseN] 요지`) · 되돌리기 = 해당 커밋 revert
- **캡처**: Phase 당 2장 이내(C14-7)
---
## 6. PD 결정·확인 필요 사항
1. **Phase 1 분석 보고 승인** — 승인 전 파일 수정 금지(프롬프트 요구)
2. **TestVisual 전용 비주얼 스크립트 허용 여부**(§2-4) — 게임 코드가 품질·해상도를 런타임에 바꾸므로 테스트 씬에서만 설정을 끼우는 작은 스크립트가 필요하다. 게임 로직은 건드리지 않는다
3. **렌더 해상도 52% 상향 여부** — 픽셀 느낌의 최대 원인이지만 게임 전체 성능 설계(`WorldManager.cs:90`). TestVisual 에서 비교만 하고 결정은 PD
4. **TestVisual 결과를 실제 게임 맵·원본 품질 설정에 반영할지** — A 묶음 끝난 뒤
5. **VFX(Phase 7) 전투 코드 연결 지점** — bluecell2 작업과 겹치는지 조율
## 7. 알려진 이슈
- 줄바꿈 설정(`core.autocrlf=true` × Unity LF 저장) → pull 차단 재발 가능 — 근본안 `.gitattributes`(팀 공용) 미적용
- TableManager 매크로 내보내기 이슈 3건(BT18 ① — 행 절단·빈 셀 `""`·저장 위치) 미해결
- BT 조직 레포는 커밋 대기(BT16 ④) — **본 문서는 이 PC 작업 트리에만 있다.** 다른 PC 에서 이어가려면 PD 의 커밋·push 지시 필요
---
## 부록 A. PD 프롬프트 원문 (2026-09-19)
< 비주얼 개선을 위한 프롬프트 >
나는 현재 Unity 3D로 개발 중인 게임의 전체적인 비주얼 퀄리티를 개선하고 싶다.
현재 게임 스크린샷을 기준으로 보면 모델이나 에셋 자체를 전부 교체해야 하는 수준의 문제가 아니라,
- 전체적인 조명
- 색감
- 명암
- 그림자
- Ambient Occlusion
- 재질 표현
- 캐릭터와 배경의 분리
- 깊이감
- 후처리
- VFX
- 카메라 연출
등이 충분히 정리되지 않아 게임이 전체적으로 저퀄리티처럼 보이는 것이 주요 문제라고 판단하고 있다.
중요한 목표는 "새로운 고해상도 에셋으로 교체하는 것"이 아니다.
현재 프로젝트에 존재하는 에셋과 리소스를 최대한 유지하면서 Unity의 렌더링, Shader, Lighting, Post Processing, VFX 등의 기술을 이용해 현재 게임을 더 완성도 높은 "Stylized / Casual Fantasy 3D Game"처럼 보이도록 개선하는 것이다.
==================================================
[절대적으로 지켜야 할 원칙]
==================================================
1. 기존 게임의 아트 스타일을 함부로 변경하지 않는다.
2. 기존 캐릭터, 몬스터, 배경, 타일, 오브젝트, UI 에셋을 임의로 교체하거나 삭제하지 않는다.
3. 게임 플레이 로직, 전투 시스템, UI 기능, 이동 시스템 등을 그래픽 개선 과정에서 변경하지 않는다.
4. 기존 씬 구조를 최대한 유지한다.
5. 새로운 에셋을 대량으로 다운로드하거나 프로젝트에 불필요한 외부 의존성을 추가하지 않는다.
6. 가능하면 현재 가지고 있는 Texture, Material, Mesh, Particle, Light 등을 재활용한다.
7. 그래픽 개선은 "전체적인 시각적 통일감"을 만드는 방향으로 진행한다.
8. 저해상도 또는 스타일라이즈드 에셋을 억지로 사실적인 AAA 게임처럼 만들지 않는다.
9. 목표는 "고해상도 리얼리즘"이 아니라
"완성도 높은 Stylized / Casual Fantasy Game"의 느낌이다.
10. 기존 에셋의 색상이나 캐릭터 디자인을 과도하게 변경하지 않는다.
11. 성능을 중요하게 고려한다.
특히 모바일 환경에서도 사용할 가능성이 있으므로 무거운 후처리나 과도한 Shader 연산을 피한다.
12. 모든 변경은 되돌릴 수 있도록 기존 파일을 직접 파괴적으로 수정하기보다는 새로운 Material / Shader / Volume / 설정 파일 등을 만들어 적용하는 방식을 우선한다.
==================================================
[1단계 - 프로젝트 분석]
==================================================
먼저 아무것도 수정하지 말고 프로젝트를 분석해라.
다음 정보를 찾아서 나에게 먼저 보고해라.
- Unity 버전
- Built-in / URP / HDRP 여부
- 현재 Rendering Pipeline 설정
- 사용 중인 Lighting 설정
- Directional Light 존재 여부
- Scene Lighting 구조
- 현재 Shadow 설정
- Ambient Occlusion 사용 여부
- Post Processing / Volume 사용 여부
- 현재 Camera 설정
- Material 구조
- Shader 종류
- Texture 해상도와 주요 Texture 구조
- Particle / VFX 사용 현황
- 주요 게임 Scene 구조
- 캐릭터 Material 구조
- 배경 / 타일 Material 구조
- UI Rendering 구조
- 현재 그래픽 품질 설정
- 모바일 성능에 영향을 줄 수 있는 요소
그리고 현재 프로젝트에서 비주얼 퀄리티를 가장 크게 제한하고 있는 요소를 중요도 순으로 분석해라.
분석 결과를 다음 형식으로 보고해라.
[Visual Problems]
1. 문제
- 현재 상태
- 왜 저퀄리티처럼 보이는지
- 개선 방법
- 예상되는 시각적 효과
- 성능 영향
2. 문제
...
분석이 끝나기 전에는 프로젝트 파일을 수정하지 마라.
==================================================
[2단계 - Visual Direction 설정]
==================================================
프로젝트 분석 후 다음과 같은 Visual Direction을 기준으로 개선한다.
목표:
"Stylized Casual Fantasy 3D"
핵심 방향:
- 명확한 실루엣
- 부드러운 Lighting
- 적절한 Contact Shadow
- 적당한 Ambient Occlusion
- 색상 대비
- 캐릭터와 배경의 명확한 분리
- 깊이감
- 제한적인 Bloom
- 자연스러운 Fog
- 통일된 Color Grading
- 과하지 않은 Stylized Shader
- 전투 시 명확한 VFX
중요:
픽셀/저해상도 느낌이 있는 기존 에셋을 완전히 다른 스타일로 바꾸지 않는다.
기존 에셋의 특징은 유지하면서 "렌더링 품질"과 "연출 품질"을 향상시키는 방향으로 작업한다.
==================================================
[3단계 - Lighting 개선]
==================================================
현재 Scene의 Lighting을 먼저 개선한다.
기본 원칙:
- 전체 화면이 지나치게 어둡게 뭉치지 않도록 한다.
- 하지만 어두운 Fantasy 분위기는 유지한다.
- 캐릭터와 중요한 오브젝트가 배경에 묻히지 않게 한다.
- 환경과 캐릭터의 색온도 차이를 활용한다.
가능하면 다음과 같은 구조를 사용한다.
Environment Light
+
Directional Light
+
필요한 Local Light
+
Contact Shadow
+
Ambient Occlusion
예를 들어 어두운 숲에서는:
- Environment: 약간 차가운 색감
- Main Light: 부드러운 방향성 조명
- Character / Event Light: 약간 따뜻하거나 마법 속성에 맞는 색
- 중요한 이벤트 오브젝트: 약한 Point/Spot Light
등의 구조를 고려한다.
단, 실제 프로젝트에 적합한 값은 현재 Scene과 렌더 파이프라인을 분석한 뒤 결정한다.
하드코딩된 임의의 값부터 적용하지 말고 현재 프로젝트의 조명 구조를 확인한 뒤 적절한 값을 선택한다.
==================================================
[4단계 - Ambient Occlusion / Contact Shadow]
==================================================
현재 게임에서 가장 부족한 입체감을 보완한다.
특히 다음 영역에 자연스러운 접촉 명암이 생기도록 한다.
- 캐릭터 발밑
- 캐릭터와 바닥
- 벽과 바닥
- 나무와 바닥
- 돌 오브젝트와 바닥
- 구조물의 모서리
- 오브젝트가 서로 만나는 부분
목표는 AO가 눈에 띄게 "검은색으로 칠해진 것처럼" 보이는 것이 아니라,
"오브젝트가 실제 공간에 존재하고 서로 접촉하고 있다"
는 느낌을 만드는 것이다.
모바일 성능을 고려하여 가장 저렴한 방법부터 테스트한다.
==================================================
[5단계 - 캐릭터 Rim Light]
==================================================
어두운 배경에서 캐릭터가 묻히는 문제를 개선한다.
가능하면 캐릭터에만 적용할 수 있는 간단한 Rim Light / Fresnel 기반 Shader 또는 Material 기능을 만든다.
목표:
- 머리 실루엣 강조
- 어깨 실루엣 강조
- 무기 실루엣 강조
- 몸 외곽 강조
단, Rim Light가 너무 강해서 캐릭터가 발광하는 것처럼 보이면 안 된다.
Fantasy 분위기에 맞는 약한 Rim Light를 사용한다.
가능하면 Shader Graph 또는 현재 프로젝트에서 사용하는 Shader 시스템에 맞춰 구현한다.
==================================================
[6단계 - Material 개선]
==================================================
기존 Material을 전부 새로 만드는 것이 아니라 기존 Material 구조를 분석한다.
재질에 따라 다음 값에 차이를 준다.
Stone:
- 낮은 Smoothness
- 낮은 Metallic
Wood:
- 낮은 Smoothness
- 적절한 Roughness
Metal:
- 높은 Metallic
- 재질에 맞는 Smoothness
Ground:
- 높은 Roughness
- 적절한 Normal
- 미세한 색상 Variation
목표는 모든 오브젝트가 같은 재질처럼 보이는 문제를 해결하는 것이다.
==================================================
[7단계 - Ground / Environment Shader]
==================================================
현재 게임에서 바닥이 지나치게 평평하거나 반복적인 Texture처럼 보인다면 이를 개선한다.
기존 Texture를 유지하면서 가능하면 Shader에서:
- Color Variation
- Normal Detail
- Roughness Variation
- AO
- 아주 미세한 UV Variation
등을 적용한다.
단, Shader 연산량이 과도하게 증가하지 않도록 한다.
특히 모바일 GPU에서 부담이 큰 복잡한 Procedural Shader는 피한다.
==================================================
[8단계 - Depth / Fog]
==================================================
현재 Scene의 깊이감이 부족하다면 Fog를 이용한다.
목표:
가까운 오브젝트
→ 선명함
중간 거리
→ 약간의 색상 혼합
먼 거리
→ 환경 색상에 자연스럽게 섞임
특히 숲이나 폐허 같은 Scene에서 배경이 캐릭터와 동일한 시각적 레벨로 보이지 않도록 Depth를 만든다.
Fog가 화면 전체를 뿌옇게 만드는 수준까지 적용하지 않는다.
==================================================
[9단계 - Post Processing]
==================================================
URP라면 Volume을 활용한다.
가능하면 다음 요소를 검토한다.
- Tonemapping
- Color Adjustments
- Contrast
- Saturation
- Exposure
- Bloom
- Vignette
- Depth 관련 효과
목표는 "효과를 많이 넣는 것"이 아니다.
전체 게임의 색감과 명암을 통일하는 것이다.
특히 Bloom은 매우 제한적으로 사용한다.
현재 게임의 Fantasy 분위기를 유지하면서 화면이 조금 더 선명하고 풍부하게 느껴지는 정도로 적용한다.
==================================================
[10단계 - VFX 개선]
==================================================
현재 전투 및 이벤트 연출에서 시각적 피드백이 부족하다면 기존 Particle System을 활용하거나 매우 가벼운 VFX를 추가한다.
예:
- Hit Flash
- Impact Particle
- Slash Effect
- Dust
- Small Spark
- Magic Particle
- Shockwave
- Damage Effect
특히 공격 명중 순간:
Hit Stop
+
작은 Camera Shake
+
Hit Flash
+
Particle
+
Impact Sound
과 연결될 수 있도록 구조를 만든다.
단, 이번 작업에서는 게임 로직 자체를 크게 변경하지 말고 기존 이벤트나 공격 판정에 연결할 수 있는 구조만 우선 만든다.
==================================================
[11단계 - Camera 개선]
==================================================
현재 Camera 구조를 분석한다.
필요하다면:
- 적절한 Orthographic / Perspective 설정
- Camera Angle
- Camera Height
- Follow Smoothness
- 약한 Camera Shake
- 전투 시 미세한 Zoom
- 중요한 이벤트에서의 Camera Focus
등을 검토한다.
단, 게임 플레이에 영향을 주는 Camera 변경은 최소화한다.
특히 기존 게임의 조작감이나 맵 인식에 문제가 생기지 않도록 한다.
==================================================
[12단계 - UI와 World의 통일]
==================================================
현재 UI가 게임 세계의 그래픽 스타일과 분리되어 있다면 개선 방법을 제안한다.
예:
- Fantasy 재질
- Stone / Metal Frame
- Magic Accent
- Shadow
- Subtle Glow
등을 활용한다.
그러나 UI 디자인 자체를 전면 재작업하지 않는다.
이번 작업의 핵심은 World Rendering이며 UI는 필요한 경우에만 최소한으로 개선한다.
==================================================
[13단계 - Performance]
==================================================
모든 그래픽 개선 후 반드시 성능 영향을 확인한다.
특히:
- 추가 Draw Call
- SetPass
- Shader complexity
- Texture Memory
- Particle 수
- Real-time Light 수
- Shadow Map
- Post Processing 비용
- Overdraw
등을 고려한다.
모바일에서도 실행 가능한 수준을 목표로 한다.
가능하면 Quality Setting을 다음과 같이 분리하는 것도 고려한다.
Low
Medium
High
단, 실제로 필요하지 않다면 불필요한 Quality Level을 만들지 않는다.
==================================================
[14단계 - 작업 방식]
==================================================
한 번에 모든 것을 변경하지 마라.
다음 순서로 작업한다.
PHASE 1
프로젝트 분석
PHASE 2
Lighting + Shadow + AO
PHASE 3
Material / Shader
PHASE 4
Post Processing
PHASE 5
Fog / Depth
PHASE 6
Character Rim Light
PHASE 7
VFX
PHASE 8
Camera / Final Polish
각 Phase가 끝날 때마다:
- 변경한 파일
- 변경한 설정
- 변경한 Material
- 변경한 Shader
- 변경한 Scene
- 성능상 영향
- 기존 기능에 대한 영향
- 되돌리는 방법
을 정리해서 보고한다.
==================================================
[중요한 제한사항]
==================================================
절대로 다음과 같이 작업하지 마라.
- 기존 캐릭터를 다른 모델로 교체
- 기존 Texture를 임의로 삭제
- 기존 Material을 전부 덮어쓰기
- Scene을 새로 만들어 기존 Scene을 대체
- 게임 로직 수정
- 전투 로직 수정
- UI 시스템 구조 변경
- 무거운 Asset 추가
- 외부 유료 Asset 추가
- 프로젝트의 기존 스타일을 사실적인 AAA 스타일로 변경
현재 리소스를 최대한 활용해야 한다.
==================================================
[최종 목표]
==================================================
현재 게임을 다음과 같은 방향으로 개선한다.
현재:
"저해상도/저퀄리티 에셋이 그대로 보이는 3D 게임"
목표:
"스타일라이즈드 에셋을 의도적으로 사용한 완성도 높은 Casual Fantasy 3D Game"
즉, 에셋의 해상도를 높이는 것이 아니라
Lighting
+
Shadow
+
AO
+
Material
+
Rim Light
+
Color Grading
+
Fog
+
VFX
+
Camera
를 통해 게임 전체의 Visual Presentation Quality를 높이는 것이 목표다.
가장 중요한 것은 "많이 추가하는 것"이 아니라 "통일된 시각적 규칙을 만드는 것"이다.
먼저 프로젝트를 분석하고, 분석 결과와 개선 계획을 나에게 보고한 뒤 실제 수정 작업을 시작해라.