ft_transcendence 과제 해석
ft_transcendence
곧, 당신이 몰랐다고 생각했던 것들을
이미 알고 있다는 것을 깨닫게 될겁니다.
요약:
C 멈춰! C++ 멈춰
이 프로젝트로 당신은 ~절대 해본 적 없을~ 것들을 하게 될겁니다.
Computer Science 분야로 첫 걸음을 띄었던 그 때를 상기시켜 보세요.
지금 당신을 보세요. ✨ 빛날 시간입니다! ✨
목차
머리말
"퐁"
퐁퐁남 아님
진짜 이게 다에요...
필수 파트
이 프로젝트는 위대한 Pong 대회를 위한 웹사이트를 만드는 것입니다!
개요 및 규칙 📏
당신의 웹사이트 덕에 유저들은 Pong을 플레이할 수 있게 됩니다.
멋진 UI, 채팅, 실시간-멀티플레이어 온라인 게임을 제공하세요!
작업물은 아래의 규칙들을 지켜야 합니다. 🤖
- - Back-end 파트는 Nest JS로 작성되어야 합니다.
- - Front-end 파트는 선택한 Typescript Framework로 작성되어야 합니다.
- - 원하는 어떤 라이브러리든 사용할 수 있습니다! 완전 자유에요.
다만, 모든 라이브러리와 프렘임워크는 최신화 & 안정화된 버전이어야 합니다. - - 당신의 애인은 PostgreSQL 데이터베이스입니다. 바람둥이는 용서치 못할 예정입니다.
- - 당신의 웹사이트는 Single-Page Application이어야 합니다.
유저들은 브라우저의 Back/Forward 버튼을 사용할 수 있어야 합니다. - - Google Chrome, Firefox, Safari의 최신 버전에서 모두 동작해야 합니다.
- - 유저는 브라우징 하는 동안 처리되지 않은 에러, 경고에 마주쳐서는 안됩니다. 고객센터에 따지고 들테니까요.
- - 모든것은 docekr-compose up --build 하나로 실행되야 합니다.
인셉션 하길 잘했죠?
주의:
docker bind-mount 기능을 Linux dump에서 사용하고 싶은 경우,
/goinfre 나 /sgoinfre 를 이용하세요.
보안 관련 사항들 🔒︎
완벽한 기능의 웹사이트를 만들기 위해 지켜야 할 몇개의 보안 문제들이 있습니다.
- - DB에 저장된 모든 비밀번호는 암호화 되어야 합니다.
- - 웹사이트는 SQL injection으로부터 보호되어야 합니다.
(대충 글에다가 SQL 써넣어도 그거 실행되면 안된다는 소리) - - form, user input에 대해 서버 측에서 유효성 검사를 해야 합니다.
사용자 계정 🙋
- - 로그인 기능은 42 Intranet의 OAuth 시스템을 이용하여야 합니다.
- - Unique한 (중복 X) 이름을 가져야 합니다. -> nickname: unique
- - 아바타를 업로드할 수 있어야 합니다. 없다면 기본 사진으로!! -> 프사 해야된다는 말인듯
- - 사용자는 이중 인증 기능을 활용할 수 있어야 합니다.
예를 들면, Google Authenticator나 핸드폰 문자 메시지라던가...
와... 미친거 아님...??? 그럼 메일 인증으로는 충족되나...? 이건 비교적 쉬울것같은데 ㅇㅅㅇ - - 유저는 다른 유저를 친구로 등록할 수 있어야 하고, 친구인 유저의 Status를 확인할 수 있어야 합니다.
Status: 온라인/오프라인 여부, 게임중인지, 기타 등등 - - 프로필에는 Stat이 표시되어야 합니다.
Stat: 승/패, Ladder Level(티어?), Achievement, 기타 등등 - - 각 유저는 매칭 히스토리가 있어야 합니다. 로그인 된 누구든 확인(consult)할 수 있어야 합니다.
매칭 히스토리: 1대1, ladder(티어), 그 외의 유용한 건 뭐든!
채팅 💬
채팅 기능도 만들어야 합니다.
- - Channels (채팅방)을 만들 수 있어야 하며, public / private / protected (비밀번호)로 분류되어야 합니다.
- - DM을 만들 수 있엉 ㅑ합니다.
- - 다른 유저를 Block = 차단?할 수 있어야 합니다. 이 경우에 블록한 상대로부터 메시지는 더 보이지 않습니다.
- - 새 채널을 연 사람이 자동적으로 완장(주딱)이 됩니다.
- - - 완장(주딱)은 채널에 접속하기 위한 비밀번호를 설정/변경/해제할 수 있습니다.
- - - 완장(주딱)은 채널 관리자입니다. 다른 유저도 관리자(파딱)으로 만들 수 있습니다.
- - - 채널 관리자는 유저를 일시적으로 밴/차단 할 수 있습니다. (ban or mute users for a limited time)
- - Chat 인터페이스를 동해 다른 사람을 Pong 게임에 초대할 수 있어야 합니다.
- - Chat 인터페이스를 동해 다른 사람의 프로필을 볼 수 있어야 합니다.
게임 🎮
이 사이트의 주 목적은 다른 유저와 퐁을 플레이하고 얼마나 잘하는지 모두에게 보여주는 것에 있습니다.!
- - 위의 목적에 따라, 유저는 사이트에서 직접 Pong 게임을 플레이할 수 있어야 합니다.
- - 매치메이킹 시스템이 있어야 합니다. 유저는 게임에 참여할 때 까지 대기 큐에 자동으로 참가됩니다.
- - 일부 커스터마이징 옵션을 제공해야합니다. 그러나 원한다면 아무 추가 기능 없이 Default로 플레이할 수 있어야 합니다.
커스터마이징 옵션: 파워업, 여러가지 맵, 등등 - - 캔버스 게임이 될 수도 있고, 3D로 렌더링할 수 도 있습니다. 못생겨도 됩니다.
뭐든 간에 원본 Pong(1972)에 충실해야 합니다. - - 게임은 반드시 responsive해야 합니다!
- - 아무 간섭도 없이 유저 간에 라이브 플레이를 할 수 있어야 합니다.
참고:
네트워크 이슈를 고려해야 합니다. 예기치 못한 disconnection, 랙 등 말이죠.
유저에게 가능한 한 최고의 UX를 제공하세요. (고생은 개발자가)
Comment