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.txtpython gamebro_gui.pyThat’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.pyfile!
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. 😎