Skip to content

42sin/ft_transcendence

Repository files navigation


Logo

ft_transcendence

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Features
  4. Usage Demo
  5. License

About The Project

This is the last group project of the 42 core curriculum and arguably the biggest one. It is a full-stack web application that provides an engaging and interactive platform where users can enjoy a game of traditional Pong. It is designed with a modern and user-friendly interface offering a seamless experience for gaming and social interactions. This project was done in collaboration with Gilbert, Joko, Sonja and Anahi

(back to top)

Built With

  • Nest
  • Angular
  • Postgresql
  • Docker

(back to top)

Getting Started

Prerequisites

  • API Key from 42
  • Docker/Docker-compose

To run the project, you need a .env file, I provided you with an example file inside of ./docker/ but you still need to put in your API key there. It should look something like this

FORTYTWO_APP_ID="u-s0a2ud-exdc4c4502170a03960f0678cc960072f7bab69021e09b10a9b80adfde43a5150"
FORTYTWO_APP_SECRET="s-s0a2ud-459dc0ce839266e939babac417fae1fb0be00b9443029c849693534e67394032"

Installation

  1. Clone the repo
    git clone https://github.com/42sin/ft_transcendence.git && cd ft_transcendence
  2. Compile the project
    make
  3. Connect
    localhost:3000/

For testing purposes, it will only run on your local system. It can also be run online, so multiple people at different locations can connect and play but you would need to change some of the configuration files and generate a new API key.

(back to top)

Features

General:

  • Pong Gameplay Play the classic game of Pong on 3 different maps
  • Chat System Engage in group or private chats with other users
  • Highscore Tab Ranking of the best players
  • User Profile See their stats, add them as a friend or block them
  • 2FA Authentication Improve your account security with Google Authenticator
  • 42 API Integration Sign in with your 42 API credentials
  • Themes Choose one of 3 Color Themes to change the websites feeling

Chat Commands:

  • /JOIN #CHANNELNAME (PASS) Create or Join an existing channel with or without a password
  • /TALK_TO USERNAME Private message a user
  • /KICK #CHANNELNAME USERNAME Kick a User from a channel
  • /BAN #CHANNELNAME USERNAME Ban a User from a channel
  • /PART #CHANNELNAME Leave a channel
  • /DELETE #CHANNELNAME Delete a channel
  • /CHANGE_PASSWORD #CHANNELNAME (PASS) Change or remove the password of a channel
  • /UNMUTE OR /MUTE #CHANNELNAME USERNAME Mute/Unmute a user of a channel
  • /UNBLOCK OR /BLOCK USERNAME Block/Unblock a user
  • /ADD_ADMIN #CHANNELNAME USERNAME Give someone admin privileges
  • /INVITE OR /ACCEPT USERNAME Invite/Accept to a game

User:

  • Change your profile picture
  • Change your username
  • Activate 2FA with Google Authenticator
  • Add/Delete Friends
  • Block/Unblock users
  • Matchhistory
  • Winrate as %

(back to top)

Usage Demo

Game

To start a game you need to choose the map you want to play and join the waiting room. If there is someone already waiting you can join a game with them. Otherwise you will create a game and wait until someone joins.

z2q2s1.mp4

Chat

General commands can be used without being in a channel but for the chat specific commands you need to be in a channel of course.

9e8adx1.mov

Profile

Here you can change your own profile or see the stats of other users and add/delete or block/unblock them with the UI. Much easier than using the chat right?

ab4i3s.mp4

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published