Communitygithub.com

game-ai

게임 개발을 위한 26개의 에이전트 스킬: Unity, Unreal Engine 5, Blender 모델링, 셰이더 및 오디오 파이프라인.

game-ai란 무엇인가요?

이 스킬은 게임 AI 설계의 핵심 철학과 실용적인 4단계 아키텍처를 제공합니다. 게임 AI는 플레이어에게 페어플레이와 재미를 주기 위해 완벽함보다는 '재미있는 실수'를 하도록 설계되어야 한다는 점을 강조합니다. Behavior Tree와 FSM을 포함한 의사 결정 구조, 시각 및 청각 기반의 센서리 지각 시스템, NavMesh 경로 찾기와 전술적 측면 공격, 그리고 적의 의도를 명확히 전달하는 텔레그래핑과 제어된 무능력(스톰트루퍼 효과)을 다룹니다. 또한 플레이어 테스트 결과를 바탕으로 '불공정한' 저격수 AI를 개선한 실제 예시와 함께, 사용자 정의 적 AI 행동 트리 사양 템플릿을 제공합니다. 이 스킬은 Unity, Unreal Engine 5 등 다양한 게임 엔진과 호환되며, Claude Code, Cursor, Codex와 같은 AI 에이전트에서 활용할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add poorvith-mp/skills-gamedev

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

game-ai은(는) 무엇을 하나요?

핵심 철학

게임 인공지능(AI)은 미래를 예측하거나 인간 체스 챔피언을 이기려는 학술적인 머신러닝이 아닙니다. 게임 AI는 엔터테인먼트와 템포 조절을 위한 환영(illusion)입니다. 초인적인 정확도, 픽셀 단위의 완벽한 조준, 그리고 0에 가까운 반응 시간을 가진 NPC는 상대하기에 좌절감을 주고 재미가 없습니다. 게임 AI는 명확한 신호 전달, 읽을 수 있는 전술적 의사 결정, 믿을 수 있는 감각 지각, 그리고 플레이어가 유능한 상대를 속이고 있다는 짜릿한 감각을 주는 동적 난이도 조정을 제공해야 합니다.


4단계 게임 AI 아키텍처

1단계: 의사 결정 아키텍처: 행동 트리 vs FSM

  1. 행동 트리 (전투 AI의 업계 표준):
    • 왼쪽에서 오른쪽으로 평가되는 계층적 노드로 구성됩니다:
      • 복합(Composites):
        • 시퀀스 ($ o$): 자식을 순차적으로 실행하며, 하나라도 실패하면 실패합니다 (예: 무기 있음 $ o$ 재장전 $ o$ 조준).
        • 선택자 ($?$): 하나가 성공할 때까지 자식을 실행합니다 (예: 체력 낮으면 도망 $?$ 근접 공격 $?$ 엄폐물 찾기).
      • 데코레이터: 조건부 게이트 (예: 반전, 시간 제한, 쿨다운).
      • 잎/작업: 구체적인 실행 가능한 액션 (예: MoveToPosition, PlayAnimation).
  2. 유한 상태 머신(FSM):
    • 단순한 주변 생명체 또는 개별 보스에 가장 적합합니다 (상태: 순찰, 조사, 추적, 공격, 도망).

2단계: 감각 지각 시스템 (시각 & 청각)

  1. 시야 원뿔 (시각 지각):
    • 3가지 게이트를 사용하여 대상 가시성을 평가합니다:
      • 거리 확인: 플레이어가 시야 반경 내에 있는가 ($D \le R_{text{max}}$)?
      • 시야각: 적의 전방 벡터와 플레이어 방향 벡터의 내적이 $\cos(\theta / 2)$ 이상인가?
      • 시선 (레이캐스트): 적의 눈에서 플레이어의 몸통까지의 물리 레이캐스트가 월드 지오메트리 또는 플레이어와 충돌하는가?
  2. 음향 지각 (청각):
    • 게임 월드를 통해 사운드 이벤트를 전파합니다 (예: 총성 = 40m 반경; 발소리 = 8m 반경).
    • 경보를 받은 NPC는 소리 근원 방향으로 조사 상태로 전환합니다.

