컨텐츠 검색
[2026-02-06] 공포 서바이벌 FPS 프로젝트 2일차. 개발 전략 및 기능 명세 고도화

2026. 2. 6. 21:05Dev Log/Project: 공포 서바이벌 FPS 슈터

주요 안건: 기능 명세서 구체화, 기술 스택 확정, 협업 워크플로우(Git LFS) 수립

1. 기술 스택 및 개발 환경 확정

프로젝트의 확장성과 유지보수 효율을 고려하여 다음과 같이 확정했습니다.

  • IDE: JetBrains Rider
    • 선정 이유: Visual Studio 대비 Unreal Engine 매크로 해석 및 블루프린트 심볼 참조 능력이 압도적임. C++ 코드와 에디터 간의 컨텍스트 스위칭 비용을 최소화하기 위함.
  • 프레임워크: Gameplay Ability System (GAS)
    • 선정 이유: 복합적인 상태 이상, 쿨타임, 어트리뷰트 관리가 필요한 전투 시스템에서 데이터 중심(Data-driven) 설계를 가능케 함.
    • 분석: 초기 보일러플레이트 코드가 많다는 단점이 있으나, 차후 스킬 추가 시의 유연성을 고려할 때 가장 최적화된 선택이라 보고 있음.

2. 기능 명세서 고도화

튜터 피드백을 반영하여 컴포넌트 단위의 설계와 선행/후행 작업을 기능 명세서에 추가했습니다.

[우선순위 로직 분석]

  • 현상: 점수 업데이트(B)는 몬스터 처치 시 포인트 발생(A)에 의존함.
  • 분석: 로직의 데이터 흐름상 데이터 생성(A)이 데이터 출력(B)보다 선행되어야 함.
  • 결정: A(데이터 생성 로직)의 개발 우선순위를 상향하여 병목 현상을 방지함.

3. 협업 워크플로우: Git LFS Lock 도입

바이너리 에셋(.uasset, .umap) 충돌 방지를 위한 강제적인 잠금 프로세스를 수립합니다.

  • 원인: 언리얼의 바이너리 파일은 텍스트와 달리 병합(Merge)이 불가능함.
  • 분석: 두 명 이상의 작업자가 동시에 같은 블루프린트를 수정할 경우, 한 명의 작업량은 반드시 유실됨.
  • 수정 사항: .gitattributes에 lockable 속성 부여 및 명령어를 통한 상호 배제(Mutual Exclusion) 적용.
    • .uasset filter=lfs diff=lfs merge=lfs -text lockable
    • .umap filter=lfs diff=lfs merge=lfs -text lockable
  • 결과: 작업 전 lock을 획득한 인원만 수정이 가능하게 하여 작업 유실 원천 차단.

4. GAS 도입에 따른 아키텍처 분석

  • 장점: 기능 간 결합도가 낮아져 기획 변경(예: 스킬 밸런스 조정)에 유연함.
  • 단점/위험 요소: 학습 곡선이 높고, 단순한 기능 구현에는 오버헤드가 발생할 수 있음.
  • 개선 방안: 모든 기능을 GAS로 구현하기보다, 핵심 전투 로직은 GAS로, 단순 UI 연출은 일반 델리게이트 방식으로 분리하여 복잡도를 관리해야 함.

5. 인벤토리

캐릭터에 붙는 컴포넌트로 관리하여 아이템 추가/삭제, 드래그앤 드롭으로 아이템 이동 기능을 넣고 아이템 ID와 수량 데이터를 관리하고 I키로 인벤토리 토글하기로 결정했습니다.


6. 향후 일정

  • 내일(02.07) 오전 10시: 회의 시작.
  • 오후 1시까지: 기능 명세 기반 역할 분담 및 추상화 작업 완료.
  • 추가 목표: 시간이 허락한다면 Gameplay Tag 구조 설계까지 완료하여 GAS 기초 기반 마련.