IW Zombie - 팀 서바이벌
탐색, 방어, 식사, 논의, 생존판정 5단계 게임 루프 전반과 Tencent IM 채팅 첫 도입을 담당.
배경
보이저에서의 첫 프로젝트. 일본 출시를 목표로 한 팀 서바이벌 게임이었습니다. 팀 내 최초로 Tencent IM SDK 기반 통신 환경을 구축했습니다. 본 프로젝트에서의 기술 도입 경험은 향후 차기작(REIW, ETERNA)의 채팅 아키텍처를 고도화하는 핵심 기반이 되었습니다.
주요 작업
- 5단계 게임 루프(탐색 → 방어 → 식사 → 논의 → 생존 판정) 전반 구현
- Tencent IM 기반 채팅 시스템 첫 도입 및 구현
- AI NPC Behavior Tree 구성 및 Aggro 시스템 설계
- NetworkObjectPool 별도 구현
- 3D 사운드 풀링 시스템 설계
- 전투 로직 및 UI 전반 (인벤토리, 채팅, 논의 팝업)
- 범용 디버그 치트 시스템 설계 - enum 중앙 열거 + scope prefix + ServerRpc 실행
- 서브모듈 병합 작업 팀과 함께 완료 (약 1개월)
5단계 게임 루프 - Server-side FSM
BaseZombieState를 베이스로 Exploration / Defense / HaveMeal / Discussion / SurvivalResult 5개 상태 + CutScene / GameEnd 2개 상태로 분기.
Dedicated Server 환경에서 상태 전이를 일관되게 관리하도록 설계해, 클라이언트는 상태 브로드캐스트를 받아 렌더링만 담당하는 구조로 분리했습니다.
AI NPC - Behavior Tree
Enemy 행동을 EnemyFinding / EnemyPatrol / EnemySearchTarget / EnemyBeginAttack Task로 쪼개고,
Aggro 시스템은 EnemyLowestHpAggroIncrease Task로 분리(최저 HP 타겟 가중치 상승).
디자이너가 트리 형태로 행동 조합을 튜닝할 수 있게 했습니다.
NetworkObjectPool
좀비 스폰/소멸 빈도가 높아 GC와 네트워크 오버헤드가 체감될 수 있는 환경이라, Netcode 풀 핸들러를 만들어 오브젝트를 재사용했습니다.
범용 디버그 치트 시스템
모든 치트 명령을 e_ZombieShortCutCommand enum 하나로 모아 IDE 자동완성과 타입 안전성을 확보하고,
문자열 prefix로 적용 범위를 분리(/t는 팀, /a는 모두, 기본은 본인)했습니다.
hp++5, weapon--3 같은 parameterized 명령은 일반 명령보다 먼저 파싱하고,
실제 실행은 ServerRpc로 돌려서 치팅을 구조적으로 막았습니다.
3D 사운드 풀링
채팅 시스템 - 멀티클라이언트 테스트
4개 클라이언트에서 World / Team / Attraction 채팅이 동시에 동작하는 모습입니다.
컷씬 디테일