Welcome to GameParadise, a versatile multi-game hub built with the Godot Engine. This project serves as a centralized platform for a collection of fun, arcade-style mini-games, all accessible from a single lobby.
GameParadise currently features three exciting games:
- Space Shooter: A classic top-down arcade shooter. Pilot your spaceship, dodge enemy fire, and destroy waves of alien invaders to achieve a high score.
- Bubble Burst: A fast-paced and colorful bubble-popping game. Pop a target number of bubbles to advance through levels with increasing difficulty.
- Ronaldo vs Messi: A thrilling penalty shootout game. Take control of a legendary player, aim your shot, and try to score past a reactive goalkeeper.
To get the project running on your local machine, follow these simple steps:
- Clone the Repository
git clone <YOUR_REPOSITORY_URL>
cd GameParadise- Open in Godot Engine
- Launch the Godot Engine (version 4.x is recommended).
- In the Project Manager, click the Import button.
- Navigate to the cloned repository folder and select the
project.godotfile.
- Run the Project
- Once the project is imported, select it from the list and click Run (or press F5) to start the game lobby.
The project is organized to be modular and easy to navigate, with a clear separation between core systems and individual games.
GameParadise/
├── games/
│ ├── bubble_burst/ # Bubble Burst game
│ │ ├── scripts/
│ │ │ ├── BubbleBurst.gd
│ │ │ └── Bubble.gd
│ │ ├── scenes/
│ │ └── assets/
│ ├── ronaldo_vs_messi/ # Ronaldo vs Messi game
│ │ ├── scripts/
│ │ │ ├── RonaldoVsMessi.gd
│ │ │ ├── PlayerCharacter.gd
│ │ │ ├── Goalkeeper.gd
│ │ │ └── Ball.gd
│ │ ├── scenes/
│ │ └── assets/
│ └── space_shooter/ # Space Shooter game
│ ├── scripts/
│ │ ├── SpaceShooter.gd
│ │ ├── Player.gd
│ │ ├── Enemy.gd
│ │ ├── Laser.gd
│ │ └── HUD.gd
│ ├── scenes/
│ └── assets/
├── EffectsManager.gd # Manages visual effects
├── EventBus.gd # Global event bus
├── GameConstants.gd # Centralized constants
├── GlobalState.gd # Global game state
├── Lobby.gd # Lobby controller
├── Lobby.tscn # Main lobby scene
├── project.godot # Godot project file
└── README.md # This file
These scripts are loaded globally and provide foundational services across the entire project:
GlobalState.gd: Manages shared game state, includingscore,high_score,lives,level, and pause status (is_paused). It also handles saving and loading the high score.EventBus.gd: A central event bus that allows different game components to communicate without being directly coupled. It defines signals for key events likescore_updated,game_paused, andplayer_died.GameConstants.gd: A static container for game-wide constants, such as player speed, fire rates, and UI font sizes. This makes tweaking game balance easy and centralized.EffectsManager.gd: A utility for instantiating and managing temporary visual effects, like explosions, ensuring they are properly added to the scene and cleaned up afterward.
- ARCHITECTURE.md - Design patterns and system architecture
- CONTRIBUTING.md - Contribution guidelines
- DEVELOPMENT.md - Development setup and workflow
- QUICK_REFERENCE.md - Code patterns and quick lookup
- DOCUMENTATION_INDEX.md - Complete documentation index
Contributions are welcome! If you'd like to add a new game, fix a bug, or improve an existing feature, please follow these steps:
- Fork the repository.
- Create a new branch for your feature (
git checkout -b feature/add-new-game). - Commit your changes (
git commit -m 'Add: New awesome game'). - Push to the branch (
git push origin feature/add-new-game). - Open a Pull Request.
When adding a new game, please create a new folder under the games/ directory and ensure it is self-contained.
See CONTRIBUTING.md for detailed guidelines.