739 lines
34 KiB
Markdown
739 lines
34 KiB
Markdown
# 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를 높이는 것이 목표다.
|
||
|
||
가장 중요한 것은 "많이 추가하는 것"이 아니라 "통일된 시각적 규칙을 만드는 것"이다.
|
||
|
||
먼저 프로젝트를 분석하고, 분석 결과와 개선 계획을 나에게 보고한 뒤 실제 수정 작업을 시작해라.
|