ft_transcendence : 이너서클 박살내자
 

ft_transcendence 과제 해석

ft_transcendence


곧, 당신이 몰랐다고 생각했던 것들을
이미 알고 있다는 것을 깨닫게 될겁니다.



요약:

C 멈춰! C++ 멈춰
이 프로젝트로 당신은 ~절대 해본 적 없을~ 것들을 하게 될겁니다.
Computer Science 분야로 첫 걸음을 띄었던 그 때를 상기시켜 보세요.
지금 당신을 보세요. ✨ 빛날 시간입니다! ✨

목차

머리말

필수 파트

  개요 및 규칙

  보안 관련 사항들

  사용자 계정

  채팅

  게임

제출 및 동료 평가

머리말

"퐁"

퐁퐁남 아님

진짜 이게 다에요...

필수 파트

이 프로젝트는 위대한 Pong 대회를 위한 웹사이트를 만드는 것입니다!

개요 및 규칙 📏

당신의 웹사이트 덕에 유저들은 Pong을 플레이할 수 있게 됩니다.

멋진 UI, 채팅, 실시간-멀티플레이어 온라인 게임을 제공하세요!

작업물은 아래의 규칙들을 지켜야 합니다. 🤖

  1. - Back-end 파트는 Nest JS로 작성되어야 합니다.
  2. - Front-end 파트는 선택한 Typescript Framework로 작성되어야 합니다.
  3. - 원하는 어떤 라이브러리든 사용할 수 있습니다! 완전 자유에요.
       다만, 모든 라이브러리와 프렘임워크는 최신화 & 안정화된 버전이어야 합니다.
  4. - 당신의 애인은 PostgreSQL 데이터베이스입니다. 바람둥이는 용서치 못할 예정입니다.
  5. - 당신의 웹사이트는 Single-Page Application이어야 합니다.
       유저들은 브라우저의 Back/Forward 버튼을 사용할 수 있어야 합니다.
  6. - Google Chrome, Firefox, Safari최신 버전에서 모두 동작해야 합니다.
  7. - 유저는 브라우징 하는 동안 처리되지 않은 에러, 경고에 마주쳐서는 안됩니다. 고객센터에 따지고 들테니까요.
  8. - 모든것은 docekr-compose up --build 하나로 실행되야 합니다.
       인셉션 하길 잘했죠?

     주의:

     docker bind-mount 기능을 Linux dump에서 사용하고 싶은 경우,

     /goinfre 나 /sgoinfre 를 이용하세요.


보안 관련 사항들 🔒︎

완벽한 기능의 웹사이트를 만들기 위해 지켜야 할 몇개의 보안 문제들이 있습니다.

  1. - DB에 저장된 모든 비밀번호는 암호화 되어야 합니다.
  2. - 웹사이트는 SQL injection으로부터 보호되어야 합니다.
       (대충 글에다가 SQL 써넣어도 그거 실행되면 안된다는 소리)
  3. - form, user input에 대해 서버 측에서 유효성 검사를 해야 합니다.

사용자 계정 🙋

  1. - 로그인 기능은 42 Intranet의 OAuth 시스템을 이용하여야 합니다.
  2. - Unique한 (중복 X) 이름을 가져야 합니다. -> nickname: unique
  3. - 아바타를 업로드할 수 있어야 합니다. 없다면 기본 사진으로!! -> 프사 해야된다는 말인듯
  4. - 사용자는 이중 인증 기능을 활용할 수 있어야 합니다.
       예를 들면, Google Authenticator핸드폰 문자 메시지라던가...
       와... 미친거 아님...??? 그럼 메일 인증으로는 충족되나...? 이건 비교적 쉬울것같은데 ㅇㅅㅇ
  5. - 유저는 다른 유저를 친구로 등록할 수 있어야 하고, 친구인 유저의 Status를 확인할 수 있어야 합니다.
       Status: 온라인/오프라인 여부, 게임중인지, 기타 등등
  6. - 프로필에는 Stat이 표시되어야 합니다.
       Stat: 승/패, Ladder Level(티어?), Achievement, 기타 등등
  7. - 각 유저는 매칭 히스토리가 있어야 합니다. 로그인 된 누구든 확인(consult)할 수 있어야 합니다.
       매칭 히스토리: 1대1, ladder(티어), 그 외의 유용한 건 뭐든!