3단계: NavMesh 경로 찾기 및 전술적 측면 공격

  1. 내비게이션 메쉬에서의 A 경로 찾기*:
    • NPC는 사전에 베이크된 NavMesh를 쿼리하여 경로를 탐색합니다.
    • 상호 속도 장애물 (RVO / ORCA): 5명의 적이 똑같이 일렬로 행진하거나 출구에 병목 현상을 일으키지 않도록 로컬 충돌 회피를 구현합니다.
  2. 전술적 엄폐물 찾기 및 측면 공격:
    • 환경 쿼리 시스템(EQS) 쿼리: 플레이어 주변의 후보 지점을 샘플링하고, 엄폐물 지오메트리 각도, 거리, 시선 보호를 기준으로 점수를 매깁니다.

4단계: 신호 전달 및 유능함의 환영

  1. 의도 신호 전달:
    • 치명적인 공격을 실행하기 전에 NPC는 오디오 큐("왼쪽으로 측면 공격!", "수류탄 투척!"), 준비 애니메이션, 또는 레이저 조준선을 통해 의도를 알려야 합니다.
  2. "스톰트루퍼 효과" (제어된 무능력):
    • 인지하지 못한 플레이어에게 발사된 첫 번째 총알은 의도적으로 1미터 빗나가서 플레이어에게 경고하고 실제 피해를 입히기 전에 아드레날린을 분비하게 해야 합니다.

산출물 형식: 적 AI 행동 트리 사양 (ENEMY-AI-SPEC.md)

# 전투 적 AI 행동 트리 사양: [NPC Archetype]

## 1. 지각 매개변수
- **시야 거리**: 25미터 (낮) / 14미터 (밤)
- **시야각**: 110도
- **청각 반경**: 총성 = 50m | 달리기 발소리 = 12m | 웅크리기 걷기 = 0m (무음)
- **반응 시간 버퍼**: 목표 획득과 공격 트리거 사이 350ms 지연

## 2. 마스터 행동 트리 계층 구조

Root (Selector) ├── [Decorator: Health < 20%] -> Sequence (Emergency Flee) │ ├── FindCoverAwayFromPlayer() │ ├── MoveToCover() │ └── PlayAnimation("Heal") ├── [Decorator: CanSeePlayer == True] -> Selector (Combat Branch) │ ├── [Decorator: InMeleeRange] -> Sequence (Melee Strike) │ │ ├── PlayAudioBark("Charge!") │ │ ├── TelegraphWindup(400ms) │ │ └── ExecuteMeleeDamage() │ └── Sequence (Ranged Engagement) │ ├── Selector (Take Cover or Flank) │ │ ├── [Decorator: InCover] -> AimAtPlayer() │ │ └── MoveToFlankPosition() │ └── FireBurst(3_rounds) └── Sequence (Patrol / Idle) ├── PickNextPatrolWaypoint() ├── MoveToWaypoint() └── WaitRandom(2s, 5s)


## 3. 오디오 바크 및 플레이어 피드백
- **플레이어 발견 시**: *"Contact! Nine o'clock!"*
- **수류탄 투척 시**: *"Frag out! Take cover!"*

작업 예제: "불공정한" 저격수 적 AI 수정

  • 문제: 플레이테스터가 맵 전체에서 즉시 플레이어를 죽이는 저격수 적을 싫어했습니다.
  • 해결책: 발사 전 2.0초 동안 지면을 휩쓰는 빨간색 레이저 조준선과 뚜렷한 오디오 차징음을 추가했습니다.
  • 결과: 플레이어의 죽음이 공정하고 피할 수 있다고 느껴졌으며, 플레이테스트 만족도 점수가 32%에서 88%로 급등했습니다.

검증 체크리스트

  • 지각 시스템이 거리, FOV 원뿔, 물리 레이캐스트 시선을 검증합니다.
  • 행동 트리가 공격 행동보다 생존/도망 상태를 우선시합니다.
  • 모든 치명적인 공격에 읽을 수 있는 신호 전달 애니메이션 또는 오디오 바크가 포함됩니다.
  • NavMesh 에이전트가 출구 혼잡을 방지하기 위해 로컬 회피(RVO)를 구현합니다.
  • 적 반응 시간에 현실적인 인간형 지연 버퍼(200~400ms)가 포함됩니다.

안티 패턴

  • 전지적 AI: 지각 검사 없이 적이 단단한 벽을 통해 플레이어 좌표를 알게 하는 것.
  • 프레임 제로 스냅: 적이 단일 프레임에 180도 회전하여 100% 정확도로 발사하는 것.
  • 일렬로 행진하는 레밍: 8명의 적이 하나의 복도를 통해 일렬로 행진하여 하나씩 학살당하는 것.

관련 스킬