Practice_Unity/Assets/Scripts/AI/Logic.md
SeonKyu_Kim b2e290df76 작업
시야감지 작업 완료
에너미 상태 완료
상태 변환 로직 완료

필요한건 todo 파일 보면서 확인 할 것
Todo
1. 에너미 추가학기 위한 path 하는 작업 하기
2025-09-24 18:06:09 +09:00

10 KiB

Enemy AI Logic

1. 개요

이 문서는 게임 내 적 AI 시스템의 설계 원칙과 구현 방법을 설명한다. 적 AI는 플레이어에게 도전적이면서도 예측 가능한 패턴을 제공하여 게임 플레이 경험을 향상시키는 것을 목표로 한다.

2. AI 아키텍처

2.1 상태 기계(State Machine)

적 AI는 기본적으로 상태 기계 패턴을 사용하여 구현되며 다음과 같은 주요 상태를 포함한다:

  • 대기(Idle): 특별한 행동 없이 주변을 관찰 및 가벼운 주변 배회 이동
  • 순찰(Patrol): 정해진 경로를 따라 이동
  • 추적(Chase): 플레이어를 감지하고 추적
  • 공격(Attack): 플레이어에게 공격 실행
  • 도망(Retreat): 체력이 낮을 때 안전한 위치로 이동

2.2 결정 트리

상태 전환은 다음 조건에 따라 결정됩니다:

  • 감지 시스템
    • 플레이어와의 거리
    • 시야각 내 플레이어 존재 여부
  • 현재 체력 상태
  • 마지막 공격 후 경과 시간

3. 감지 시스템

3.1 단계

  • 감지 시스템에 따라 상태가 정해지며 총 4단계로 정의한다.
    1. 0단계 : 아무런 이상 없이 감지가 되지 않는 상태
    1. 1단계 : 이상은 감지 하였으나 타겟이 특정되지 않은 상태
    1. 2단계 : 이상 위치를 파악한 상태
    1. 3단계 : 이상 타겟을 특정한 상태

3.1 시야 감지

  • Enemy의 시야에 따른 감지 범위 설정
  • 시야각: 전방 120도
  • 최대 거리: 30 ~ 40미터 (난이도에 따라 조정)
  • 감지 거리: 15 ~ 20미터 (난이도에 따라 조정)
  • 인식 거리: 0 ~ 15미터 (난이도에 따라 조정)
  • 장애물 고려: 시야 차단 검사
  • 시야에 따른 감지 단계 전환:
    • 0단계 -> 1단계: 0.5 ~ 1초 동안 감지 거리 내에 캐릭터 오브젝트가 시야 안에 들어옴 (적대 관계인지 아닌지 파악)
    • 1단계 -> 2단계: 1초 이상 감지 거리 내에 캐릭터 오브젝트가 시야 안에 들어옴
    • 2단계 -> 3단계: 인식거리 내에 캐릭터 오브젝트가 시야 안에 들어옴
    • 역전환 조건:
      • 3단계 -> 2단계: 타겟이 최대 거리 밖으로 벗어난 상태가 3초 이상 지속되며 관찰했던 타겟의 위치를 기억
      • 2단계 -> 1단계: 이상의 최종 위치로 이동 후 주변(반경 5미터 이내) 순찰 후 5초간 타겟이 발견되지 않음
      • 1단계 -> 0단계: 원래 위치로 이동 후 3초간 아무런 이상이 발견되지 않음

