게임 개발 공부 기록

70일차 - Abyss_Slayer 최종 팀 프로젝트 19 (README 작성)

00lwt 2025. 5. 1. 21:33

▶▷ README

Abyss Slayer

Abyss Slayer는 Unity 엔진으로 개발한 2D 횡스크롤 액션 RPG 게임입니다. 로그라이크 요소와 온라인 멀티플레이, 보스 레이드 시스템이 핵심이며 다양한 직업들의 협동 플레이를 지원합니다.

게임 개요

  • 장르: 2D 횡스크롤, 액션 RPG, 로그라이크
  • 플랫폼: PC
  • 엔진: Unity
  • 레퍼런스: 스컬: 더 히어로 슬레이어, 메이플스토리, 던전앤파이터
  • 특징:
    • 온라인 협동 플레이
    • 다양한 보스 패턴 및 공격 방식
    • 직업 선택 및 팀플레이 조합

주요 시스템

게임 사이클

  • 로비 → 준비 → 중간보스 → 보상 → 준비 → 중간보스 → 보상 → 준비 → 최종보스
  • 씬 전환 및 상태 관리는 GameFlowManager를 통한 상태 머신으로 구현

플레이어 FSM (Finite State Machine)

  • 기본 상태
    • Idle, Walk, Jump, Fall
  • 공격 상태
    • Enter State, Use State, Skill Type별 진입 처리

오브젝트 풀링 시스템

  • 제네릭 기반 통합 오브젝트 풀
    • ObjectPool<T>를 통해 타입별 관리
    • BasePoolable 클래스 상속 필수
    • 자동 초기화 및 매개변수 기반 Init 지원
    • 리소스 폴더 기반 자동 로딩

보스 공격 패턴 시스템

  • ScriptableObject 기반 패턴 관리

    • 공격 패턴은 코루틴으로 구성
    • 조건 충족 시 실행 가능한 패턴만 사용
    • 가중치 기반 패턴 랜덤 선택
  • 패턴 예시

    • 할퀴기 (근접 돌진)
    • 여우구슬 (왕복형 원거리)
    • 여우불 (유도형 투사체)
    • 여우분신 (분신 생성 및 폭발)
    • 레이저 박스 (추적 + 경고 후 발사)

스킬 시스템

  • ScriptableObject 및 상속 관계를 이용하여 관리
  • 각 스킬에 공통적으로 있어야 하는 멤버가 포함된 Skill 클래스를 상속받아 공격, 버프 형태 등으로 카테고리 분류
  • 분류된 각각의 카테고리를 상속 받는 클래스가 실제로 생성될 ScriptableObject
  • 같은 카테고리 아래 다양한 종류로 나뉨

SO를 이용한 이유식 씬에만 한 번 로드

  • 스타트/로비는 필요한 UI만 로드

씬 구조 및 상태 전이

  • GameFlowManager

    • IGameState 인터페이스 기반 씬 상태 관리
    • ChangeState() 호출 → LoadingState → 실제 상태 진입
  • LoadingState 로직

    1. Additive 로딩 씬 호출
    2. 이전 UI 제거
    3. 다음 씬 로드 및 ProgressBar 처리
    4. 필요 UI 로드/생성
    5. 실제 상태 OnEnter()