관리 메뉴

cyphen156

스컬 모작 프로젝트 #2 프로젝트 버전 마이그레이션 본문

프로젝트/Skul 모작

스컬 모작 프로젝트 #2 프로젝트 버전 마이그레이션

cyphen156 2025. 10. 1. 14:06

완성은 커녕 유기되지나 않으면 다행인 프로젝트

최근 Unity를 좀 안만졌더니 기억이 또 가물가물해졌다.

감각 유지겸 심심할때 진행할 포폴용 프로젝트를 뭐를 할까 고민하다가

부트캠프 때 진행하다가 수없이 많은 스프라이트 덩어리들에 질려서중단햇던 스컬 프로젝트를 가져왔다.

  • 당시 엔진 버전: Unity 6.0.3f1
  • 현재 타깃 버전: Unity 6.3 (베타)

이번에는 기존 프로젝트를 그대로 올리는 버전 업그레이드(version bump) 대신, 새 프로젝트 생성 → 필요한 기능만 선별 이관/리팩토링하는 버전 마이그레이션으로 간다.

리포지토리 구성

  1. Unity 6.3 클라이언트 (Netcode 기반)
    • P2P(클라↔클라) 플레이 우선
  2. 리소스 다운로드 + DB 서버 (C# / Linux)
    • Addressables 원격 로드 전용. 비동기 I/O
  3. 게임 서버 (C#/세션 중개)

Unity CCD를 배워서 써먹을 수도 있기는 한데 그건 내가 원하는 방향은 아니라서 제외하기로 했다.

3번의 경우 epoll 배워서 사용할지, 아니면 그냥 2번과 같이 C# 서버를 사용할지 고민중이긴 하다.

==> C#서버로 확정했다.

이유는 단순한데 NDC에서 서버쪽 발표 할때 C#인 경우가 상당했기 때문에 그냥 C#으로 빠르게 실전 학습하는게 중요하다고 판단했다.

====> 2번과 합쳐지지는 않지만 3번을 경유하여 2번 프로젝트로 진입할 가능성이 있다. 영속성을 위해 클라이언트가 직접 호출하는걸 막고, 세션연결로 다운로드 스트림을 이어준다면 될 것 같다.

1. 싱글플레이 리소스 로드 규칙

2. 멀티플레이 세션 흐름도

우선 클라이언트 초기 세팅부터 해준다. 

필수 매니저들을 다음과 같이 생성했다.

각각의 역할을 간략하게 설명하자면 다음과 같다.

🔹 BootStrap

  • 게임 실행 시 가장 먼저 동작하는 초기화 스크립트
  • 각 매니저들의 초기화 순서를 보장하기 위한 오브젝트

🔹 NetworkManager

  • Unity Netcode for GameObjects의 핵심 컴포넌트
  • 호스트/클라이언트 세션 관리, P2P 연결 제어

🔹 ResourceManager

  • Addressables 리소스 로딩/캐싱/해제 담당
  • 개별 키·라벨 단위 로드 지원
  • 로딩 시 UIManager와 연계해 로딩 표시

🔹 SceneLoadManager

  • 씬 전환 담당 래퍼
  • Addressables 기반 씬 로드/해제 지원
  • 라벨 단위 프리로드 연계

🔹 GameManager

  • 전역 게임 시스템 매니저
  • 게임 상태(Ready → Play → End) 관리
  • 멀티플레이 시 NetworkBehaviour로 동작, 서버 권위로 상태 동기화

🔹 UIManager

  • UI 제어 매니저
  • 로딩/페이드, HUD 갱신, 보스 패널 교체 등
  • GameManager/SceneManager 이벤트를 받아 UI 반영

🔹 SoundManager

  • BGM / SFX 제어 매니저
  • 오디오 재생, 중복 방지, 페이드 인·아웃 지원
  • 클라이언트 로컬만 제어

🔹 InputManager

  • 전역 입력 라우팅 담당
  • Unity New Input System 기반

마이그레이션하면서 네트워크를 달고있어서 꽤 시간이 걸렸다.

세세하게 가져온건 Intro프리펩 정도와 Loading UI 정도가 되겠다. 그 외 다른것들은 거의 싹 수정했다.

아마 어드레서블 로드를 지원했던 리소스 매니저는 이제 서버 권위에 의존해야 하기 때문에 싹 수정될 예정이라 아직 마이그레이션 하지않았다.

프로젝트는 다음 경로에 존재합니다.

cyphen156/Skul-Dimension-Rift: Skul : The Hero Slayer 모작 프로젝트

 

GitHub - cyphen156/Skul-Dimension-Rift: Skul : The Hero Slayer 모작 프로젝트

Skul : The Hero Slayer 모작 프로젝트 . Contribute to cyphen156/Skul-Dimension-Rift development by creating an account on GitHub.

github.com