fleizean / ft_transcendence

Develop a website for real-time multiplayer Pong games with a user-friendly interface, meeting minimum guidelines for overall grading. Future course modules may enhance or replace features. Pay attention to green-highlighted terms denoting evolving technology choices, and refer to version specifics in the subject documentation.

Home Page:https://indianpong.onrender.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ft_transcendence_newpdf*

Mandatory part

Minimal technical requirement ✅
  • ✅ The frontend should be developed using pure vanilla Javascript.
  • ✅ Your website must be a single-page application. The user should be able to use the Back and Forward buttons of the browser.
  • ✅ Your website must be compatible with the latest stable up-to-date version of Google Chrome .
  • ✅ The user should encounter no unhandled errors and no warnings when browsing the website.
  • ✅ Everything must be launched with a single command line to run an autonomous container provided by Docker. Example : docker-compose up --build
Game ✅ The main purpose of this website is to play Pong versus other players.
  • ✅ Therefore, users must have the ability to participate in a live Pong game against another player directly on the website. Both players will use the same keyboard. The Remote players module can enhance this functionality with remote players.
  • ✅ A player must be able to play against another player, but it should also be possible to propose a tournament. This tournament will consist of multiple players who can take turns playing against each other. You have flexibility in how you implement the tournament, but it must clearly display who is playing against whom and the order of the players.
  • ✅ A registration system is required: at the start of a tournament, each player must input their alias name. The aliases will be reset when a new tournament begins. However, this requirement can be modified using the Standard User Management module.
  • ✅ There must be a matchmaking system: the tournament system organize the matchmaking of the participants, and announce the next fight.
  • ✅ All players must adhere to the same rules, which includes having identical paddle speed. This requirement also applies when using AI; the AI must exhibit the same speed as a regular player.
  • ✅ The game itself must be developed in accordance with the default frontend con- straints (as outlined above), or you may choose to utilize the FrontEnd module, or you have the option to override it with the Graphics module. While the visual aesthetics can vary, it must still capture the essence of the original Pong (1972).
Security concerns ✅
  • ✅ Any password stored in your database, if applicable, must be hashed.
  • ✅ Your website must be protected against SQL injections/XSS.
  • ✅ If you have a backend or any other features, it is mandatory to enable an HTTPS connection for all aspects (Utilize wss instead of ws...).
  • ✅ You must implement some form of validation for forms and any user input, either within the base page if no backend is used or on the server side if a backend is employed.
Please make sure you use a strong password hashing algorithm.
For obvious security reasons, any credentials, API keys, env variables etc... must be saved locally in a .env file and ignored by git. Publicly stored credentials will lead you directly to a failure of the project.

Modules

Major Modules

Standard user management, authentication, users across tournaments. ✅
  • ✅ Users can subscribe to the website in a secure way.
  • ✅ Registered users can log in in a secure way.
  • ✅ Users can select a unique display name to play the tournaments.
  • ✅ Users can update their information.
  • ✅ Users can upload an avatar, with a default option if none is provided.
  • ✅ Users can add others as friends and view their online status.
  • ✅ User profiles display stats, such as wins and losses.
  • ✅ Each user has a Match History including 1v1 games, dates, and relevant details, accessible to logged-in users.
Implementing a remote authentication. ✅ In this major module, the goal is to implement the following authentication system: OAuth 2.0 authentication with 42. Key features and objectives include:
Be carefull, the management of duplicate usernames/emails is at your discretion. You must provide a justification for your decision.
  • ✅ Integrate the authentication system, allowing users to securely sign in.
  • ✅ Obtain the necessary credentials and permissions from the authority to enable a secure login.
  • ✅ Implement user-friendly login and authorization flows that adhere to best practices and security standards.
  • ✅ Ensure the secure exchange of authentication tokens and user information between the web application and the authentication provider.
This major module aims to get a remote user authentication, providing users with a secure and convenient way to access the web application.
Remote players ✅ It is possible to have two distant players. Each player is located on a separated computer, accessing the same website and playing the same Pong game.
Think about network issues, like unexpected disconnection or lag. You have to offer the best user experience possible. (Not needed)
Use a Framework as backend. ✅ In this major module, you are required to utilize a specific web framework for your backend development, and that framework is Django.
You can create a backend without using the constraints of this module by using the default language/framework. However, this module will only be valid if you use the associated constraints.
Live Chat. ✅ You have to create a chat for your users in this module:
  • ✅ The user should be able to send direct messages to other users.
  • ✅ The user should be able to block other users. This way, they will see no more messages from the account they blocked.
  • ✅ The user should be able to invite other users to play a Pong game through the chat interface.
  • ✅ The tournament system should be able to warn users expected for the next game.
  • ✅ The user should be able to access other players profiles through the chat interface.
Introduce an AI Opponent. ✅ In this major module, the objective is to incorporate an AI player into the game. Notably, the use of the A* algorithm is not permitted for this task. Key features and goals include:
  • ✅ Develop an AI opponent that provides a challenging and engaging gameplay experience for users.
  • ✅ The AI must replicate human behavior, meaning that in your AI implementation, you must simulate keyboard input. The constraint here is that the AI can only refresh its view of the game once per second, requiring it to anticipate bounces and other actions.
  • ✅ The AI must utilize power-ups if you have chosen to implement the Game customization options module.
  • ✅ Implement AI logic and decision-making processes that enable the AI player to make intelligent and strategic moves.
  • ✅ Explore alternative algorithms and techniques to create an effective AI player without relying on A*.
  • ✅ Ensure that the AI adapts to different gameplay scenarios and user interactions.

  • This major module aims to enhance the game by introducing an AI opponent that adds excitement and competitiveness without relying on the A* algorithm.
