بنقرة واحدة
verify-player-system
플레이어 컨트롤러, 자동 공격(AI) 루프, 카이팅(Kiting) 이동 및 토글 연동 무결성을 검증합니다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
플레이어 컨트롤러, 자동 공격(AI) 루프, 카이팅(Kiting) 이동 및 토글 연동 무결성을 검증합니다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
인게임 핵심 시스템(GameManager, UIManager), 초기화 순서 안전성, UI 데이터 바인딩을 검증합니다.
로비 UI의 팝업 관리 및 뒤로가기(ESC) 로직을 검증합니다. PopupManager 등록 및 중복 입력 처리 여부를 확인합니다.
타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다.
프로젝트 전체의 사운드 구현 패턴을 검증합니다. 싱글톤(Singleton) 대신 인터페이스 주입(DI) 방식의 사용을 권장합니다.
세션 변경사항을 분석하여 검증 스킬 누락을 탐지합니다. 기존 스킬을 동적으로 탐색하고, 새 스킬을 생성하거나 기존 스킬을 업데이트한 뒤 GEMINI.md를 관리합니다.
플레이어 데이터의 DTO/Service 구조, 암호화 처리, 로컬 저장소 정합성을 검증합니다.
| name | verify-player-system |
| description | 플레이어 컨트롤러, 자동 공격(AI) 루프, 카이팅(Kiting) 이동 및 토글 연동 무결성을 검증합니다. |
플레이어 캐릭터의 조작 반응성과 전투 AI의 안정성을 확보하기 위해 다음을 검증합니다:
AutoAttackLoopAsync)가 CancellationToken을 정확히 준수하여 메모리 누수를 방지하는지 확인PlayerController를 통해 하위 시스템으로 즉시 전파되는지 확인PlayerController.cs)을 수정한 후PlayerAutoAttackSystem.cs) 또는 이동 로직(PlayerMovement.cs)을 변경한 후| File | Purpose |
|---|---|
Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerController.cs | 플레이어 하위 시스템 제어 및 Facade |
Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerAutoAttackSystem.cs | 적 탐지 및 추적/공격 루프 로직 |
Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerMovement.cs | 캐릭터 물리/트랜스폼 이동 처리 |
Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerInputHandler.cs | 조이스틱 및 키보드 입력 해석 |
토글 값이 설정될 때 즉시 공격 루프를 가동하는지 확인합니다.
파일: PlayerController.cs
검사:
grep -A15 "public bool AutoAttackEnabledByToggle" Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerController.cs | grep "m_autoAttack.Enable()"
PASS: Setter 내에서 value가 true일 때 Enable()을 즉시 호출함
FAIL: 단순히 필드 값만 저장하고 다음 프레임을 기다림
수정: AutoAttackEnabledByToggle setter에 즉시 활성화 로직 추가
안전 거리(m_safeDistance) 계산 및 후퇴 이동 방향이 올바른지 확인합니다.
파일: PlayerAutoAttackSystem.cs
검사:
# 1. 안전 거리 필드 존재 확인
grep "m_safeDistance" Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerAutoAttackSystem.cs
# 2. 후퇴 이동 로직 (-dirToTarget) 확인
grep "AutoMoveDirection = -dirToTarget" Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerAutoAttackSystem.cs
PASS: m_safeDistance 상수가 존재하며, 거리 미달 시 타겟 반대 방향으로 이동 벡터 설정
FAIL: 후퇴 로직이 없거나 방향 계산 오류
수정: AutoAttackLoopAsync 내 거리 비교 로직 보강
무한 루프가 오브젝트 파괴 시 적절히 종료되는지 확인합니다.
파일: PlayerAutoAttackSystem.cs
검사:
# 1. 루프 시작 시 연동된 토큰(LinkedToken) 사용 확인
grep "CreateLinkedTokenSource" Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerAutoAttackSystem.cs
# 2. Yield 시 토큰 전달 확인
grep "await UniTask.Yield" Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerAutoAttackSystem.cs | grep "token"
PASS: GetCancellationTokenOnDestroy()와 연동된 토큰을 루프와 Yield에 사용함
FAIL: 토큰 없이 루프를 돌리거나 Yield 시 토큰 누락 (메모리 누수 위험)
수정: 비동기 메서드 인자로 CancellationToken을 전달하고 상시 확인
사용자가 직접 조종할 때 AI 이동이 중단되는지 확인합니다.
파일: PlayerController.cs
검사:
grep -A10 "if (isJoystickActive)" Assets/_Game/Scripts/InGame/Player/Player_Base/PlayerController.cs | grep "m_autoAttack.Disable()"
PASS: isJoystickActive 조건문 내부에서 m_autoAttack.Disable() 호출 존재
FAIL: 조작 중에도 AI 이동 벡터가 간섭함
수정: HandleControlLogic 내 이동 우선순위 로직 수정
| 검사 항목 | 상태 | 파일/상세 |
|---|---|---|
| 토글 즉시 반응 | PASS | Setter 내 Enable() 호출 확인 |
| Kiting 로직 | PASS | 안전 거리 기반 후퇴 벡터 확인 |
| 루프 안정성 | PASS | CancellationToken 연동 확인 |
| 조작 상호 배제 | PASS | 조이스틱 활성 시 AI 중단 확인 |
PlayerLoopTiming 변경으로 인해 Yield 대신 Delay를 사용하는 구간이 생길 수 있으나, 항상 토큰 취소 여부를 확인해야 합니다.