Photon Fusion 2 기반 1:1 멀티플레이 리듬 게임
InMusic은 사용자의 Steam 정보를 연동하여 실시간으로 다른 사용자와 대결할 수 있는 멀티플레이 리듬 게임입니다. 단순한 게임 구현을 넘어 클라이언트-서버 아키텍처와 데이터 동기화 등 기술적 외연 확장에 집중한 프로젝트입니다.
- 실시간 1:1 멀티플레이
- Photon Fusion 2 (Shared Mode) 를 활용하여 P2P 방식의 안정적인 네트워크 환경을 구축했습니다.
- RPC(원격 프로시저 호출) 및 네트워크 변수([Networked]) 동기화를 통해 노트 판정, 게임 시작, 플레이어 상태 등을 실시간으로 처리합니다.
- Steam API 연동
- Steamworks.NET을 사용하여 별도의 가입 없이 Steam 닉네임과 ID를 자동으로 가져와 사용자 프로필을 생성합니다.
- 백엔드 데이터 관리
- Xampp(PHP + MySQL) 환경을 구축하여 사용자의 플레이 기록(Score, Accuracy 등)을 DB에 저장하고 관리합니다.
- 클라이언트와 서버 간 데이터 교환은 JSON 형식을 사용하며, 비동기 처리를 통해 UI 반영 시 끊김 없는 사용자 경험을 제공합니다.
- 동적 음악 리소스 관리
- 경로 기반으로 BMS(Be-Music Source) 파일을 파싱하여 노트 데이터를 생성하며, 앨범 아트 및 오디오/비디오 프리뷰 기능을 지원합니다.
- 무한 스크롤 UI를 구현하여 많은 양의 음악 목록을 효율적으로 탐색할 수 있습니다.
- Engine: Unity
- Language: C# (Client), PHP (Backend)
- Database: MySQL (Xampp)
- Networking: Photon Fusion 2
- External API: Steamworks.NET (Steam API)
- Design: Figma (UI/UX 설계)
- 방향키 / Enter: 메뉴 이동 및 선택
- D, F, J, K: 리듬 게임 노트 입력 (4키 방식)
- F1: 키 가이드 표시
- F10: 옵션 설정
- 총 규모: 팀당 약 2.5인 구성의 2개 팀 협업
- 주요 역할 (본인 파트 포함):
- Team 1: 메인 로비, 키 설정/가이드 UI 시스템 구현
- Team 2: 음악 목록 시스템, 멀티플레이 대기방 및 결과창, 스팀 API 연동, 백엔드(PHP/SQL) 구축
- Demo Video:
- Design: Figma UI 디자인안