Skip to content

Evaluation

Andreï Basdereff edited this page Oct 21, 2024 · 19 revisions

Library and tools

  • The use of libraries or tools that provide an immediate complete solution for a global feature or a module is prohibited.
  • Any direct instruction about the usage (can, must, can’t) of a third party library or tool must be followed.
  • The use of a small library or tool that solve a simple and unique task, representing a subcomponent of a global feature or module, is allowed.
  • During the evaluation, the team will justify any usage of library or tool that is not explicitly approved by the subject.
  • During the evaluation, the evaluator will take her/his responsibility and define if the usage of a specific library or tool is legit (and allowed) or almost solving an entire feature or module (and prohibited).

Mandatory

  • SPA, Back and Forward buttons must work.
  • Compatible with LTS Google Chrome.
  • No unhandled errors and no warnings.
  • Single command line to run an autonomous container docker compose up --build.
  • Local Play: "Both players will use the same keyboard".
  • 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." "There must be a matchmaking system: the tournament system organize the matchmaking of the participants, and announce the next fight."
  • Game : "All players must adhere to the same rules, which includes having identical paddle speed." "While the visual aesthetics can vary, it must still capture the essence of the original Pong".
  • Any password stored in your database, if applicable, must be hashed.
  • Protection against SQL / XSS Injection.
  • Use HTTPS / WSS.
  • Form of validation for forms and any user input, in front or backend.
  • Protect all API routes.
  • Use a strong password hashing algorithm.
  • No .env file, env variables, API keys, credentials in version control.

Modules

Web

Use a Framework as backend - Major

  • Use Django for the backend.

Use a front-end framework or toolkit - Minor

  • Use Bootstrap toolkit to build frontend.

Use a database for the backend and more - Minor

  • "The designated database for all DB instances in your project is PostgreSQL".

User Management

Standard user management, authentication, users across tournaments - Major

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 - Major

  • Use OAuth 2.0 authentication with 42.
  • 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.

Gameplay and user experience

Remote players - Major

  • Play on two separated computer.

Game Customization Options - Minor

  • 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.

Live Chat - Major

  • 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.

AI-Algo

User and Game Stats Dashboards - Minor

  • Create user-friendly dashboards that provide users with insights into their own gaming statistics.
  • Develop a separate dashboard for game sessions, showing detailed statistics, outcomes, and historical data for each match.
  • Ensure that the dashboards offer an intuitive and informative user interfac for tracking and analyzing data.
  • Implement data visualization techniques, such as charts and graphs, to present statistics in a clear and visually appealing manner.
  • Allow users to access and explore their own gaming history and performance metrics conveniently.
  • Feel free to add any metrics you deem useful.

Devops

Infrastructure Setup with ELK - Major

  • Deploy Elasticsearch to efficiently store and index log data, making it easily searchable and accessible.
  • Configure Logstash to collect, process, and transform log data from various sources and send it to Elasticsearch.
  • Set up Kibana for visualizing log data, creating dashboards, and generating insights from log events.
  • Define data retention and archiving policies to manage the storage of log data effectively.
  • Implement security measures to protect log data and access to the ELK stack components.

Gaming

Game Customization Options - Minor

  • See in Gameplay and user experience.

Accessibility

Expanding Browser Compatibility - Minor

  • 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.

Multiple language supports - Minor

  • 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.

Server-Side Pong

Replacing Basic Pong with Server-Side Pong and Implementing an API - Major

  • Develop server-side logic for the Pong game to handle gameplay, ball movement, scoring, and player interactions.
  • Create an API that exposes the necessary resources and endpoints to interact with the Pong game, allowing partial usage of the game via the Command-Line Interface (CLI) and web interface.
  • Design and implement the API endpoints to support game initialization, player controls, and game state updates.
  • Ensure that the server-side Pong game is responsive, providing an engaging and enjoyable gaming experience.
  • Integrate the server-side Pong game with the web application, allowing users to play the game directly on the website.

Points

  • Major: 7
  • Minor 7

Total: 10.5 / 9.5