Adaptive tactical Combat

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

CategoryTools & Technologies
Clientunity
Engine: Unity 2022.3+, Language: C#
Features: Cinemachine, NavMesh Surface, Animation Rigging
AI/MLml-agents PyTorch
Framework: Unity ML-Agents, PyTorch
Algorithm: PPO (Proximal Policy Optimization)
Architecture: Hybrid (Behavior Tree + RL Agent)
Backendnode.js
Server: Node.js (Express)
mongodb
Database: MongoDB (Mongoose)
jwt
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에 반영되도록 설계하여 데이터 변조 방지.

🔗 링크 및 시연