FPS Game: 프로젝트 설계
🎯 개발 목적
- FPS 장르의 핵심 메커니즘(플레이어 이동, 무기 시스템, 적 AI) 구현
- FSM에서 Behavior Tree, 그리고 ML-Agents PPO까지 확장하여 게임 AI 설계 및 강화학습 경험 확보
- 클라이언트-서버 구조를 적용해 실제 서비스 아키텍처 구조 구현
-> 완성도 있는 단일 FPS 게임을 구축
📁 디렉토리 구조
FpsGame/
├── frontend/ # Unity 기반 클라이언트
│ └── Assets/
│ └── Scripts/ # Player, Weapon, Enemy, BT, ML-Agent 등 게임 로직
└── backend/ # Node.js 기반 API 서버
├── controllers/
├── models/ (Player.js, Match.js, Score.js ...)
├── routes/
└── app.js
🚀 브랜치 전략
main → 배포용
develop → 통합 개발
feature/~~~ → 기능 개발
✨ 현재 구현 기능 (v0.1-beta)
✅ 로그인 & 로비
- 회원가입 / 로그인 기능 (MongoDB Atlas + Render 배포 서버 연동)
- 로비 UI: 맵 선택 패널 + 디테일 패널
- 다중 맵 선택 및 전환 가능
✅ 게임 씬
- 플레이어 조작
- 무기 시스템
- 적 AI
- FSM 기반에서 Behavior Tree로 확장
- NavMesh 기반 경로 탐색 및 상태 전환
- Unity ML-Agents PPO 강화학습 적용
- 보상 함수 설계(플레이어 탐지, 공격 성공, 생존 등)
- 학습된 정책을 NPC 행동에 반영 → 플레이어 움직임에 적응하는 AI 구현
- 규칙 기반(FSM/BT)과 학습 기반(PPO) AI 비교·통합
✅ 옵션 메뉴
🧠 AI 시스템
- FSM → Behavior Tree → ML-Agents PPO
- FSM: 단순 상태 전이 기반 AI
- Behavior Tree: ScriptableObject 기반 조건/행동 노드 관리
- ML-Agents PPO: 강화학습 기반 NPC 행동 학습 및 적응
- 규칙형 AI와 학습형 AI를 혼합하여 다양한 전술 패턴 구현
🔭 향후 개발 계획
- ScriptableObject를 활용한 데이터 관리
- Persona Chat Engine프로젝트와 연결
- 🗺️ 다중 맵 플레이 안정화
- 🎮 Behavior Tree + PPO 기반 적 AI 패턴 다양화
- 📊 멀티플레이 기반 점수/랭킹 시스템 (서버 연동)
- 🧩 강화학습 보상 함수 고도화 및 멀티에이전트 학습 적용