실시간 멀티플레이 노래 맞추기 게임의 백엔드 서버
Spring Boot 기반의 실시간 게임 서버
- 🌐 웹사이트: https://singsonggame.store
- 📱 프론트엔드: SingSongGame-FE
다양한 게임 모드를 지원하는 실시간 멀티플레이어 시스템
- Glicko 레이팅 시스템 기반의 MMR 계산
- 티어 시스템 (새내기 ~ 전설)
- 빠른 정답으로 높은 점수 획득
- 로비 채팅: 전체 사용자 대상 실시간 채팅
- 방 채팅: 게임 방 내 플레이어 간 채팅
- 게임 중 채팅: 게임 진행 중 실시간 소통
MMR 기반 자동 매칭으로 비슷한 실력의 플레이어들과 게임
카카오 소셜 로그인을 통한 간편한 사용자 인증
- Java 17+
- MySQL 8.0+
- Redis 6.0+
# 레포지토리 클론
git clone https://github.com/DRS-SingSongGame/SingSongGame-BE.git
cd SingSongGame-BE
# 환경 변수 설정 (.env 파일 생성, 배포 시에는 Github Secrets 사용)
JWT_SECRET_KEY=your-jwt-secret-key
KAKAO_CLIENT_ID=your-kakao-client-id
KAKAO_CLIENT_SECRET=your-kakao-client-secret
DB_URL=jdbc:mysql://localhost:3306/singsong
DB_USERNAME=your-db-username
DB_PASSWORD=your-db-password
REDIS_HOST=localhost
REDIS_PORT=6379
# 프로젝트 빌드
./gradlew build
# 애플리케이션 실행
./gradlew bootRun# Docker 이미지 빌드 및 실행
docker build -t singsong-backend .
docker run -p 8080:8080 singsong-backendsrc/main/java/SingSongGame/BE/
├── auth/ # OAuth2 인증 시스템
├── chat/ # 실시간 채팅 시스템
├── in_game/ # 게임 로직 및 상태 관리
├── quick_match/ # 빠른 매칭 시스템
├── room/ # 게임 방 관리
├── song/ # 노래 데이터 관리
├── user/ # 사용자 관리
├── ai_game/ # AI TTS 게임 모드
├── online/ # 온라인 사용자 관리
├── redis/ # Redis 구독자 및 설정
├── common/ # 공통 유틸리티
├── config/ # 스프링 설정
└── exception/ # 예외 처리
카카오 로그인 → JWT 토큰 발급 → 사용자 세션 생성
빠른 매칭 요청 → MMR 기반 매칭 → 게임 방 생성 → 플레이어 배치
게임 시작 → 문제 출제 → 정답 제출 → 점수 계산 → 다음 문제
최종 점수 계산 → MMR 업데이트 → 티어 변동 → 결과 저장
애플리케이션 실행 후 다음 URL에서 API 문서를 확인할 수 있습니다:
- Swagger UI:
http://localhost:8080/api/swagger-ui.html
# 전체 테스트 실행
./gradlew test
# 특정 테스트 클래스 실행
./gradlew test --tests "TestClassName"# Production 프로파일로 실행
java -jar -Dspring.profiles.active=prod build/libs/BE-0.0.1-SNAPSHOT.jarTeam DRS
이 프로젝트는 크래프톤 정글 8기 Team DRS에서 개발한 실시간 멀티플레이어 노래 맞추기 게임입니다.