3.2 청각 감지

  • 플레이어 행동 소음 수준에 따른 감지 범위 설정
  • 감지 거리: 10 ~ 25미터 (난이도에 따라 조정)
  • 소음 발생 지수
    • 장애물 고려: 청각 차단 검사
    • 소음의 지수는 캐릭터 오브젝트의 움직이는 속도와 행동에 따라 결정된다.
    • 측정 기준 수치 : 걷기 : 0~3의 속도 / 달리기 : 3 이상 /
      • 일반적인 걷기: ((1 * 소음 방지 지수(기본 1)) * 캐릭터의 이동 속도) - 장애물 지수(장애물이 있으면 1, 없으면 0) = 0 ~ 3
      • 달리기 : ((1.2 * 소음 방지 지수(기본 1)) * 캐릭터의 이동 속도) - 장애물 지수(장애물이 있으면 1, 없으면 0) = 3.6 이상
      • 공격 : ((1.5 * 소음 방지 지수(기본 1)) * 5) - 장애물 지수(장애물이 있으면 1, 없으면 0) = 7.5
  • 소음 수준: (캐릭터 오브젝트의 소음 발생 지수에 따라 결정)
    • 무소음: 0 ~ 1
    • 약한 소음: 1 ~ 2.5
    • 보통 소음: 2.5 ~ 4
    • 큰 소음: 4 이상
  • 소리에 따른 감지단계 전환:
    • 0단계 -> 1단계: 약한 소음 이상이 감지 거리 내에 들어옴
    • 1단계 -> 2단계: 보통 소음 이상이 감지 거리 내에 들어옴
    • 2단계 -> 3단계: 큰 소음이 감지 거리 내에 들어옴
    • 역전환 조건:
      • 3단계 -> 2단계: 타겟이 최대 거리 밖으로 벗어난 상태가 3초 이상 지속되며 관찰했던 타겟의 위치를 기억
      • 2단계 -> 1단계: 이상의 최종 위치로 이동 후 주변(반경 5미터 이내) 순찰 후 5초간 타겟이 발견되지 않음
      • 1단계 -> 0단계: 원래 위치로 이동 후 3초간 아무런 이상이 발견되지 않음

4. 행동 패턴

4.1 상태

  • 행동 패턴은 각 AI가 가지는 상태에 따라서 그 동작이 결정된다.
  • 상태는 행동 패턴의 대기, 순찰, 전투 등과는 다른 개념이다.
  • 상태의 종류는 다음과 같다:
    • 일반(Normal): AI의 행동에 개입하는 어떠한 이상이나 타겟이 없는 상태로 주어진 행동 패턴에 맞는 활동을 수행한다.
    • 감지(Detected): AI가 이상을 감지한 상태로 아직은 타겟을 파악하지는 못하였기에 주어진 행동 패턴에 맞는 활동을 수행하나 언제든 다음 상태로 넘어갈 수 있는 상태이다.
    • 인식(Aware): AI가 이상을 인식한 상태이지만 아직도 타겟은 특정 캐릭터 관련 오브젝트가 아니라 이상이 발생한 위치이다. 이 상태에서는 주어진 행동 패턴에서 인식 상태에 맞는 활동을 수행한다.
    • 탐지(Alerted): AI가 타겟을 탐지한 상태로 이때 타겟을 향해 상호작용을 진행한다. 주어진 행동 패턴에서 탐지 상태에 맞는 활동을 수행한다.
  • 상태의 전환은 감지 시스템과 캐릭터 오브젝트의 상황에 따라 결정된다.

4.2 대기(Idle) 로직

  • 주변을 천천히 관찰하며 가벼운 주변 배회 이동을 한다.
  • 상태의 전환은 감지 시스템에 의해 결정된다.
    • 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
    • 각 상태별 대기 행동:
      • 일반 상태: 정해진 반경 내 랜덤 이동 (반경 2미터 이내), 주기적인 방향 전환, 주변 환경 관찰
      • 감지 상태: 의심 방향으로 돌리기, 이동 속도 감소, 주의 집중도 증가
      • 인식 상태: 의심 지점으로 이동, 주변 5미터 반경 탐색, 방어 태세 준비
      • 탐지 상태: 타겟 방향으로 신속 이동, 공격 준비 태세, 전투 로직 활성화

