Skip to content

hyeonseol00/Sparta_FC_Futsal_Online

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

스파르타FC

기본 구현 과제

  1. 회원가입/로그인
  2. 캐시 구매
  3. 선수 뽑기
  4. 나만의 팀 꾸리기
  5. 축구 게임

도전 구현 과제

  1. 승리/패배 시 게임 점수 조정
  2. 유저 랭킹 조회
    • 점수를 기반으로 정렬하도록 구현
  3. 유저 경기 기록 조회
    • 유저 A와 유저 B의 경기 기록을 Time을 기준으로 정렬시켜 최근 기록이 보이도록 구현
  4. 점수 기반 자동 매치 메이킹
    • 현재 플레이를 할 유저의 점수를 기준으로 +-100점인 유저를 상대로 매치 메이킹
  5. 선수 강화
    • 같은 강화 수의 선수 카드가 2장 있어야지 강화 가능, 강화 성공 시 +1 / 강화 실패 시 -3, 3강 이하일 땐 1강 이하로 떨어지지 않고 7강 이상일 땐 10% 확률로 0강
    • 선수 데이터에 강화 컬럼을 추가해서 기능 구현
    • 1~4강까지는 각 강화마다 능력치 +1
    • 5~7강까지는 각 강화마다 능력치 +2
    • 8~9강까지는 각 강화마다 능력치 +3
    • 10강은 능력치 +4

+++ 도전 구현 과제

  1. 토너먼트 8팀 이벤트
    • 이벤트 개최 시 한 시간 안에 8명의 유저가 자신의 팀으로 토너먼트 참가를 등록하고 한 시간 뒤에 8명의 유저가 모두 모였을 시 대진표 편성
    • 토너먼트 매치는 Quater -> semi final -> final 순으로 진행
    • 토너먼트 매치 테이블이라는게 존재하는데, RoundName과 teamA, teamB 등의 컬럼이 존재
    • 각 라운드에 그리고 각 편성된 대진표에 맞게 진출할 수 있도록 RoundName은 quater-1, -2 이런식으로 저장
    • 같은 대진의 유저 두명 중 한명이 토너먼트 매치 API를 호출하면 해당 유저의 준비 상태가 ready가 되고 10초 뒤 상대방 유저의 준비 상태를 체크, 상대방 유저가 준비되지 않았다면 부전승 처리
    • 두 명의 유저 모두 준비가 완료된 상태라면 동시에 게임이 진행
      • teamA에 배치된 유저는 게임 play 함수를 호출하여 플레이 기록을 만들고, teamB에 배치된 유저는 매치 history를 통해 경기 결과 읽기
      • setTimeout 함수로 딜레이를 주고 트랜잭션의 read committed 레벨을 통해 데이터를 수정 중에 읽지도 못하게 해 지연되도록 해서 구현
    • 우승자가 결정됐을 경우 종료 API을 호출하여 1, 2, 3등에게 차등된 보상 지급

API 명세서

https://www.notion.so/teamsparta/65ec228fcab74412b8a7f5478951afa8?v=352cfffb63a74f31b4fe2f78265ab2d8

시연 영상

https://youtu.be/38ZjNmRgKuo?si=RkuYxLL-YWVatyZN

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published