Gamebro
is a retro-inspired game engine GUI built with Python and Pygame — a twist on the legendary Gameboy, but made for building 2D games with style, ease, and a ton of custom potential.
Think Unity, but vibin’ on 16-bit aesthetics and simplicity. 💾🕹️
- 🔧 Sprite system with editable custom data
- 🖱️ Clickable GUI with panels (Sprites, Inspector, Toolbar)
- 🔤 Rename sprites with a click & type
- 💾 Save projects as Python scripts
- 📦 Built-in project manager
- 🎨 Slick UI styled in dark mode with accents
pip install -r requirements.txt
python gamebro_gui.py
That’s it. A clean GUI will launch. You can:
- Enter a project name
- Click "Create New Project"
- Add sprites (
Ctrl + N
) - Rename them (
r
) - Save your project (
Ctrl + S
) as a real.py
file!
Global
:
Ctrl+S
— Save Project
Sprites
:
Ctrl+N
— Add New SpriteCtrl+X
— Delete Selected Sprite (also removes it from all groups)Ctrl+K
— Add Data Key to Selected SpriteCtrl+D
— Delete Data Key from Selected SpriteCtrl+O
— Add a Sprite from a JSON fileR
— Rename Selected Sprite (when a sprite is selected)C
— Clear Selection
Groups
:
Ctrl+G
— Add New GroupCtrl+X
— Delete Selected Group (when a group is selected)Ctrl+A
— Add Sprite to Selected GroupCtrl+Z
— Remove Sprite from Selected GroupR
— Rename Selected Group (when a group is selected)C
— Clear Selection
Navigation
:
- Click on sprite name — Select sprite
- Click on group name — Select group
Inspector
:
- Shows details for selected sprite or group.
Tip: Most actions require a sprite or group to be selected. Use the mouse to select items in the Sprites or Groups panel.
Here's what a saved project file might look like:
# -*- coding: utf-8 -*-
from gamebro import Sprite, SpriteGroup, entitify
from ursina import *
import sys
import os
from ursina.prefabs.first_person_controller import FirstPersonController
# Project: MyGame
# Created by GameBro Studio
app: Ursina = Ursina(title="MyGame")
window.title = "MyGame"
if os.path.exists(os.path.join("assets", "icon.ico")):
window.icon = os.path.join("assets", "icon.ico")
window.exit_button.visible = False
window.borderless = True
player = FirstPersonController(position=(0, 5, 0))
player.gravity = 1
platform: Entity = Entity(model='cube', color=color.green, scale=(10, 1, 10), position=(0, 0, 0), collider='box')
bro: Sprite = Sprite(customdata={'x': 0, 'y': 0, 'visible': True, 'color': 'white'}, name="bro")
E_bro: Entity = entitify(bro)
def input(key: str) -> None:
if key == "escape":
sys.exit()
def update() -> None:
pass
app.run()
You can write the code yourself, using the gamebro module (see this document.)
Made with ❤️ by Natuworkguy
MIT License. Do what you want, just don’t sell it as your own. Be cool. 😎