ft_transcendence 과제 해석

songtofu·2022년 5월 19일
0

ft_transcendence

목록 보기
1/5

version :9

Mandatory part

2.1) Overview (개요)

당신의 웹사이트 덕분에, 사용자들은 다른 사람들과 함께 퐁을 할 것이다. 당신은 멋진 사용자 인터페이스, 채팅, 그리고 실시간 멀티플레이어 온라인 게임을 제공할 것입니다!
규칙
1. 웹사이트 백엔드 NestJS 사용 필수.
2. 프론트엔드 TypeScript 프레임 워크 선택 필수.
3. 원하는 라이브러리 자유롭게 사용, 그러나! 라이브러리 또는 프레임워크의 안정적인 최신 버전을 사용.
4. PostgreSQL 데이터베이스 사용. 다른건 ㄴㄴ
5. 웹사이트(https://en.wikipedia.org/wiki/Single-page_application)는 단일 페이지 응용프로그램이여야 함. 사용자는 브라우저의 뒤로 및 앞으로 버튼 사용 할 수 있어야함.
6. 사용자의 웹 사이트는 안정적인 최신 버전의 구글 크롬, 파폭, 사파리와 호환되어야함.
7. 웹 사이트를 검색할 때 처리되지 않은 오류와 경고가 발생하지 않아야 함. (??)
8. 모든 작업을 한 번의 호출로 시작해야함. (docker-compose up --build)
_Linux 덤프에서 docker bind-mount 기능을 사용하려면 /goinfre 또는 /sgoinfre를 사용하십시오.

2.2) Security concerns (보안이슈)

해결해야 할 몇 가지 보안 문제
1. 데이터베이스에 저장된 모든 비밀번호는 암호화되어야 함.
2. 웹사이트는 SQL 인젝션 공격으로 부터 보호되어야 합니다.
3. 폼(form) 이나 유저가 입력한 데이터 유효성을 검사하기 위한 서버 쪽 기능을 구현해야만 합니다.

2.3) User Account (사용자 계정)

  1. 사용자는 42 인트라넷 oauth 시스템을 사용해 로그인해야만 합니다.
  2. 사용자는 웹사이트에 표시될 고유한 이름을 고를 수 있어야 합니다.
  3. 사용자는 아바타를 업로드할 수 있어야함. 사용자가 아바타를 업로드 하지 않으면 기본 아바타 설정.
  4. 사용자는 이중 인증을 사용할 수 있어야함. ex) 구글 인증자 또는 휴대폰으로 문자 메세지 보내기 등
  5. 사용자는 다른 사용자를 친구로 추가하고 현재 상태(온라인, 오프라인, 게임 중 등)를 볼 수 있어야함.
  6. 통계 (adder 레벨, 토너먼트에서 이긴 횟수, 성과)는 사용자 프로필에 표시되어야 함.
  7. 각 사용자는 1:1 게임, 사다리(ladder) 및 기타 유용한 정보를 포함한 매치 기록을 가지고 있어야함. 로그인 한 사람은 누구나 확인 가능한.
    (Each user should have a Match History including 1v1 games, ladder, and anything else useful. Anyone who is logged in should be able to consult it.)

2.4) Chat (채팅)

  1. 사용자는 공개 또는 비공개이거나 암호로 보호할 수 있는 채널(대화실)을 만들 수 있어야함.
  2. 사용자는 다른 사용자에게 DM 가능해야함.
  3. 사용자는 다른 사용자를 차단 할 수 있어야 함. 차단한 계정의 메세지 표시X
  4. 새 채널을 만든 사용자는 채널을 떠날 때 까지 자동으로 채널 소유자로 설정된다.
    (1) 채널 소유자는 채널 접근을 위한 비밀번호를 추가/변경/삭제 할 수 있다.
    (2) 채널 소유자는 채널의 관리자이며, 다른 유저를 관리자가 되도록 선택할 수 있다.
    (3) 관리자는 일정 시간동안 유저들을 강퇴(ban)하고 차단(mute) 할 수 있다.
  5. 사용자는 채팅 인터페이스를 통해 다른 사용자를 초대하여 퐁 게임을 할 수 있어야함.
  6. 사용자는 채팅 인터페이스를 통해 다른 플레이어 프로필에 접근 할 수 있어야 함.

2.5) Game (게임)

  • 웹 사이트의 주요 목적은 다른 선수들과 퐁을 겨루고 모든 사람들에게 당신이 얼마나 잘 하는지 보여주는 것. *
  1. 따라서, 사용자는 웹사이트상에서 Pong 을 바로 시작할 수 있어야 하며 상대와 대결을 할 수 있어야 합니다.

  2. matchmaking system(중매 시스템)이 있어야함. 사용자가 자동으로 다른 사람과 매치될 때 까지 대기열에 가입할 수 있다.

  3. canvas 나 3d 효과를 사용할 수 있으며 못 생길 수 있지만 1972년에서 온 Pong 게임에 충실해야함.

  4. 일부 사용자 지정 옵션(for example, power-ups or different maps)을 제공해야함. 그러나, 사용자가 원할 경우 추가 기능 없이 기본 버전 게임 선택 할 수 있어야함.

  5. 게임은 반드시 responsive(반응성) 이어야만 합니다!

  6. 다른 유저들은 게임을 방해하지 않고 실시간으로 관전이 가능합니다.

    예기치 않은 네트워크 끊김, 지연과 같은 문제에 대해 생각, 사용자 경험이 가능한 가장 좋아야 합니다.

profile
읽으면 머리에 안들어와서 직접 쓰는 중. 잘못된 부분 지적 대환영

0개의 댓글