Add Another Game with User History and Matchmaking. ✅ In this major module, the objective is to introduce a new game, distinct from Pong, and incorporate features such as user history tracking and matchmaking. Key features and goals include:
  • ✅ Develop a new, engaging game to diversify the platform’s offerings and entertain users.
  • ✅ Implement user history tracking to record and display individual user’s gameplay statistics.
  • ✅ Create a matchmaking system to allow users to find opponents and participate in fair and balanced matches.
  • ✅ Ensure that user game history and matchmaking data are stored securely and remain up-to-date.
  • ✅ Optimize the performance and responsiveness of the new game to provide an enjoyable user experience. Regularly update and maintain the game to fix bugs, add new features, and enhance gameplay.
This major module aims to expand your platform by introducing a new game, enhancing user engagement with gameplay history, and facilitating matchmaking for an enjoyable gaming experience.

Minor Modules

Use a front-end framework or toolkit. ✅ Your frontend development will utilize the Bootstrap toolkit.
You can create a front-end without using the constraints of this module by using the default language/framework. However, this module will only be valid if you use the associated constraints.
Use a database for the backend -and more. ✅ The designated database for all DB instances in your project is PostgreSQL. This choice guarantees data consistency and compatibility across all project components and may be a prerequisite for other modules, such as the backend Framework module.
Game Customization Options. ✅ In this minor module, the goal is to provide customization options for all available games on the platform. Key features and objectives include:
  • ✅ Offer customization features, such as power-ups, attacks, or different maps, that enhance the gameplay experience.
  • ✅ Allow users to choose a default version of the game with basic features if they prefer a simpler experience.
  • ✅ Ensure that customization options are available and applicable to all games offered on the platform.
  • ✅ Implement user-friendly settings menus or interfaces for adjusting game parameters.
  • ✅ Maintain consistency in customization features across all games to provide a unified user experience.
This module aims to give users the flexibility to tailor their gaming experience across all available games by providing a variety of customization options while also offering a default version for those who prefer a straightforward gameplay experience.
Expanding Browser Compatibility. ✅ In this minor module, the objective is to enhance the compatibility of the web application by adding support for an additional web browser. Key features and objectives include:
  • ✅ Extend browser support to include an additional web browser, ensuring that users can access and use the application seamlessly.
  • ✅ Conduct thorough testing and optimization to ensure that the web application functions correctly and displays correctly in the newly supported browser.
  • ✅ Address any compatibility issues or rendering discrepancies that may arise in the added web browser.
  • ✅ Ensure a consistent user experience across all supported browsers, maintaining usability and functionality.
This minor module aims to broaden the accessibility of the web application by supporting an additional web browser, providing users with more choices for their browsing experience.
Multiple language supports. ✅ In this minor module, the objective is to ensure that your website supports multiple languages to cater to a diverse user base. Key features and goals include:
  • ✅ Implement support for a minimum of three languages on the website to accommodate a broad audience.
  • ✅ Provide a language switcher or selector that allows users to easily change the website’s language based on their preferences.
  • ✅ Translate essential website content, such as navigation menus, headings, and key information, into the supported languages.
  • ✅ Ensure that users can navigate and interact with the website seamlessly, regardless of the selected language.
  • ✅ Consider using language packs or localization libraries to simplify the translation process and maintain consistency across different languages.
  • ✅ Allow users to set their preferred language as a default choice for subsequent visits to the website.
This minor module aims to enhance the accessibility and inclusivity of your website by offering content in multiple languages, making it more user-friendly for a diverse international audience.
GDPR Compliance Options with User Anonymization, Local Data Management, and Account Deletion. ✅ In this minor module, the goal is to introduce GDPR compliance options that allow users to exercise their data privacy rights. Key features and objectives include:
  • ✅ Implement GDPR-compliant features that enable users to request anonymization of their personal data, ensuring that their identity and sensitive information are protected.
  • ✅ Provide tools for users to manage their local data, including the ability to view, edit, or delete their personal information stored within the system.
  • ✅ Offer a streamlined process for users to request the permanent deletion of their accounts, including all associated data, ensuring compliance with data protection regulations..
  • ✅ Maintain clear and transparent communication with users regarding their data privacy rights, with easily accessible options to exercise these rights.
This minor module aims to enhance user privacy and data protection by offering GDPR compliance options that empower users to control their personal information and exercise their data privacy rights within the system.



Our Team - indian full stack developers 🇮🇳


sciftci (Samet)


Intra 42

fyurtsev (Furkan)


Intra 42

yaktas (Yunus Emre)


Intra 42

ataskin (Can)


Intra 42

eyagiz (Enes)


Intra 42

About

Develop a website for real-time multiplayer Pong games with a user-friendly interface, meeting minimum guidelines for overall grading. Future course modules may enhance or replace features. Pay attention to green-highlighted terms denoting evolving technology choices, and refer to version specifics in the subject documentation.

https://indianpong.onrender.com


Languages

Language:Python 32.8%Language:HTML 25.5%Language:CSS 21.0%Language:JavaScript 20.6%Language:Dockerfile 0.1%Language:Makefile 0.1%Language:Shell 0.0%