1. 서브젝트

이호용·2022년 5월 15일
0

ft_transcendence

목록 보기
1/14
post-custom-banner

ft_transcendence

  • 드디어 시작! 트렌센더스!
  • 몰랐다고 생각했던 것들이 사실은 이미 알고있었다는 걸 곧 알게 될겁니다.

더이상 c, c++는 쓰지 않습니다! ft_transcendence 는 여러분들이 전에 해본 적 없는 것을 써본적 없는 언어로 들어본 적 없는 framework 를 이용해 만드는 프로젝트입니다.

여러분이 처음 코딩을 시작했을 때를 떠올려보세요. 그리고 나서 지금 여러분이 어떤지 한번 보세요. 자, 이제 여러분의 재능을 펼칠 시간입니다.

사진!

Mandatory part

이 프로젝트는 강력한 퐁 대회를 위한 웹사이트를 만드는 과제입니다.

Overview

당신의 웹사이트는 고맙게도 다른 유저와 함께 퐁게임을 할 수 있습니다. 당신은 유저에게 인터페이스, 채팅 및 실시간 멀티플레이어 온라인 게임을 제공합니다!

당신은 다음에 따라 일을 합니다 :

  • 웹사이트 벡엔드는 NestJS를 사용합니다.
  • 프론트엔드는 선택한 TypeScript 프레임워크로 작성해야 합니다.
  • 당신은 자유롭게 라이브러리를 사용할수 있고 당신이 원하는 문맥으로 코드를 작성할수 있습니다. 그러나, 프로젝트에 사용된 모든 라이브러리 또는 프레임워크의 최신 안정 버전을 사용해야합니다.
  • 당신은 PostgreSQL 데이터베이스를 사용해야합니다. 다른 데이터베이스는 사용하지마세요!
  • 당신의 웹사이트는 싱글페이지 어플리케이션 해야합니다. 유저는 브라우저에서 back 그리고 Forward 버튼을 사용할수 있어야합니다.
    Your website must be compatible with the latest stable up-to-date version of
    oogle Chrome, Firefox, and Safari.
  • 유저 웹사이트가 최신 구글크롬 파이어폭스 사파리 버전여도 안정적이어야함빈다.
  • 유저가 웹사이트에서 제어되지 않은 에러 그리고 경고를 맞닥드리게 하지마세요!
  • docker-compose up --build에 대한 단일 호출로 모든 것이 시작되어야 합니다.

Linux 덤프에서 docker bind-mount 기능을 사용하려는 경우,/goinfre 또는 /sgoinfre를 사용하십시오.

Security concerns

In order to create a fully functional website, here are a few security concerns that you
have to tackle:

완전한 기능의 웹사이트를 만들기 위해선, 여기서 몇가지 보안문제를 해결해야합니다 :

* 데이터베이스에 저장된 모든 비밀번호는 암호화되어야 합니다.
* 귀하의 웹사이트는 SQL 주입으로부터 보호되어야 합니다.(Your website must be protected against SQL injections.)
* 폼(form) 이나 유저가 입력한 데이터 유효성을 검사하기 위한 서버 쪽 기능을 구현해야만 합니다.

User Account

  • The user must login using the OAuth system of 42 intranet.
  • 사용자는 42 인트라넷의 OAuth 시스템을 사용하여 로그인해야 합니다.
  • The user should be able to choose a unique name that will be displayed on the
    ebsite
  • 유저는 독특한 이름을 선택할수 있고, 선택한 이름을 웹사이트 화면에 표시할수 있습니다.
  • 사용자는 아바타를 업로드할 수 있어야 합니다. 사용자가 아바타를 업로드하지 않으면
    본값을 설정해야 합니다.
  • 사용자는 이중 인증을 활성화할 수 있어야 합니다. 예를 들어,
    oogle OTP를 사용하거나 휴대전화로 문자 메시지를 보냅니다.
  • The user should be able to add other users as friends and see their current status
    online, offline, in a game, and so forth).
  • 사용자는 다른 사용자를 친구로 추가하고 현재 상태를 볼 수 있어야 합니다.
    온라인, 오프라인, 게임 등).
  • 통계(예: 승패, 래더 레벨, 업적 등)는 사용자 프로필에 표시됩니다.
  • 각 사용자는 1v1 게임, 래더 및 기타 유용한 모든 항목을 포함하는 경기 기록이 있어야 합니다. 로그인한 사람이라면 누구나 찾을 수 있어야 합니다.

Chat

You also have to create a chat for your users:

  • The user should be able to create channels (chat rooms) that can be either public,
    r private, or protected by a password.
  • 사용자는 채팅방을 만들수 있어야하고, 채팅방은 공개 또는 비공개 또는 암호로 입장가능하도록 만들수 있어야합니다.
  • 유저는 다른 유저에게 direct 메세지를 보낼 수 있어야합니다.
  • 유저는 다른 유저를 block걸어 버릴수 있습니다. block을 수락한 계정은 block한 계정의 메세지가 보이지 않습니다.
  • The user who has created a new channel is automatically set as the channel owner
    ntil they leave it.
  • 새 채널을 만든 사용자는 자동으로 채널 소유자로 설정됩니다. 그들이 그것을 떠날 때까지.
    ◦ The channel owner can set a password required to access the channel, change
    t, and also remove it.
    채널 소유자는 채널에 액세스하는 데 필요한 비밀번호를 설정하고 변경하고 제거할 수도 있습니다.
    채널 소유자는 채널 관리자입니다. 그들은 다른 사용자를 관리자로 설정할 수 있습니다.
    채널 관리자는 제한된 시간 동안 사용자를 차단하거나 음소거할 수 있습니다.
  • 사용자는 채팅 인터페이스를 통해 Pong 게임을 하도록 다른 사용자를 초대할 수 있어야 합니다.
  • 사용자는 채팅 인터페이스를 통해 다른 플레이어 프로필에 액세스할 수 있어야 합니다.

Game

The main purpose of this website is to play Pong versus other players and show everyone
how good you are!

이 웹사이트의 주요 목적은 다른 플레이어와 Pong을 플레이하고 모두에게 당신이 얼마나 좋은지 보여주는 것입니다. 야호👊!

  • 따라서 사용자는 웹사이트에서 직접 다른 플레이어와 라이브 퐁 게임을 할 수 있어야 합니다.
  • 매치메이킹 시스템이 있어야 합니다. 사용자는 다음을 얻을 때까지 대기열에 참여할 수 있습니다.자동으로 다른 사람과 일치합니다.
  • 캔버스 게임일 수도 있고 3D로 렌더링된 게임일 수도 있고 추악할 수도 있지만 어쨌든 원작 퐁(1972)에 충실해야 합니다.
  • 일부 사용자 정의 옵션(예: 전원 켜기 또는 다른 지도), 그러나 사용자가 원하는 경우 추가 기능 없이 기본 버전의 게임을 선택할 수 있어야 합니다.
  • 게임은 반응해야 합니다!
  • 사용자는 다른 사용자의 라이브 플레이를 방해하지 않고 시청할 수 있어야 합니다.

예기치 않은 연결 끊김이나 지연과 같은 네트워크 문제에 대해 생각해 보십시오. 가능한 최고의 사용자 경험을 제공해야 합니다.

Submission and peer-evaluation

  • 평소와 같이 Git 리포지토리에서 할당을 제출합니다.
  • 방어 중에는 저장소 내부의 작업만 평가됩니다.
  • 파일 이름이 올바른지 다시 한 번 확인하는 것을 주저하지 마십시오.
post-custom-banner

0개의 댓글