snack-game / server

스낵게임 서버 어플리케이션. 게임 검증과 리더보드, 회원 관리 서비스를 담당합니다

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

게임 서버

API 설계

도메인 분석
사용 시나리오 in Figma

  • 많은 동시접속자를 소화해야 한다 (1000명 이상, 아직 정확한 바는 없음)
    • 이를 위해 스케일 아웃을 할 가능성이 아주 높다
    • 따라서 서버 간 인증 정보 동기화에 대한 비용을 줄이고자 JWT를 채택한다

인증

기능

  • 토큰에서 사용자를 식별한다.

API

  • 닉네임으로 토큰을 발급한다.

사용자

  • 이름, 그룹은 없을 수 있다.

기능

  • 임시 사용자를 생성한다.
    • 이름을 무작위 생성한다.
  • 이름, 그룹이름으로 사용자를 생성한다.
    • 이름은 중복될 수 없다.
  • 이름을 수정한다.
    • 이름은 중복될 수 없다.
  • 그룹을 수정한다.

API

  • 닉네임으로 사용자를 생성한다.
    • 사용자 정보와 토큰을 반환한다.
  • 임시 사용자를 생성한다.
    • 사용자 정보와 토큰을 반환한다.
  • 이름을 수정한다.
  • 그룹을 수정한다.
  • 자신의 정보를 알 수 있다.
  • 특정 이름으로 시작하는 그룹 이름을 검색한다
  • 특정 이름으로 시작하는 사용자 이름을 검색한다

랭킹

기능

  • 전체 랭킹을 조회한다.
    • 베스트 점수가 기준이다.
    • 50등까지 조회한다.
    • 내 랭킹(전체)을 포함한다.
  • 그룹 내 랭킹을 조회한다.
  • 특정 이름으로 시작하는 사용자들의 랭킹을 조회한다.

사과 게임

도메인 기능

  • 게임
    • 10*18 사이즈의 게임판을 생성한다.
    • 초기화한다
      • 게임판을 재생성한다.
      • 게임 시간을 초기화한다.
      • 점수를 초기화한다
    • 특정 범위의 사과들을 제거한다
      • 제거 개수만큼 점수를 얻는다
    • 생성된지 120초가 지나면 더 이상 조작할 수 없다.
    • 게임 주인인지 알 수 있다
  • 게임판
    • 원하는 크기의 게임판을 랜덤 생성한다.
    • 특정 범위의 사과들을 제거한다
      • 범위가 게임판과 일치하는지 검증한다
        • 사과 좌표들에 사과가 없으면 예외
        • 사과 좌표들 외에 사과가 있으면 예외
      • 사과들의 합이 10이어야 제거할 수 있다
      • 제거된 개수를 반환한다
  • 범위
    • 좌상단을 알 수 있다
    • 우하단을 알 수 있다
    • 범위 내의 모든 좌표들을 알 수 있다
    • 사과 좌표들을 알 수 있다
    • 빈 좌표들을 알 수 있다
  • 좌표
    • 음수이면 예외를 던진다
  • 사과
    • 숫자는 1~9 사이이다.
    • 랜덤 숫자로 생성할 수 있다.
    • 빈 사과인지 알 수 있다

About

스낵게임 서버 어플리케이션. 게임 검증과 리더보드, 회원 관리 서비스를 담당합니다


Languages

Language:Java 97.1%Language:Kotlin 2.9%