피파와 같은 1대1 대결 게임 같은 경우
멀티가 어떻게 진행이 되는 지를 알아보았을 때
1. 큐 시스템
- 사용자(클라이언트)가 매칭 시작 -> 대기열 큐?에 등록
- 서버는 조건(실력, 지역 등)에 따라 매칭
- 클라이언트의 대기 시간에 따라 조건 완화
* 조건에 따라 대기열을 따로 만드는 가? 대기열 하나에서 검색 알고리즘?을 통해 조건에 맞는 상대를 매칭하는가?
라는 궁금증을 가짐
대기열은 하나를 두고 매치메이킹 알고리즘을 통해 상대를 찾는 방식이 일반적이라 함
- 관리 편의성 : 대기열이 많아지면 접속자 수가 분산되어 매칭이 오래 걸릴 수 있음
- 조건 로직 적용이 용이
2. 매치메이킹 백엔드 서버
- 대기열을 관리하고 조건에 맞는 유저를 그룹핑
- 매칭이 성사되면 게임 세션을 생성 및 할당
* 하나의 큐를 사용하는 이유 중 로직 적용이 용이한 이유가
큐에 추가된 유저의 조건을 계산 후에 비슷한 조건의 유저를 찾아 매칭
매칭 시간이 길어질 수록 조건을 완화시키고 비슷한 조건의 유저를 찾아 매칭
여기서 "조건에 따라 비슷한 조건의 유저를 찾아 매칭" 이라는 것이 겹치고 그중에서
"찾아 매칭"이라는 것이 하나의 큐에서 적용하는 것이 용이하다 판단
3. 게임 세션 생성
언리얼에서 구현 방식
| 매칭 요청 | GameInstance 또는 UI → 서버로 RPC 전송 |
| 매칭 로직 | 외부 서버에서 조건 판단 |
| 세션 생성 | 언리얼 서버 띄우기 or GameLift와 연동 |
| 접속 처리 | ClientTravel()로 세션 입장 |
'Unreal' 카테고리의 다른 글
| 언리얼 스팀 연동 (0) | 2025.05.09 |
|---|---|
| 쿼터뷰 (0) | 2025.04.28 |
| 간단한 미니맵 만들기 (0) | 2025.04.11 |
| FPS / V-Sync (0) | 2025.04.02 |
| Replication / RPC (0) | 2025.03.17 |