채팅 💬

채팅 기능도 만들어야 합니다.

  1. - Channels (채팅방)을 만들 수 있어야 하며, public / private / protected (비밀번호)로 분류되어야 합니다.
  2. - DM을 만들 수 있엉 ㅑ합니다.
  3. - 다른 유저를 Block = 차단?할 수 있어야 합니다. 이 경우에 블록한 상대로부터 메시지는 더 보이지 않습니다.
  4. - 새 채널을 연 사람이 자동적으로 완장(주딱)이 됩니다.
  5. - - 완장(주딱)은 채널에 접속하기 위한 비밀번호를 설정/변경/해제할 수 있습니다.
  6. - - 완장(주딱)은 채널 관리자입니다. 다른 유저도 관리자(파딱)으로 만들 수 있습니다.
  7. - - 채널 관리자는 유저를 일시적으로 밴/차단 할 수 있습니다. (ban or mute users for a limited time)
  8. - Chat 인터페이스를 동해 다른 사람을 Pong 게임에 초대할 수 있어야 합니다.
  9. - Chat 인터페이스를 동해 다른 사람의 프로필을 볼 수 있어야 합니다.

게임 🎮

이 사이트의 주 목적은 다른 유저와 퐁을 플레이하고 얼마나 잘하는지 모두에게 보여주는 것에 있습니다.!

  1. - 위의 목적에 따라, 유저는 사이트에서 직접 Pong 게임을 플레이할 수 있어야 합니다.
  2. - 매치메이킹 시스템이 있어야 합니다. 유저는 게임에 참여할 때 까지 대기 큐에 자동으로 참가됩니다.
  3. - 일부 커스터마이징 옵션을 제공해야합니다. 그러나 원한다면 아무 추가 기능 없이 Default로 플레이할 수 있어야 합니다.
       커스터마이징 옵션: 파워업, 여러가지 맵, 등등
  4. - 캔버스 게임이 될 수도 있고, 3D로 렌더링할 수 도 있습니다. 못생겨도 됩니다.
       뭐든 간에 원본 Pong(1972)에 충실해야 합니다.
  5. - 게임은 반드시 responsive해야 합니다!
  6. - 아무 간섭도 없이 유저 간에 라이브 플레이를 할 수 있어야 합니다.

     참고:

     네트워크 이슈를 고려해야 합니다. 예기치 못한 disconnection, 랙 등 말이죠.

     유저에게 가능한 한 최고의 UX를 제공하세요. (고생은 개발자가)


References

References: NestJS

 

1.1 NestJS 소개

NestJS는 Node.js에 기반을 둔 웹 API 프레임워크로써 Express 또는 Fastify 프레임워크를 래핑하여 동작합니다. 기본으로 설치하면 Express를 사용 ...

wikidocs.net


 

Nest 프레임워크 소개 + 당근마켓이 소개하는 Nest의 이점

Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScri..

darrengwon.tistory.com

References: Typescript

 

활용도가 높아지는 웹 프론트엔드 언어, 타입스크립트[TypeScript]

활용도가 높아지는 웹 프론트엔드 언어, 타입스크립트[TypeScript]

www.samsungsds.com

 

TypeScript 한글 문서

TypeScript 한글 번역 문서입니다

typescript-kr.github.io

 

- 💙 typescript

> 컴파일 언어(compile): 원시코드를 기계어로 번역 (**컴파일**할때 결정) > 인터프리터 언어: 기계어로 변환하는 과정없이 한줄씩 해석하여 바로 실행 (**런 ...

wikidocs.net

References: Single-Page Application

 

[IT정보] 싱글 페이지 애플리케이션(Single Page Application, SPA) 개념

싱글 페이지 애플리케이션(Single Page Application, SPA) 싱글 페이지 애플리케이션(Single Page ...

blog.naver.com

 

Single-page application - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Web application that interacts with the user by dynamically rewriting a web page A single-page application (SPA) is a web application or website that interacts with the user by dynamic

en.wikipedia.org