포스트

개발일지 #06 - 마일스톤 회고: FSM/AI·무기 파이프라인 총정리

FishNet 학습부터 FSM/AI, 무기 파이프라인까지 — 1주차 총정리

개발일지 #06 - 마일스톤 회고: FSM/AI·무기 파이프라인 총정리

Week 1 한눈에 보기

8/30~9/4 동안 ShadowWave의 네트워크·상태·전투의 골격을 세웠다. FishNet의 기본 문법 학습에서 출발해, 상태 동기화형 FSM을 플레이어와 적 양쪽에 적용했고, 무기 데이터/프리팹/리코더/장착/스폰/에디터 툴까지 파이프라인을 관통하는 흐름을 만들었다.

요약: Day 1 ~ Day 5 개발일지

  • Day 1: FishNet 네트워크 기본 학습 (권한/함수/RPC/SyncVar)
  • Day 2: 커스텀 상태 동기화 SyncEnum<TEnum> 구현
  • Day 3: 플레이어 FSM 구축 (Idle/Move/Roll/Attack) 및 동기화 검증
  • Day 4: 적 FSM/AI 구축 (Idle/Patrol/Chasing/Dead) + 서버 권한 구조 확립
  • Day 5: 무기 파이프라인 구축 (SO, 프리팹, 리코더, 컨트롤러, 스포너, 에디터 툴)

이번 주 성과

  • FishNet 학습 정리: 권한 체계, [Server]/[Client], ServerRpc/ClientRpc/ObserversRpc, SyncVar<T>의 OnChange 활용 등 기본기를 확보했다.
  • 제네릭 상태 동기화(SyncEnum<TEnum>): 서버 권한 변경, 델타/풀 전송, 변경 이벤트를 표준화하여 어떤 열거형 상태에도 재사용 가능하게 만들었다.
  • 플레이어 FSM: Idle/Move/Roll/Attack 상태를 컴포넌트화하고, NetworkAnimator 트리거 동기화로 화면 표현의 일관성을 보장했다.
  • 적 FSM/AI (서버 전용 Tick): 판단·상태 전환을 서버에서 묶어 처리하여 권한 충돌과 보안 위험을 낮췄다.
  • 무기 파이프라인: SO_Weapon(데이터) <-> WeaponPresenter(View) <-> SO_WeaponRecorder/WeaponRecorder(기록) <-> WeaponController(장착) <-> WeaponSpawner(서버 스폰)로 흐름을 정리했다. Odin 기반 에디터 창으로 에셋 생성을 자동화했다.

일정 변수

6~7일 차에는 온라인 게임잼에 긴급 합류했다. 이 게임잼은 금요일 오후부터 월요일 오전까지 온라인으로 진행되는 일정이었는데, 나는 사실 사전 신청 단계에서 선별되지 못한 인원이었다. 그러나 기존 프로그래머의 하차로 인해 운영진으로부터 일요일 점심쯤 갑작스러운 연락을 받았고, 마감 24시간 전에 투입되어 미니게임용 핵심 기능을 단독으로 완수하는 강행군을 치렀다. 이로 인해 당초 Week 1 목표였던 플레이어 <-> 적 상호작용 완성은 미완으로 남았다. 게임잼 후기는 별도 글로 다룰 예정이다.

느낀 점

  • 서버 권한 설계의 확실함: 상태 변경과 AI 판단을 서버로 모아두니 불일치와 보안 리스크가 눈에 띄게 줄었다. 초기부터 일관된 권한 철학을 심는 것이 유지보수 비용을 낮춘다.
  • FishNet의 자유도와 책임: 고수준 마법 대신 로우 레벨을 직접 설계해야 하지만, 그만큼 프로젝트 규칙(상태·이벤트·직렬화)을 공통화하면 강력한 일관성을 얻는다.

다음 주 계획(Week 2)

  • 전투 파이프라인 확장: SO_WeaponLogic 정식화(근접/원거리 타이밍, 히트 훅), 스탯(사거리/공속 등) 정의.
  • 플레이어 <-> 적 상호작용 완성: 히트 판정, 경직/무적 프레임, 데미지 처리(서버 판정) 연계.
  • 콤보 공격 구조: 재사용 가능한 콤보 체인(입력·타이밍·상태 전환) 설계/구현.
  • 네트워크 검증/테스트: Host/Client 재현성, 지연/패킷 유실 환경에서의 일관성 확인.
  • UX/툴링: InputSystem 라우팅 정리, 에디터 자동화(검증/링크/프리셋) 고도화.

마치며

1주차는 기본을 다지고 감을 잡은 시간이었다. 어디서 막히는지, 무엇부터 손봐야 할지도 정리됐다. 2주차에는 플레이어와 적이 실제로 상호작용하는 흐름까지 작업해 볼 생각이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.