Skip to content

42masterplan/ft_transcendence-back

Repository files navigation

Nest Logo

Amazing Pong 🏓

Project Duration: Aug, 2023 ~ Jan, 2024

  • A graduation project of 42Seoul (ft_transcendence)
  • Online RealTime Chatting & Pong Game Service

Table Of Contents

About our projects

ft_transcendence (Amazing Pong) is the graduation project of 42 Seoul, and it is a project that covers all the things we have learned so far in 42.

Our team not only met the requirements required by the subject, but also provided notification functions to provide a high user experience, and above all, we wrote the code by trying to properly deal with exceptions that may occur on the server.

As a result, it became a project with a high degree of completion, receiving an Outstanding Project in two of the three peer evaluations.

Features

  • You can enjoy the real-time Pong game with other online users.

  • Using 42 api, it provides login function through 42 intra account.

  • The user has an individual profile.

    • User can set and modify a unique nickname and profile picture.
    • User can set up a two-step authentication through an email address.
    • In the profile, user can see the progress of each user's challenge and game history.
  • Provides social functionality between users.

    • User can add, delete, and block friends.
    • One-on-one DM is possible between friends.
    • User can't see messages from friends that user blocked.
  • It provides a channel function that allows you to chat with other users.

    • User can create public channels, password channels, and private channels.
    • Participants in the channel have roles such as Owner, Administrator, and User.
    • Owner and Administrator can expel, mute, or ban users from the channel.
    • Owner can designate the Administrator and manage the users who are in the channel.
    • You can go to another user's profile and apply for a game in the channel.
  • Notify friend requests and game applications.

    • The user may check and accept/reject a new notification on the screen.

프로젝트 소개

ft_transcendence(Amazing Pong) 은 42서울의 수료를 위한 마지막 과제로써, 그간 배워왔던 것들을 총망라한 최종 프로젝트이다.

우리 팀은 서브젝트에서 요구하는 조건을 만족하는 것에 그치지 않고, 높은 사용자 경험을 제공하기 위해 알림 기능 등을 제공하였으며, 무엇보다 서버에서 일어날 수 있는 예외사항들을 올바르게 처리할 수 있도록 노력하여 코드를 작성하였다.

그 결과, 세 번의 동료 평가 중 두 번의 평가에서 Outstanding Project를 받으며 높은 완성도를 자랑할 수 있는 프로젝트가 되었다.

기능 목록

  • 온라인 상의 다른 유저들과 실시간 Pong 게임을 즐길 수 있다.

  • 42 api를 이용하여, 42 intra 계정을 통한 로그인 기능을 제공한다.

  • 유저는 개개인의 프로필을 가진다.

    • 유저는 고유한 닉네임과, 프로필 사진을 설정 및 수정할 수 있다.
    • 이메일 주소를 통한 2단계 인증 설정을 할 수 있다.
    • 프로필에서는 각 유저의 도전 과제 진행상황, 게임 전적을 볼 수 있다.
  • 유저 간 소셜 기능을 제공한다.

    • 친구 추가 및 삭제, 차단이 가능하다.
    • 친구 간에는 1:1 DM이 가능하다.
    • 유저가 차단한 친구의 메시지는 보이지 않는다.
  • 다른 유저들과 채팅이 가능한 채널 기능을 제공한다.

    • 공개 채널, 비밀번호 채널, 비공개 채널이 존재한다.
    • 채널의 참가자는 Owner, Administrator, User라는 role을 가지고 있다.
    • Owner와 Administrator는 채널에서 사용자를 추방, 뮤트, 밴할 수 있다.
    • Owner는 Administrator를 지정할 수 있으며, 채널에서 밴 된 사용자들을 관리할 수 있다.
    • 채널 인터페이스에서 다른 사용자의 프로필로 이동 혹은 게임 신청이 가능하다.
  • 친구 요청 및 게임 신청에 대해서 알림을 제공한다.

    • 사용자는 화면 상에서 새로 온 알림을 확인 및 수락/거절할 수 있다.

Diagrams

Architecture

To be updated 📋

ERD

ft_transcendance drawio

Stacks

Frontend

Backend

Service Screenshots

Screen Screen
Initial Screen Sign In
Redirects to 42 OAuth to login. User can set up nicknames,
profile images, and status messages.
Set Up 2fa Email Profile
Enforce mandatory email verification
for 2fa during the sign-up process.
Provides user information, including tiers and game records.
Update User Info Social
Change nicknames, profile images,
and status messages.
Check user status,
add, delete, or ban friends.
Ladder Game Normal Game 1
Random matchmaking based on tiers
: Tier adjustments based on the game result.
Initiate game request to a specified opponent
: Game theme selectable.
Normal Game 2 Normal Game 3
Select opponents from friends list. Requesting game.
Waiting Game Game
Start after a 5-second countdown. Match lasts for 2 minutes.
Win by scoring 10 points.
In case of a tie, deuce occurs.
If a user leaves, it results in a forfeit.
Game Result List of Participating Channels
List of Public Channels Create Channel
Set channel visibility (Public/Private),
channel name and password
Invite Friends
Channel: User Channel: Admin
Channel: Admin - setting DM

License

Nest is MIT licensed.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages