Adaptive Tactical Combat (ATC) — Evolution of Game AI & Full-Stack System
🎯 프로젝트 개요
Adaptive Tactical Combat (ATC) 는 Unity 엔진을 기반으로 게임플레이 코어, 지능형 적 AI 아키텍처, 그리고 백엔드 네트워크를 통합 설계한 풀스택 게임 개발 프로젝트입니다.
단순한 규칙 기반 AI의 한계를 극복하기 위해 FSM → Behavior Tree → ML-Agents(PPO) 로 이어지는 3단계 AI 진화 프로세스를 직접 구현하며, 게임 AI의 확장성과 학습 기반 에이전트의 실무 적용 가능성을 실험했습니다. 또한, Node.js 기반의 게임 서버를 연동하여 유저 인증 및 아이템 데이터 영속성을 보장하는 아키텍처를 구축했습니다.
🛠 Tech Stack
| Category | Tools & Technologies |
|---|---|
| Client | Engine: Unity 2022.3+, Language: C# Features: Cinemachine, NavMesh Surface, Animation Rigging |
| AI/ML | Framework: Unity ML-Agents, PyTorch Algorithm: PPO (Proximal Policy Optimization) Architecture: Hybrid (Behavior Tree + RL Agent) |
| Backend | Server: Node.js (Express) Database: MongoDB (Mongoose) Auth: JWT-based Session Management |
🏗️ 시스템 아키텍처
시스템은 Unity 클라이언트의 물리/연산 레이어와 AI 의사결정 레이어, 그리고 데이터 영속성을 담당하는 백엔드로 분리됩니다.
graph TD subgraph Client_Layer [Unity Client: Gameplay Core] Player[Player Controller: FSM] Weapon[Weapon System: Raycast/Projectile] Cam[Cinemachine: Recoil & Shake] end subgraph AI_Layer [Enemy AI Evolution Pipeline] direction TB FSM[Stage 1: FSM - Basic Rules] BT[Stage 2: Behavior Tree - Tactical Flow] PPO[Stage 3: ML-Agents - Adaptive Learning] Perception[Perception System: Vision/Hearing] end subgraph Backend_Layer [Game Server & DB] Auth[Auth Controller: JWT] Inven[Inventory Service] Store[Item Master Service] DB[(MongoDB: Player Data)] end %% Flow Player <--> AI_Layer AI_Layer --> Perception Client_Layer <== "REST API (JSON)" ==> Auth Auth <--> DB Inven <--> DB Store <--> DB %% Styling style Client_Layer fill:#e1f5fe,stroke:#01579b style AI_Layer fill:#fff3e0,stroke:#e65100 style Backend_Layer fill:#e8f5e9,stroke:#1b5e20
✨ 주요 특징
-
AI 진화 아키텍처 (Evolutionary AI): - FSM: 상태 기반의 기초적인 적 행동 정의
-
BT (Behavior Tree): 선택자(Selector)와 시퀀서(Sequence)를 활용한 복합 전술 분기 처리
-
ML-Agents (PPO): 플레이어의 이동 및 사격 패턴에 대응하여 생존율을 극대화하는 자율 학습 에이전트 구현
-
지능형 Perception 시스템: 시야(Vision) 및 청각(Hearing) 센서 모델링을 통해 AI가 환경 정보를 동적으로 수집하고 판단하는 로직 내재화
-
실제 서비스형 백엔드 구조: 유저 인증 및 인벤토리/상점 정보를 관리하는 Node.js 서버를 연동하여 '플레이 → 데이터 저장 → 성장'의 순환 구조 완성
-
하이엔드 슈팅 감각 구현: 애니메이션 커브 기반의 반동(Recoil) 제어 및 상태별 카메라 쉐이크(Shake) 시스템으로 타격감 최적화
🧩 기술적 과제와 해결
-
문제 1: 정형화된 규칙 기반 AI의 예측 가능성 및 단조로움
- 해결: ML-Agents의 PPO 알고리즘을 도입하여 AI가 엄폐물 뒤로 숨거나 플레이어의 사선에서 벗어나는 등 비정형적이고 적응적인 전투 패턴을 확보함.
-
문제 2: 복잡한 지형에서의 AI 경로 탐색 효율 저하
- 해결: Unity NavMesh Surface를 활용한 실시간 동적 베이킹(Dynamic Baking) 을 적용하여, 파괴되거나 이동하는 장애물 환경에서도 끊김 없는 경로 탐색(Steering) 구현.
-
문제 3: 클라이언트와 서버 간의 데이터 무결성 보장
- 해결: 민감한 게임 결과 데이터(재화 획득 등)는 클라이언트가 아닌 서버 사이드 검증 로직을 거쳐 DB에 반영되도록 설계하여 데이터 변조 방지.
🔗 링크 및 시연
- YouTube 시연 영상:
- Source Code: GitHub Repository
- Release Version: v0.1-beta Download