Unity 3D + Firebase Realtime Database 기반 멀티플레이어 소셜 게임. 커스터마이징, 감정표현, 미니게임, 실시간 채팅이 가능한 가상 공간.
- 개발 형태: 팀 프로젝트 (기획 4 / 프로그래머 4, 팀장)
- 기간: 2024.12.27 ~ 2025.01.28 (33일)
- 담당: Firebase Realtime Database 기반 멀티플레이어 실시간 동기화 시스템 전체
동기
기획 4명, 프로그래머 4명이 협업하는 PBL 프로젝트였다. 플레이어가 가상 공간에서 다른 유저와 실시간으로 소통하고 경쟁하는 소셜 게임을 만들어야 했고, 핵심 과제는 여러 클라이언트 간의 데이터 일관성과 실시간성을 동시에 보장하는 것이었다.
Firebase Realtime Database를 백엔드로 선택한 상황에서, 커스터마이징 정보, 감정표현, 아이템, 위치 등 성격이 전혀 다른 데이터를 하나의 동기화 시스템으로 처리해야 했다. 특히 위치 데이터는 빈번한 JSON 직렬화로 인한 트래픽 문제가 예상되었고, 이를 해결할 압축/보간 전략이 필요했다.
접근
동기화 대상을 크게 두 축으로 나눴다.
첫째, 커스터마이징/감정표현/아이템 같은 이벤트성 데이터. 변경 빈도가 낮고 정확한 반영이 중요하다. Firebase의 이벤트 리스너(ValueChanged)를 타입별 하위 노드에 개별 등록하여, 변경된 데이터만 최소 단위로 감지하고 즉시 클라이언트에 반영하는 구조를 설계했다.
둘째, 위치/방향 같은 연속성 데이터. 변경 빈도가 높고 트래픽 효율이 중요하다. Vector3 좌표를 커스텀 알고리즘으로 5글자 문자열에 압축하고, Dead Reckoning과 SmoothDamp 보간을 결합해 동기화 빈도를 줄이면서도 자연스러운 움직임을 유지했다.

핵심 구현
| 영역 | 내용 |
|---|---|
| 데이터 동기화 | Firebase 계층적 노드 설계, 타입별 이벤트 리스너, 비동기 구독/해제 관리 |
| 위치 동기화 | Vector3 커스텀 압축(32byte -> 5byte), Dead Reckoning, SmoothDamp 보간 |
기술 스택
| 기술 | 적용 영역 |
|---|---|
| C# / Unity 2022.3 | 게임 로직, 네트워크 매니저, 동기화 시스템 |
| Firebase Realtime Database | 멀티플레이어 데이터 저장/동기화 백엔드 |
| Dead Reckoning / SmoothDamp | 클라이언트 위치 예측 및 보간 |
| 커스텀 직렬화 | Vector3 좌표 압축/복원, 방향 양자화 |
문서 구성
| 문서 | 내용 |
|---|---|
| 01-멀티플레이어-데이터-동기화 | Firebase 계층 구조 설계, 이벤트 리스너 기반 실시간 반영, 채널 이동 시 데이터 정합성 |
| 02-멀티플레이어-위치-동기화 | Vector3 커스텀 압축 알고리즘, Dead Reckoning 보간, 정밀도 트러블슈팅 |








