
[Project Arc] 맵 생성 시 Entrance 비정상 생성 문제 해결
이번 글에서는 Map Generator를 구현하면서, 방(Room) 경계에 배치되는 Entrance(문/통로)들이 비정상적으로 여러 개씩 생성되거나, 잘못된 방향에 배치되는 문제를 어떻게 추적하고 해결했는지 정리해 보겠습니다.

이번 글에서는 Map Generator를 구현하면서, 방(Room) 경계에 배치되는 Entrance(문/통로)들이 비정상적으로 여러 개씩 생성되거나, 잘못된 방향에 배치되는 문제를 어떻게 추적하고 해결했는지 정리해 보겠습니다.

Room 단위로 서브 레벨을 스트리밍하여 맵을 동적으로 구성하는 기능을 구현하는 과정에서, 싱글 플레이와 리슨 서버 환경에서는 정상적으로 동작하지만, 두 번째 클라이언트 접속 시 MissingLevelPackage 오류와 함께 접속이 끊어지는 문제가 발생했습니다.

이번 글에서는 구현한 자동 맵 생성(MapGenerate) 로직과, 생성된 맵 구조에 맞춰 서브 레벨을 동적으로 로드하는 레벨 스트리밍 구조를 정리해 보겠습니다.

데드락(Deadlock)은 두 개 이상의 프로세스나 스레드가 서로가 보유한 자원을 기다리면서 영원히 대기 상태에 빠지는 문제를 의미합니다. 즉, 서로가 서로를 기다리기 때문에 아무도 앞으로 진행하지 못하는 상태라고 볼 수 있습니다.

컴파일 단계에서 TMap 키 타입에 대한 해시 함수와 동등 비교 연산자가 없다는 오류가 발생했고, 이로 인해 빌드가 진행되지 않았습니다. 본 문서에서는 오류가 발생한 원인과 이를 해결하기 위해 적용한 코드 변경 사항을 정리했습니다.

이번 작업에서는 멀티플레이 환경에서 동일한 Seed와 DataAsset을 기반으로 모든 클라이언트가 동기화된 절차적 맵을 생성할 수 있는 구조를 설계하였습니다.

이번 실험에서는 Seed를 활용하여 서버와 클라이언트가 각자의 환경에서 동일한 지형을 독립적으로 생성하는 구조가 가능한지 검증하고자 합니다.
저희 프로젝트는 본래 기술 데모 수준의 프로젝트를 준비하면서 PvPvE 기반의 액션 게임을 개발하려고 했습니다. 하지만, 팀 내에서 Steam 출시를 하자는 의견이 나와 팀원 간 협의를 통해 PvE 게임으로 변경되었습니다.
Project CM은 여러 개의 세션을 생성해야 할 필요가 있습니다. 로비에 모여있던 플레이어들은 매치메이킹을 통해 생성된 새로운 세션(서버)에 접속해서 게임을 플레이하는 구조이기 때문입니다.

이번 작업에서는 로비에서 팀 전원이 Ready 상태가 되면 매치메이킹 큐에 팀을 올리고, 큐에 쌓인 팀 수가 임계치에 도달하면 GameSession을 시작하도록 서버 주도 로직을 직접 구현했습니다.