4.3 순찰(Patrol) 로직

  • 정해진 경로를 따라 순찰하며 지점 도달 시 주변을 관찰한다.
  • 무작위 대기 행동 추가로 자연스러운 움직임 구현
  • 상태의 전환은 감지 시스템에 의해 결정된다.
    • 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
    • 각 상태별 순찰 행동:
      • 일반 상태: 정해진 경로를 따라 순찰, 지점 도달 시 주변 관찰(2~4초)
      • 감지 상태: 의심 방향으로 돌리기, 이동 속도 감소, 주의 집중도 증가
      • 인식 상태: 의심 지점으로 이동, 주변 5미터 반경 탐색, 방어 태세 준비
      • 탐지 상태: 타겟 방향으로 신속 이동, 공격 준비 태세, 전투 로직 활성화

4.3 전투(Attack) 로직

  • 근접 공격: 플레이어와 2미터 이내일 때 실행
  • 원거리 공격: 5-10미터 거리에서 실행
  • 공격 쿨타임: 1-3초 (난이도에 따라 조정)
  • 상태의 전환은 감지 시스템에 의해 결정된다.
    • 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
    • 각 상태별 전투 행동:
      • 일반 상태: 비전투 태세 유지, 주변 경계
      • 감지 상태: 방어 태세 준비, 이동 속도 감소, 이전에 하던 행동으로 전환
      • 인식 상태: 타겟 위치로 신속 이동, 공격 준비
      • 탐지 상태: 타겟 추적 및 공격 실행, 회피 및 방어 동작 포함

4.4 추적(Chase) 로직

  • 플레이어를 감지하면 추적 상태로 전환
  • 추적 속도: 기본 이동 속도(걷기)의 1.2배
  • 추적 중 플레이어가 시야에서 벗어나면 마지막 위치로 이동 후 주변 탐색
  • 상태의 전환은 감지 시스템에 의해 결정된다.
    • 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
    • 각 상태별 추적 행동:
      • 일반 상태: 비전투 태세 유지, 주변 경계
      • 감지 상태: 방어 태세 준비, 이동 속도 감소, 이전에 하던 행동으로 전환
      • 인식 상태: 타겟 위치로 신속 이동, 공격 준비
      • 탐지 상태: 타겟 추적 및 공격 실행, 회피 및 방어 동작 포함

4.5 도망(Retreat) 로직

  • 체력이 20% 이하로 떨어지면 도망 상태로 전환
  • 도망 속도: 기본 이동 속도의 1.2배
  • 안전한 위치(예: 아군 근처, 엄폐물 뒤)로 이동
  • 도망 중 플레이어가 시야에서 벗어나면 일정 시간 후 원래 위치로 복귀
  • 상태의 전환은 감지 시스템에 의해 결정된다.
    • 감지 0단계는 일반 상태, 감지 1단계는 감지 상태, 감지 2단계는 인식 상태, 감지 3단계는 탐지 상태로 전환된다.
    • 각 상태별 도망 행동:
      • 일반 상태: 비전투 태세 유지, 주변 경계
      • 감지 상태: 방어 태세 준비, 이동 속도 감소, 이전에 하던 행동으로 전환
      • 인식 상태: 타겟 위치로 신속 이동, 공격 준비
      • 탐지 상태: 타겟 추적 및 공격 실행, 회피 및 방어 동작 포함

5. 경로 탐색

5.1 NavMesh 활용

  • Unity NavMesh 시스템을 활용한 경로 계산
  • 장애물 회피를 위한 NavMeshObstacle 활용
  • 동적 장애물 감지 시 경로 재계산(0.5초 간격)

5.2 특수 이동

6. 성능 최적화

6.1 LOD 시스템

  • 거리에 따른 AI 복잡도 조절
  • 30미터 이상: 간소화된 행동 패턴 사용
  • 50미터 이상: 시각적 업데이트만 수행

6.2 계산 분산

  • 감지 로직 업데이트: 0.2초마다 실행
  • 경로 재계산: 필요시에만 수행(최소 0.5초 간격)

7. 확장성

7.1 AI 난이도 조정

  • 감지 범위, 반응 속도, 공격력 등 조정 가능한 파라미터 제공
  • 난이도별 프리셋 구성

7.2 새로운 AI 유형 추가

  • 기본 AI 컨트롤러를 상속받아 확장
  • 커스텀 상태 및 전환 조건 정의 방법