87 lines
8.6 KiB
Markdown
87 lines
8.6 KiB
Markdown
|
|
# FR 필드 · 장비 · 최소화 모드 · 맵 이동 — 세션 인수인계서 (2026-09-30 · BT42~BT46)
|
||
|
|
|
||
|
|
> 이 문서 하나로 다음 세션이 이어갈 수 있게 적었다. 원문 · 과정은 `공유/대화로그/FirstRising/2026-09-29.md`(BT42) · `2026-09-30.md`(BT43~45) · `공유/대화로그/조직운영/2026-09-30_Claude앱_트레이.md`(BT46), 지시 로그는 `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md`.
|
||
|
|
> 세션 종료 사유: 컨텍스트 한도(PD 2026-09-30 "본 세션은 컨텍스트 한도에 도달했어 … 인계서 및 프롬프트 제공").
|
||
|
|
|
||
|
|
## 0. 다음 세션 첫 프롬프트 (그대로 붙여넣기)
|
||
|
|
|
||
|
|
```
|
||
|
|
FR(FirstRising) 작업을 이어서 진행한다.
|
||
|
|
인수인계서: 공유/대화로그/FirstRising/2026-09-30_세션인수인계.md 의 §0-1 · §1 · §2 를 먼저 읽고,
|
||
|
|
현황을 3줄로 보고한 뒤 내 지시를 기다려라. (로그 전문 읽기 금지, 필요한 절만 Grep)
|
||
|
|
|
||
|
|
고정 사항:
|
||
|
|
- 커밋 · push 는 PD 지시 시만(FR · 조직 레포 모두). 작업을 마치면 작업 트리에 두고 보고한다
|
||
|
|
- 재컴파일 · Play 조작 · 에디터 설정을 바꾸는 명령 앞에는 Play 여부를 단독 명령으로 먼저 확인한다.
|
||
|
|
PD Play 중에는 코드 수정 · Play 조작 · 무거운 스크립트 금지(읽기 전용 확인만)
|
||
|
|
- 검증 Play 는 끝나면 즉시 종료 · 임시로 바꾼 값(저장 파일 · 창 크기 값 · 훅)은 즉시 원복 · 백그라운드 작업을 남기지 않는다
|
||
|
|
- 오류 확인은 에디터 로그 기준(logscan.py). recompile_status 는 'completed' 글자만 찾는다(따옴표가 이스케이프됨)
|
||
|
|
- 게임 원본 코드 수정 시 날짜 · 이유 한글 주석. 새 코드 · 고친 코드에는 선언 단위 한글 주석. 스크립트는 BT_Visual 노드에만
|
||
|
|
- 파일 삭제는 PD 지시 시만(쓰이지 않게 된 것은 목록으로 보고)
|
||
|
|
- 허위 · 추정 단정 금지(실측 · 코드 · 미검증을 구분해 보고). 감사 호출 생략, 무거운 에이전트 호출은 사전 승인, 세션 전환 권고 금지
|
||
|
|
- 보고는 한국어 · 간결 · 경어, 호칭 PD님. 승인이 필요하면 질문으로 끝낸다
|
||
|
|
```
|
||
|
|
|
||
|
|
## 0-1. 이번에 열 문서(필요한 절만)
|
||
|
|
|
||
|
|
| 하려는 일 | 열 문서 · 절 |
|
||
|
|
|---|---|
|
||
|
|
| 필드 이동(맵만 바꿔 끼우기) · 로딩 화면 · 최소화 모드 배경 · 창 크기 메뉴 | `공유/대화로그/FirstRising/2026-09-30.md` §BT44 · §BT45(원인 표 · 결정) + 메모리 `project_fr_widget_travel_bt44_45.md`(함정) |
|
||
|
|
| 장비 → 싸우는 캐릭터 · 정보 화면 | `2026-09-30.md` §BT43 + 메모리 `project_fr_equipment_sync_bt43.md` |
|
||
|
|
| 필드 레벨업 끄기 · GameCanvas 창 가려짐 | `2026-09-29.md` + 메모리 `project_fr_gamecanvas_popup_hidden.md` |
|
||
|
|
| 검증 스크립트 다시 쓰기 | `공유/기획/FirstRising/몬스터보스/tools/unity_eval/bt_evals_0930/README.md` → `%TEMP%\bt_evals\` 로 복사 |
|
||
|
|
| 화면 구성(세 영역) · 옆 창 · 맵 다시 짓기 · 보스 패턴 | 09-28 인수인계서 `2026-09-28_FR_맵_보스_화면구성_세션인수인계.md` §0-1 의 표 |
|
||
|
|
| Claude 앱이 트레이에서 사라짐 | `공유/대화로그/조직운영/2026-09-30_Claude앱_트레이.md` + 메모리 `reference_claude_app_tray_stealth_update.md` |
|
||
|
|
| 조직 레포 커밋 · push | 메모리 `reference_org_repo_commit_push.md` |
|
||
|
|
|
||
|
|
## 1. 현황 한눈에
|
||
|
|
|
||
|
|
| 구분 | 상태 |
|
||
|
|
|---|---|
|
||
|
|
| FR `bt/work` | **`4bca428e62`** push 완료(BT42~45). 작업 트리에는 에디터가 덧붙인 변경만 남음(재질 4 · 글자체 3 · `GlobalEntitySceneDependency.asset`) — 건드리지 않는다 |
|
||
|
|
| 조직 레포 `main` | 이 인계서와 함께 커밋 · push(BT42~46 기록 · 검증 스크립트 사본) |
|
||
|
|
| BT42 필드 레벨업 끄기 | 완료 · PD 확인 대기(보스전 전용 필드 포함 여부) |
|
||
|
|
| BT43 장착 무기 모션 · 정보 화면 | 완료 · 검 · 활만 실측 |
|
||
|
|
| BT44 최소화 모드 지형 숨김 · 창 크기 메뉴 | 완료 · PC 빌드 미검증 |
|
||
|
|
| BT45 맵 이동 8.5초 → 1.4~2.0초 · 로딩 화면 | 완료 · 처음 가는 맵 굽기 시간(에디터 전용)은 남음 |
|
||
|
|
| BT46 Claude 앱 트레이 | 원인 확정 · 감시 스크립트 준비. **PD 가 작업 스케줄러 등록 명령을 실행했는지 확인** |
|
||
|
|
| 저장 파일(`LocalLow\ThunderRisingGames\Dead Archive`) | 시험 전 상태로 원복 완료(백업은 세션 scratchpad `save_backup_0930` — 세션이 끝나면 사라져도 된다) |
|
||
|
|
| 백그라운드 작업 · 훅 | 없음(travel_hook · wsm 훅 모두 해제 · 검증 스크립트 모두 종료) |
|
||
|
|
|
||
|
|
## 2. 이번 세션이 만든 것(FR)
|
||
|
|
|
||
|
|
| 파일 | 하는 일 |
|
||
|
|
|---|---|
|
||
|
|
| `Assets/BurningTimes/Visual/Scripts/TVFieldLevelUpGate.cs` (새) | 로비 씬 동안 `PlayerManager.gemLevelUp` 을 끔 |
|
||
|
|
| `TVEquipmentSync.cs` (새) | 장비 변경 신호 → 싸우는 캐릭터 무기 · 능력치 → `changed` 이벤트. 필드가 바뀌면(`TVFieldTravel.fieldChanged`) 새 엔티티에 다시 넣음 |
|
||
|
|
| `TVArcherGear.cs` · `TVCharacterInfoPanel.cs` | 활일 때만 활 장식 / 장비 바뀌면 정보 화면 다시 씀 |
|
||
|
|
| `TVWidgetScenery.cs` (새) | 최소화 모드 동안 맵 엔티티(DisableRendering + `TVWidgetHiddenTag`) · 지형 · 등록된 배경 묶음 숨김 → 복구 |
|
||
|
|
| `TVWidgetSizeMenu.cs` (새) | 하단 UI 위쪽 띠에 마우스 → 창 크기 막대(배수 0.5~2.5 · PlayerPrefs `BT_WidgetSize`). 빌드는 `widgetDiameter`, 에디터는 위젯 영역 localScale 미리 보기 |
|
||
|
|
| `TVRuntimeFont.cs` (새) | 실행 중 만든 화면용 글자체(공용 아틀라스 보호) |
|
||
|
|
| `TVFieldTravel.cs` | `swapInPlace`(기본 켜짐): 몬스터 · 소환수 · 드롭 회수 → 플레이어 떼기 → 맵 서브씬 교체 → 게임의 플레이어 초기화 재실행 → 구역 켜기. 실패하면 예전 방식(로비 씬 다시 읽기) |
|
||
|
|
| `TVLoadingScreen.cs` (새) | 검은 막 + "Loading..." + 진행 막대 |
|
||
|
|
| 게임 원본(정섭 님 · 날짜/이유 주석) | `PlayerManager.gemLevelUp` · `Character.AddGemScore` · `DesktopWidgetManager`(조작 영역 등록 API · 원형 리전 설정 따르기) |
|
||
|
|
| `Assets/GameAssets/LobbyPlayScene.prefab` | BT_Visual 에 위 새 구성 요소 부착 · 글자체 참조 |
|
||
|
|
|
||
|
|
## 3. 실측으로 알게 된 것(다시 조사하지 말 것)
|
||
|
|
- 로비 씬에는 캐릭터가 둘(싸우는 `LevelEssential/Ariel` · 전시용 `Character/CharacterPosition/Ariel`). 게임은 장비를 바꾸면 전시용만 갱신한다.
|
||
|
|
- **플레이어 엔티티(PlayerTag)는 맵 서브씬에 구워져 있다** — 맵을 내리면 사라진다. 떼지 않으면 게임 시스템 5곳이 매 프레임 예외(15,781회 실측).
|
||
|
|
- 맵 이동 예전 방식의 시간: 엔티티 정리 1.9 · 씬 읽기 1.6 · 씬 켜짐 3.3 · 첫 프레임 1.0 · 가림 0.7초. 처음 가는 맵은 서브씬 굽기 4~5.5초(에디터 전용 · 스크립트 고칠 때마다).
|
||
|
|
- 최소화 모드 = `DesktopWidgetManager` 위젯 기능. `WidgetCulling` 레이어만 숨김 → 숲만 그 레이어. 위젯 모드에서 누르면 창 끌기 · 복귀 → 조작 UI 는 `RegisterWidgetControlArea` 필요.
|
||
|
|
- 가짜 마우스 입력 시험은 `InputSystem.onAfterUpdate`(Dynamic) 훅으로 넣어야 게임이 본다.
|
||
|
|
- Claude 앱 트레이 사라짐 = 몰래 업데이트 + `windows-app-job` 기능(09-23~)으로 윈도우가 앱을 못 닫음. 앱 결함.
|
||
|
|
|
||
|
|
## 4. 미검증 · 결정 대기(PD)
|
||
|
|
- PC 빌드: 위젯 창 크기 변경 · 투명 창 · 커서 읽기 · 맵 이동(맵 서브씬이 빌드에 없음 `mapsInBuild`).
|
||
|
|
- 보스전 전용 필드에서도 레벨업이 꺼짐(BT42) — 의도 확인.
|
||
|
|
- 검 · 활 외 무기 종류 · 방어구 · 룬 경로(가방에 아이템 없음) · 소환수가 있는 상태의 맵 이동.
|
||
|
|
- 처음 가는 맵의 굽기 시간을 Play 시작 때 뒤에서 미리 굽게 할지(미구현).
|
||
|
|
- 최소화 모드에서 스킬 칸 · 가방 버튼을 누르면 게임이 '복귀'로 처리(기존 동작). 필요하면 같은 조작 영역 등록으로 풀 수 있다.
|
||
|
|
- BT46 감시 스크립트의 실제 끄고 켜기는 시험하지 않았다(세션이 앱 안에서 돔). 등록 뒤 첫 발생 때 `watchdog.log` 로 확인.
|
||
|
|
|
||
|
|
## 5. 남은 이슈(기존)
|
||
|
|
- 같은 GameCanvas 의 다른 창(사망 결과 · 스킬북 · 게임 메뉴)은 로비 씬에서 게임 화면 아래에 깔림(미수정).
|
||
|
|
- Editor.log 가 매 프레임 '오디오 리스너 2개 · 이벤트 시스템 2개' 경고로 커짐(게임 측 중복 · 11 GB).
|
||
|
|
- `Character.ApplyAbility` 의 능력치 갱신 요청은 값을 종류로 넣는 것으로 보임(정섭 님 확인 필요).
|
||
|
|
- 일일 도전 진입 에디터 충돌(09-24) 원인 미확정 — 재발 시 `TVMaterialProbe.Install()` 절차.
|