NPC의 움직임과 판단, 학습을 만드는 13가지 알고리즘 패턴
Unity로 배우는 게임 AI 교재의 실습 코드 리포지토리입니다.
이 리포지토리는 "게임 인공지능" 교재의 Part I ~ Part VII에서 다루는 13개 Lab의 Unity 실습 코드를 제공합니다.
| Part | 제목 | Lab |
|---|---|---|
| Part I | AI 기초와 에이전트 | Lab 1-2 |
| Part II | 환경 인지와 불확실성 | Lab 3 |
| Part III | 이동 알고리즘 | Lab 4-5 |
| Part IV | 경로 탐색 | Lab 6-7 |
| Part V | 고급 의사결정 | Lab 8-9 |
| Part VI | 강화학습과 적응형 AI | Lab 10-11 |
| Part VII | 절차적 콘텐츠 생성 | Lab 12-13 |
각 Lab을 완성하면서 다음을 학습할 수 있습니다:
- ✅ FSM (Finite State Machine): 순찰/추적/공격 AI 구현
- ✅ 센서 시스템: 시야각, 청각, 레이캐스트 기반 인지
- ✅ Boids 알고리즘: 군집 행동 시뮬레이션
- ✅ Steering Behaviors: Seek, Flee, Arrive, Pursue
- ✅ A 경로 탐색*: 그리드 기반 길찾기
- ✅ NavMesh: Unity 내장 경로 탐색
- ✅ Behavior Tree: 모듈화된 의사결정
- ✅ GOAP: 목표 지향 행동 계획
- ✅ Q-Learning: 강화학습 기초
- ✅ Unity ML-Agents: 딥러닝 기반 AI
- ✅ Perlin Noise: 절차적 지형 생성
- ✅ Cellular Automata: 던전 생성
| 항목 | 권장 | 최소 |
|---|---|---|
| Unity 버전 | 2022.3 LTS 이상 | 2021.3 LTS |
| 개발 환경 | Visual Studio 2022 / Rider | VS 2019 |
| .NET | .NET Standard 2.1 | .NET Standard 2.0 |
| OS | Windows 10/11, macOS Monterey | Windows 8.1, macOS Big Sur |
- ProBuilder (Lab 6, 7)
- Cinemachine (카메라 작업)
- Unity ML-Agents (Lab 11)
# Unity Hub에서 새 프로젝트 생성
# Template: 3D (URP 또는 Built-in)
# Project Name: GameAI_Tutorial원하는 Lab의 폴더를 Unity 프로젝트의 Assets/ 폴더에 복사합니다.
Unity_Project/
└── Assets/
├── PartI-AI기초와에이전트/
│ └── Lab01_BasicAgent/
└── ... (기타 Lab)
각 Lab 폴더의 README.md를 참고하여 씬을 설정하고 테스트합니다.
- SimpleAgent 클래스 구현
- Rigidbody 기반 이동
- 디버그 시각화
- 유한 상태 기계 구현
- Patrol/Chase/Attack 상태
- 시야각 센서
- VisionSensor (시야각)
- HearingSensor (청각)
- Investigate 상태
- Separation/Alignment/Cohesion
- 장애물 회피
- 공간 분할 최적화
- Seek, Flee, Arrive
- Pursue, Evade
- Wander
- 그리드 기반 A* 알고리즘
- 휴리스틱 함수
- 경로 스무딩
- Unity NavMesh 설정
- NavMeshAgent 활용
- 동적 장애물
- BT 노드 구조 (Selector/Sequence)
- 경비병 AI 구현
- Decorator 패턴
- GOAP 플래너
- Action/Goal 시스템
- 마을 주민 AI
- Q-Table 구현
- 보상 시스템
- 미로 탈출 학습
- ML-Agents 설치
- 학습 환경 구성
- 모델 훈련 및 추론
- Perlin Noise 알고리즘
- 지형 생성 및 시각화
- 다층 노이즈
- Cellular Automata
- 동굴/던전 생성
- 연결성 보장
gameAI/
├── PartI-AI기초와에이전트/
│ ├── Lab01_BasicAgent/
│ └── Lab02_PatrolFSM/
├── PartII-환경인지와불확실성/
├── PartIII-이동알고리즘/
├── PartIV-경로탐색/
├── PartV-고급의사결정/
├── PartVI-강화학습과적응형AI/
├── PartVII-절차적콘텐츠생성/
├── Shared/ # 공통 유틸리티
└── Docs/ # 문서
자세한 구조는 REPOSITORY_STRUCTURE.md를 참고하세요.
- 기초 단계 (Lab 1-3): FSM과 센서 시스템 이해
- 이동 단계 (Lab 4-5): 군집 행동과 조향 행동
- 경로 단계 (Lab 6-7): 경로 탐색 알고리즘
- 의사결정 단계 (Lab 8-9): BT와 GOAP
- 학습 단계 (Lab 10-11): 강화학습
- 생성 단계 (Lab 12-13): PCG
- 각 Lab은 이전 Lab의 내용을 기반으로 합니다
- 코드를 직접 타이핑하면서 학습하는 것을 권장합니다
- Scene 뷰에서 Gizmos를 활성화하여 디버그 정보를 확인하세요
- 각 Lab의 "실습" 섹션을 완료하여 심화 학습하세요
Q: 스크립트 컴파일 에러가 발생합니다
A: .NET Standard 2.1 설정 확인
Edit → Project Settings → Player → Other Settings → Api Compatibility Level
Q: Rigidbody가 계속 회전합니다
A: Constraints → Freeze Rotation: X, Z 체크
Q: NavMesh가 생성되지 않습니다
A: Window → AI → Navigation → Bake 클릭
Static 체크박스 확인
더 많은 문제 해결은 Docs/TroubleShooting.md를 참고하세요.
MIT License
본 프로젝트의 모든 코드는 교육 목적으로 자유롭게 사용, 수정, 배포할 수 있습니다.
버그 리포트, 개선 제안, Pull Request를 환영합니다!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
이슈가 있으시면 GitHub Issues에 등록해주세요.
이 교재와 실습 코드가 게임 AI 학습에 도움이 되기를 바랍니다!
Happy Coding! 🎮