AMIGO is a user-friendly platform designed to enable users to create 2D games without requiring programming expertise. It provides a command-line interface (CLI) to guide users through project setup, asset management, game configuration, and export. AMIGO uses Phaser.js to generate playable games and supports packaging for browser-based play (via Mongoose Web Server) or standalone applications (via Electron.js).
- No Coding Required: Create games using a guided CLI and YAML configuration.
- Asset Management: Supports images (
.png,.jpg,.jpeg), audio (.mp3), and video (.mp4). - Project Validation: Ensures correct folder structure and asset integrity.
- Game Generation: Converts
game.yamlinto a playableindex.htmlfile with Phaser.js. - Export Options:
- Browser-based games using Mongoose Web Server.
- Standalone applications using Electron.js.
- Cross-Device Play: Share games via ZIP files or play locally using a browser or executable.
- Python: Version 3.12.4 or higher.
- Clone the Repository:
git clone https://github.com/Jusuf-Rrustaj/AMIGO.git
- Navigate to the Directory:
cd AMIGO - Create a Virtual Environment (recommended to avoid package conflicts):
python -m venv venv .\venv\Scripts\activate # On Windows source venv/bin/activate # On macOS/Linux
- Install Dependencies:
pip install -r requirements.txt
- Run AMIGO:
python main.py
- Run the standalone executable (
AMIGO.exe) or executepython main.pyfor the source version. - The platform operates offline and requires no installation.
Upon launch, a CLI mini main menu appears:
? What would you like to do? (Use arrow keys)
>> Setup a new game project
Load an existing game project
About
Exit
- Setup a New Game Project: Creates a new project with a folder structure and optional example assets.
- Load an Existing Game Project: Resumes work on an existing project by specifying its folder path.
- About: Displays app information and developer credits.
- Exit: Closes the application.
After selecting or creating a project, a secondary menu offers:
- Validate Project Structure: Checks for required files and folders (e.g.,
assets/,images/,audio/). - Build Game: Guides users to create a
game.yamlfile defining game structure, scenes, and logic. - Generate Game: Converts
game.yamlinto a playableindex.htmlfile with Phaser.js. - Package Game for Export: Packages the game for browser (Mongoose) or standalone (Electron.js) distribution.
- Play Game: Launches the game locally using
start_game.bat(Mongoose) or opens it in a browser.
When creating a new project, AMIGO generates a folder structure:
- Minimal Structure (without example assets):
my-AMIGO-game/ └── assets/ ├── library/ │ └── phaser.js └── ui/ └── icon.ico - With Example Assets:
my-AMIGO-game/ ├── assets/ │ ├── audio/ │ │ ├── correctSound.mp3 │ │ └── wrongSound.mp3 │ ├── images/ │ │ ├── background_level.jpg │ │ ├── background.png │ │ ├── bird.jpg │ │ ├── cat.jpeg │ │ ├── game_logo.png │ │ └── tree.jpg │ └── ui/ │ └── icon.ico ├── library/ │ └── phaser.js ├── game.yaml └── index.html
- Place assets in
assets/images/(.png,.jpg,.jpeg),assets/audio/(.mp3), orassets/video/(.mp4). - Reference assets in
game.yamlusing relative paths, e.g.:assets: images: - key: sun path: assets/images/sun.jpg audio: - key: correctSound path: assets/audio/correctSound.mp3
- The
game.yamlfile defines game settings, scenes, assets, objects, variables, and logic. - Edit it manually with a text editor (e.g., Visual Studio Code) for precise control.
- Example configuration:
game: type: AUTO width: 1024 height: 768 backgroundColor: '#f0f0f0' scenes: - MainMenu - Level1 scenes: - name: MainMenu assets: images: - key: logo path: assets/images/game_logo.png gameObjects: - type: text id: title x: 525.0 y: 390.2 content: Adventure in Picture World! style: fontSize: 40 fontFamily: Arial color: '#ffffff'
- Mongoose Web Server:
- Generates
start_game.bat,mongoose.exe, and copiesindex.htmland assets. - Run
start_game.batto launch the game in a browser athttp://localhost:8000.
- Generates
- Electron.js:
- Requires Node.js (install prompted if missing).
- Creates
export_electron/withgame.exeand supporting files. - Launch by double-clicking
game.exeor a shortcut in the project root.
- After exporting, choose to create a ZIP file:
- Mongoose: Creates
game_title_hostable.zipwithstart_game.bat,index.html, and assets. - Electron: Creates
game_title_standalone.zipwithgame.exeand dependencies.
- Mongoose: Creates
- Recipient Instructions:
- Mongoose: Unzip, run
start_game.batto play in a browser. - Electron: Unzip, double-click
game.exeor the shortcut to play.
- Mongoose: Unzip, run