FPS Game: 프로젝트 개요

project design

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 패턴 다양화
  • 📊 멀티플레이 기반 점수/랭킹 시스템 (서버 연동)
  • 🧩 강화학습 보상 함수 고도화 및 멀티에이전트 학습 적용