Skip to content

Repository files navigation

backend — aptbreaker 게임 서버

실시간 멀티플레이 블록 슈팅 게임 aptbreaker의 백엔드. Unity(C#) 클라이언트와 WebSocket 바이너리 프레임(Protobuf) 으로 통신하는 Spring Boot 서버이며, 헥사고날(Ports & Adapters) 아키텍처로 작성됐습니다.

저장소 구성

저장소 역할
backend 게임 서버 (이 저장소)
frontend Unity 클라이언트 (C#)
proto 공유 Protobuf 정의

브랜치 안내

  • main — 헥사고날 모놀리스. auth / room / match / player 바운디드 컨텍스트를 슬라이스별 ports & adapters 구조로 분리
  • feat/msa-migration — 모놀리스를 4개 마이크로서비스로 분리한 브랜치: auth-service / room-service / ingame-service / player-stats-service + Kafka(비동기 이벤트) · gRPC(동기 호출) · Redis(매치 상태 공유), docker-compose 인프라 포함

핵심 설계

  • 헥사고날 규칙domain 패키지는 proto·JPA·Spring을 참조하지 않으며, Protobuf ↔ 도메인 변환은 adapter 레이어에서만 수행합니다. 상세: docs/ARCHITECTURE.md
  • 서버 권위 판정 — 매치 틱 스케줄러(@Scheduled(fixedDelay = 50), 20Hz)에서 게임 판정을 서버가 수행해 클라이언트 조작을 차단
  • 게임 상태 in-memory — 영속성(JPA + PostgreSQL)은 플레이어/토큰만 담당하고, 실시간 게임 상태는 in-memory로 관리
  • JWT 인증 — Access + Refresh 토큰. WebSocket 핸드셰이크 인증은 Query String으로 전달 (Unity WebGL의 커스텀 헤더 제약 대응)

기술 스택

Java 17 · Spring Boot · Gradle (Kotlin DSL, 멀티모듈: app + proto) · WebSocket · Protocol Buffers · JPA + PostgreSQL · MapStruct · TSID MSA 브랜치 추가: Kafka · gRPC · Redis

실행

# main (모놀리스)
./gradlew :app:bootRun

feat/msa-migration 브랜치는 docker-compose.yml로 Kafka·Redis·PostgreSQL을 기동한 뒤 각 서비스를 실행합니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages