Skip to content

1️⃣ [11.07] Week1 Day1 회의록

Hyunbin Lee edited this page Nov 10, 2022 · 1 revision

1. 기획서

— 기능을 진짜 명확하게 해서 우선순위까지

  • 기획서
  • MVP 기능 분류
  • 백로그
  • 프로그램 버전 별 기능 분류

1. 왜 만들려고 하는가 ( 문제가 무엇인가 / 무엇을 해결하고자 하는가 )

알고리즘을 공부하거나 코딩테스트를 준비하는 사람들이 더 재밌게 즐길수 있도록 하기 위해

혼자하면 집중이 안된다

재미가 없다.

2. 어떻게 해결하려고 하는가

게임적인 요소

1:1 경쟁

레이팅 시스템

3. 무엇을 만들고자 하는가

1:1 알고리즘 배틀!

4. 어떤 기능이 필요한가

  • 깃허브 연동
    • OAuth
    • 팔로워 연동 볼 수 있는 기능
  • 문제 풀이
    • 코드 에디터
    • 웹 컴파일러
    • 온라인 저지
  • 1:1 게임
    • 상호작용 ( 이모티콘, 화상 비디오, 상대방 점수, 감정 표현 등 )
    • 시간 제한이 있는 대결
    • 서버에서 타이머 제공
  • 결과 페이지, 전적 보기, 랭킹
  • 매치메이킹
    • 레이팅 시스템
      • ELO 적용
      • 등급 시스템
    • 링크 공유를 통한 매치 초대
  1. 매치메이킹으로 구현

    1. 큐 돌리기
    2. ELO 계산
  2. 호스트 룸 형식으로 구현

    1. dp 초보만
    2. 파이썬 1대1 초보만
      1. 맵을 고를 수 있는 것처럼 문제 유형을 고를 수 있게 함
  3. 깃허브 팔로우 연동

    Followers - GitHub Docs

*고민들

— 소켓 상태 관리

  • 어느 시점에 소켓을 연결하고 끊어야 하는지
    • 매치 메이킹 소켓과 상대방을 찾았을 때 소켓을 새로 연결할 지
    • 아니면 하나의 글로벌 소켓에서 계속 연결하고 있을지

— 서버에서 소켓 정보 관리

  • Redis

— 큐 돌리면 사람들 매칭 어떤 방식으로 시킬 것인지

  • 문제를 넘겨주는 방식
    • 백준식
    • 프로그래머스식
    • 엄준식

— 소켓 유저 식별

  • 통신할 때마다 넘겨주기
  • 유저 IP

5. 무엇이 더 있으면 좋을까? ( 완성도 )

  • 에디터 크기 조절
  • 결과창에서 상대방 깃허브 팔로우할 수 있는 버튼
  • 깃허브 팔로우 중에서 가입 안 한 사람 초대 기능 (서비스 초대 기능0
  • 매칭초대 ( 링크로 / 팔로워들이랑 )
  • 매치메이킹 사운드
  • 매치메이킹 완료 시 크롬 푸쉬 알림 ( 우하단 )
  • 감정표현
  • 상점 ( 테마 / 감정표현 구매 )
  • 점수 표현 인터랙션 ( 다이나믹 아일랜드 )
  • 문제가 겹칠 때 해결 방법 (e.g. 문제를 더 많이 넣는다 )
  • 상대방이 문제를 먼저 풀었을 때 계속 풀 수 있는 기능 ( 계속 풀기 → 점수 계산 → 결과 페이지 )
  • 문제 ID 나 문제 제목을 표시하지 않도록 함
  • 전적보기 통계 기능
  • 칭호
  • 깃허브 Export 뱃지

2. MVP 기능

  • 깃허브 연동
    • OAuth
  • 문제 풀이
    • 코드 에디터
    • 웹 컴파일러
    • 온라인 저지
  • 1:1 게임
    • 상대방 점수 표시
    • 시간 제한이 있는 대결
    • 서버에서 타이머 제공
  • 매치메이킹
    • 레이팅 시스템
      • ELO 적용

1주차 : 코드를 제출해서 컴파일할 수 있는 프로그램

— CI / CD 구축 : 5일

— 깃허브 로그인 ( OAuth ) : 1~3일

  • 하지말아야할것 : 쿠키 못 씀 ( 소켓 이슈 )

— 코드 에디터 : 에디터에서 데이터를 넘겨줌 : CodeMirror 5일

2주차 : 온라인 저지가 가능한 프로그램

— 웹 컴파일러 : 에디터에서 받은 데이터를 받아서 결과를 돌려줌

— 온라인 저지 ( Python )

  • 하지말아야할것 : 많은 언어를 지원하지 않음

— 프론트엔드에서 게임 페이지 구현 : 소켓 통신으로 상호작용

3주차 : 매치메이킹이 가능한 프로그램

— 매칭 시스템

  • 큐에서 사용자 매칭
  • ELO 계산

— 매치메이킹 필요한 페이지 작업 ( 프론트 )

4주차 : 알고리즘 대결을 할 수 있는 프로그램

— 1:1 상호작용 ( 소켓 )

5주차 : 완성된 프로그램

— 사용자 피드백 반영

— 버그 수정

— 테스트 코드를 테스트


결론

  • 기능들이 아직도 벌크한 느낌 → 조금 더 논의가 필요함
  • 기획에 대한 부분을 추가적으로 진행하기 전에 상대적으로 결정하기 쉬운 코딩 컨벤션에 대해서 정하기로 함
  • 프로그램 이용자나 목적 등 대전제에 대한 논의를 진행하기로 함
Clone this wiki locally