{"id":26279890,"url":"https://github.com/jayllyz/labyrinth-game","last_synced_at":"2025-10-16T08:22:26.213Z","repository":{"id":280577778,"uuid":"880160059","full_name":"Jayllyz/labyrinth-game","owner":"Jayllyz","description":"TCP Client / Server labyrinth game.","archived":false,"fork":false,"pushed_at":"2025-07-20T20:25:33.000Z","size":20821,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T22:56:13.607Z","etag":null,"topics":["maze","multithreading","tcp-client-server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jayllyz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-29T08:23:33.000Z","updated_at":"2025-06-30T22:07:32.000Z","dependencies_parsed_at":"2025-03-04T07:32:10.940Z","dependency_job_id":"e95c7adc-e646-4cbf-9f05-70e58221c553","html_url":"https://github.com/Jayllyz/labyrinth-game","commit_stats":null,"previous_names":["jayllyz/labyrinth-game"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Jayllyz/labyrinth-game","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2Flabyrinth-game","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2Flabyrinth-game/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2Flabyrinth-game/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2Flabyrinth-game/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jayllyz","download_url":"https://codeload.github.com/Jayllyz/labyrinth-game/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jayllyz%2Flabyrinth-game/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279169460,"owners_count":26118428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-16T02:00:06.019Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["maze","multithreading","tcp-client-server"],"created_at":"2025-03-14T14:17:29.991Z","updated_at":"2025-10-16T08:22:26.154Z","avatar_url":"https://github.com/Jayllyz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧩 Labyrinth Game\n\n[![CI](https://github.com/Jayllyz/labyrinth-game/actions/workflows/ci.yaml/badge.svg)](https://github.com/Jayllyz/labyrinth-game/actions/workflows/ci.yaml)\n[![E2E Tests](https://github.com/Jayllyz/labyrinth-game/actions/workflows/test-e2e.yaml/badge.svg)](https://github.com/Jayllyz/labyrinth-game/actions/workflows/test-e2e.yaml)\n![License](https://img.shields.io/github/license/Jayllyz/labyrinth-game?style=flat-square)\n\nA multiplayer maze solving game built in Rust. Players navigate through procedurally generated mazes and compete to find the exit using various algorithms.\n\n\u003e **Note**: The server is not yet implemented. Until then, you can use the server binary in the `e2e/` directory.\n\n## 📖 Table of Contents\n\n- [🧩 Labyrinth Game](#-labyrinth-game)\n  - [📖 Table of Contents](#-table-of-contents)\n  - [✨ Features](#-features)\n  - [🎮 How to Play](#-how-to-play)\n    - [Prerequisites](#prerequisites)\n    - [Starting the Server](#starting-the-server)\n    - [Starting the Client](#starting-the-client)\n  - [🏗️ Architecture](#️-architecture)\n  - [🧮 Algorithms](#-algorithms)\n    - [Maze Generation](#maze-generation)\n    - [Maze Solving](#maze-solving)\n  - [📄 License](#-license)\n\n## ✨ Features\n\n- **Procedurally generated mazes**: Using the Sidewinder algorithm with customizable seed values\n- **Multiple solving algorithms**: \n  - Tremeaux algorithm\n  - Right-hand wall following\n  - Breadth-First Search (BFS)\n  - A* (A-Star) pathfinding\n- **Multiplayer support**: Run multiple agents simultaneously to solve the maze\n- **Terminal User Interface (TUI)**: Real-time visualization of maze solving progress\n\n## 🎮 How to Play\n\n### Prerequisites\n\n- Rust 1.85.0 or higher\n\n### Starting the Server\n\nThe server hosts the game and manages connections from clients.\n\n```bash\n# In e2e/ directory\n./server run --maze 100,100\n```\n\nOr you can run the minimal server (for testing purposes) with the following command:\n\n```bash\ncargo run -p server --release\n```\n\n### Starting the Client\n\nThe client connects to the server and runs the maze-solving agents.\n\n```bash\n# Basic usage with Terminal UI\ncargo run -p client --release -- --tui\n\n# Select solving algorithm\ncargo run -p client --release -- --algorithm Tremeaux  # Options: Tremeaux, WallFollower, Alian\n\n# Or using prebuilt binaries\n./client --tui\n./client --algorithm Tremeaux\n```\n\n## 🏗️ Architecture\n\nThe project is divided into the following components:\n\n- **client**: Implements the game client and solving algorithms\n- **server**: Implements the minimal server for testing purposes\n- **e2e**: End-to-end tests for the client with the complete server\n- **shared**: Contains common code shared between client and server\n- **benchmarks**: Performance benchmarks for various internal components\n\n## 🧮 Algorithms\n\n### Maze Generation\n\n- **Sidewinder**: Creates mazes with a bias toward horizontal passages\n\n### Maze Solving\n\n- **Tremeaux**: A depth-first algorithm that marks each passage when it is used\n- **Alian**: An optimized version of the Tremeaux algorithm *(default)*\n- **Right-hand Wall Following**: Always keeps the right hand on the wall\n- **BFS (Breadth-First Search)**: Finds the shortest path in unweighted mazes\n- **A\\* (A-Star)**: Finds the shortest path using heuristics\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\nBased on the rules from [haveneer-training/sauve_qui_peut](https://github.com/haveneer-training/sauve_qui_peut).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayllyz%2Flabyrinth-game","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjayllyz%2Flabyrinth-game","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayllyz%2Flabyrinth-game/lists"}