Skip to content

Developed a modular multiplayer game platform using Python, with Dockerized deployment and real-time log monitoring via ELK ๐Ÿ“

License

Notifications You must be signed in to change notification settings

liocle/42_transcendence

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ Beepong - Multiplayer Pong Game with Real-Time Monitoring

BeePong design vision Design in Figma

Overview

Beepong is a real-time multiplayer Pong game, developed as part of a group project. The goal of the game is to provide an engaging gaming experience for multiple players, complete with AI opponent functionality, tournament logic, and a customizable gaming lobby. The project integrates both front-end and back-end systems, supported by a robust infrastructure that enables real-time monitoring, logging, and analytics using the ELK (Elasticsearch, Logstash, Kibana) stack.

The project is designed to be modular, supporting core game functionality alongside optional features such as advanced logging, AI-based opponents, and real-time game monitoring, ensuring flexibility for future expansions and improvements.

Collaborators

Features

Core Features

  • Multiplayer Pong Game: Play in real-time against other players or an AI opponent.
  • Tournament Mode: Create and join tournaments.
  • Lobby System: Manage game lobbies.
  • AI Opponent: Play against a AI in single-player mode.

Infrastructure and Monitoring

  • ELK Stack Integration: Provides real-time monitoring of game logs, player activity, and system performance.
    • Elasticsearch for indexing and searching logs.
    • Logstash for log processing and aggregation.
    • Kibana for visualizing logs and performance metrics.
  • PostgreSQL Database: Backend database supporting persistent player data and game history.
  • Nginx Server: Handles front-end requests, ensuring smooth game delivery and hosting static assets.

Testing

  • Cypress: End-to-end testing simulating user interactions and verifying the integrity of the front-end. Currently only in this PR: BeePong#91

System Architecture

The Beepong architecture is divided into multiple services running within Docker containers:

  • Frontend: Vanilla javascript-based interface where users interact with the game.
  • Backend: Django-based REST API that handles game logic, player management, and real-time communication.
  • Database: PostgreSQL database stores persistent game data, user accounts, and match results.
  • ELK Stack: Elasticsearch, Logstash, and Kibana work together to provide detailed logging and analytics for real-time monitoring.

Getting Started

Prerequisites

  • Docker and Docker Compose: Ensure you have Docker installed to build and run the services.
  • Node.js: For frontend development and testing.
  • Python 3.x: For backend development (Django).
  • PostgreSQL: As the primary database.

Installation

  1. Clone the repository:
    git clone https://github.com/your-username/beepong.git
    cd beepong
  2. Set up the environment variables:
    cp .env.example .env
  3. Build and start the services:
    docker compose up 

Running Tests

  • Cypress: For end-to-end testing:
    docker compose run --rm cypress

License:

This project is licensed under the MIT License.

About

Developed a modular multiplayer game platform using Python, with Dockerized deployment and real-time log monitoring via ELK ๐Ÿ“

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 75.5%
  • JavaScript 8.9%
  • Makefile 4.9%
  • HTML 4.9%
  • CSS 4.6%
  • Dockerfile 0.9%
  • Shell 0.3%