ChatGPT prompt - Fabio Coelho Ribeiro

What open source and free game engines are there that are compatible with a 19" monitor and a microcontroller to store the games ?

If you want to go beyond MakeCode Arcade and use a microcontroller + 19″ monitor with multiple games, you generally need a different approach — because MakeCode Arcade only targets small SPI displays, not HDMI/VGA. But there are game engines and frameworks that could work for larger displays (HDMI/VGA) and that are free/open-source — and some that might run on more capable embedded hardware.

Here's a breakdown of the kinds of engines available and where they fit relative to your project goals:

________________________________________

🎯 Engines Suitable for HDMI/VGA and Larger Screens

These engines are designed to run on full operating systems (Linux, Windows, etc.) — which means they won't run directly on tiny microcontrollers like SAMD51 or RP2040 without an OS and graphics driver. But they do work well on small embedded boards that can output HDMI/VGA (i.e., Linux-capable systems like Raspberry Pi or similar).

Godot Engine

• Full-featured, free, open-source game engine.

• Supports 2D and 3D games.

• Works on Linux, Windows, macOS — including Raspberry Pi and similar boards.

• Output via HDMI/VGA through the OS is straightforward.

• Great for arcade-style games with menus and multiple built-in titles.

Phaser

• HTML5 game framework (JavaScript).

• Works inside web browsers — great for a menu that selects games stored on SD/USB and renders them fullscreen on a 19″ display. This is similar to how you already use MakeCode in a browser.

TIC-80 (Fantasy Console)

• Free and open source “fantasy console” environment.

• Has its own small game loader and cartridge format.

• Can be compiled for Linux or embedded Linux systems.

• Has built-in editors for code, sprites, sound — good for retro style games.

________________________________________

🧠 Lightweight Game Libraries & Engines

If you do want to go lower-level or build custom software (rather than use a full engine):

Raylib

• Not a game engine per se, but a lightweight graphics/game library for C/C++.

• Easy to render graphics, handle input, and make games on Linux systems with HDMI/VGA display.

Orx Engine

• Lightweight open-source 2D game engine written in C.

• Good balance of features and low complexity.

• Runs on Linux and other desktops — use it on a Linux-capable board driving a 19″ screen.

Phaser/HTML5 Framework

• JavaScript based, works in any modern browser — ideal for running on lightweight embedded Linux systems and easy to switch between games without recompiling.

________________________________________

⚡ What Won't Run Directly on RP2040/SAMD51

Generally, engines that assume:

✔️ an operating system

✔️ graphics driver + GPU

✔️ HDMI/VGA support

…won't run directly on tiny microcontrollers like RP2040 or SAMD51 — because they lack:

• a GPU or video controller

• memory for framebuffers

• a graphics stack like Linux/SDL/OpenGL

So using direct HDMI/VGA output with a microcontroller and a full engine like Godot or Phaser isn't realistic without a Linux-capable processor (like a Raspberry Pi or similar).

________________________________________

💡 How You Could Make It Work With Multiple Games + a Big Screen

Here are a few possible architectures:

________________________________________

🟢 Best Practical — Embedded Linux (e.g., Pi) + Engine

• Use Godot, Phaser in browser, or TIC-80.

• Store games on SD/USB.

• Create a menu launcher to pick games.

• Display output to 19″ screen via HDMI/VGA.

• Controls via USB encoder.

This is open-source, free, and flexible.

________________________________________

🟡 Semi-Embedded — Microcontroller + External Video Adapter + Custom Engine

• Some hobby projects generate VGA from MCU (e.g., uChip simple VGA console uses SAMD21 for VGA with SD card games).

• But games must be written for that specific engine, and output will be limited in resolution/color.

• You'd build your own game loader and software.

📌 This approach is very custom and likely won't support high-resolution 19″ display.

________________________________________

🔵 RPC/Offload Approach

• Keep RP2040/SAMD51 as a controller (reading buttons, reading SD/USB for game logic).

• Have a separate graphics processor (like a small Linux board) handle video and run the game engine.

• They communicate over USB/UART.

This splits roles cleanly — but still means the MCU doesn't run the game engine itself.

________________________________________

🧩 Example Game Engine Fit Chart

Engine / Framework Requires OS HDMI/VGA Output Runs on MCU Alone
Godot ✔️Linux/etc ✔️
Phaser (HTML5) Browser ✔️
TIC-80 ✔️Linux/etc ✔️
Raylib ✔️Linux/etc ✔️
Orx Engine ✔️Linux/etc ✔️
uChip VGA console engine ✔️(VGA) ✔️(bare metal)

________________________________________

🧠 Summary & Recommendation

If you must use a 19″ monitor and want multiple games + easy development without lots of custom hardware video work:

✅ Choose an engine that runs on Linux or similar

✅ Drive the screen with HDMI/VGA via OS support

✅ Store games on SD/USB & build a launcher

Good choices are:

• Godot — robust 2D/3D engine for standalone games.

• Phaser — runs in a browser, easy web-based games.

• TIC-80 — small retro fantasy console environment.

These let you output to large screens and have multiple games — something that's not feasible directly on RP2040/SAMD51 without complex custom video hardware.

________________________________________

If you want, I can help you design:

👉 hardware options (boards that support HDMI/VGA)

👉 a game menu system

👉 how to structure your games and launcher

Just tell me whether you want standalone apps (like Godot games) or browser-based games (Phaser/HTML5).

Engines suitable for HDMI/VGA and Larger Screens and 2d retro games.

Great — if your goal is 2D retro games on a 19" HDMI/VGA screen, here are the best open-source, free engines that are perfect for retro arcade style.

________________________________________

✅ Best Engines for 2D Retro Games on HDMI/VGA

These work well on Linux-capable boards (Raspberry Pi, Odroid, Rockchip boards, etc.), not on tiny microcontrollers.

________________________________________

🎮 1) Godot Engine (2D)

Best for: full arcade games, smooth performance, easy export

✔ Pros

• Fully open-source and free

• Great 2D tools (tilemaps, animations, shaders)

• Export to Linux/Windows/macOS

• Supports full screen 19" monitors

• Built-in scene system makes game dev fast

✔ Perfect for

• arcade cabinets

• retro platformers

• shoot 'em ups

• menu + game launcher systems

________________________________________

🌐 2) Phaser (HTML5)

Best for: browser-based arcade machine

✔ Pros

• Runs in any browser

• No installation required on the Pi

• Easy to build multiple games and launch them from a menu

• Great for pixel art retro games

✔ Perfect for

• multiple games stored on USB/SD

• easy game swapping

• running on Chromium on Raspberry Pi

________________________________________

🎛️ 3) TIC-80 (Fantasy Console)

Best for: retro “cartridge” style games

✔ Pros

• Built for retro style

• Built-in editor (code, sprites, map, music)

• Simple cartridge system

• Great for small arcade games

• Open-source

✔ Perfect for

• game jam style projects

• retro arcade collections

• easy to store games on SD/USB

________________________________________

🧱 4) Love2D

Best for: fast Lua retro games

✔ Pros

• Very lightweight

• Runs on Linux easily

• Great for retro pixel art games

• Fast development

✔ Perfect for

• fast prototyping

• custom arcade libraries

• 2D retro style games

________________________________________

🎯 5) Raylib (C/C++)

Best for: custom engine style, lightweight

✔ Pros

• Very lightweight and fast

• Great for retro pixel art

• Supports Linux + HDMI output

• Simple API

✔ Perfect for

• building your own mini engine

• performance critical games

• custom hardware setups

________________________________________

🕹️ 6) Pico-8 (not fully open-source)

Just mentioning for completeness:

• Popular retro fantasy console

• Not open-source, but very retro-friendly

• Great for arcade games

________________________________________

✅ Recommended Setup for 19" Arcade Machine

✔ Hardware

• Raspberry Pi 4 or Zero 2 W

• 19" HDMI monitor (or VGA via adapter)

• USB arcade controller encoder

• SD card for OS + games

✔ Software

• Godot or Phaser or TIC-80

• Use a launcher menu to pick games

________________________________________

🧠 What's the Best Choice for You?

If you want high-quality retro games:

➡️ Godot

If you want easy browser-based game swapping:

➡️ Phaser

If you want old-school fantasy console style:

➡️ TIC-80

________________________________________

🏁 Next Step

Tell me which of these you prefer:

1. Godot

2. Phaser

3. TIC-80

4. Love2D

5. Raylib

And I'll give you a complete step-by-step plan to build your arcade machine with:

• game menu

• multiple games

• USB/SD game storage

• controls + sound

• booting directly into the arcade menu

Which one do you want to use?

Lets say i am making an arcade machine using a Raspberry Pi, a 19" monitor and a game engine like godot to store games and play them with external controls (a joystick and buttons). I know the Raspberry has its own startup interface, can i somehow code it so that at startup it shows a menu i created for the games ?

Yes — you can absolutely make your Raspberry Pi boot straight into your own custom arcade menu instead of showing the Raspberry Pi OS desktop. This is a common setup for arcade cabinets, and it works very well with Godot.

Here are the main ways to do it, from easiest to most “arcade-like”.

________________________________________

✅ Option 1 (Best for most people): Boot into Godot directly

You can configure the Pi to automatically start your Godot game launcher on boot.

How it works

1. Install Raspberry Pi OS (Lite or Desktop)

2. Configure auto-login

3. Run your Godot launcher as a startup app

Steps

1. Install Godot (exported Linux build)

You export your Godot project as a Linux executable.

2. Set Raspberry Pi to auto-login

Go to:

Raspberry Pi Menu → Preferences → Raspberry Pi Configuration → System → Auto Login

3. Run your launcher on startup

Edit the autostart file:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

Add this line at the end:

@/home/pi/your_game_launcher.x86_64

(Replace with your file path and name.)

Now your Pi will boot directly into your game menu.

________________________________________

✅ Option 2: Use “Kiosk Mode” (no desktop shown)

If you want the Pi to boot straight to fullscreen without showing the desktop at all:

Steps:

1. Disable desktop GUI

2. Use a minimal startup script to launch your menu

Disable GUI:

sudo raspi-config

Go to:

System Options → Boot / Auto Login → Console Autologin

Then create a startup script:

nano /home/pi/start.sh

Add:

#!/bin/bash

cd /home/pi/yourgamefolder

./your_game_launcher.x86_64

Make it executable:

chmod +x /home/pi/start.sh

Then add this line to:

sudo nano /etc/rc.local

Before exit 0, add:

/home/pi/start.sh &

Now your Pi boots straight into your game launcher without desktop.

________________________________________

✅ Option 3: Use a dedicated arcade OS (RetroPie / Batocera)

If you want an arcade setup that already has menus, controller support, and game management:

• RetroPie

• Batocera

• Recalbox

These are built for arcade cabinets and already boot into a menu.

But if you want a custom menu, option 1 or 2 is best.

________________________________________

🎮 What about controls (joystick/buttons)?

If you use a USB encoder like Zero Delay, Xin-Mo, or IPAC, the buttons show up like a keyboard.

Godot will read them normally via input actions.

________________________________________

⚠️ Important Note: Godot on Raspberry Pi

• Use Godot 4 only if your Pi model supports it smoothly.

• Godot 3.5 is more stable on older Pi models.

• If you want hardware acceleration, use Godot 4 + Vulkan support (Pi 4+).

________________________________________

✅ Summary

✔ Yes, you can boot directly into your own menu

✔ Use autostart or kiosk mode

✔ Your arcade controls will work like keyboard inputs

✔ The Pi's desktop can be completely hidden

________________________________________

If you want, I can also provide:

✅ a full step-by-step tutorial

✅ example Godot project for a simple arcade menu

✅ advice on best Pi model, encoder, and monitor setup

Just tell me what Raspberry Pi model you're using and whether you want desktop or console boot.

Lets say i want to modify something in the code or the files in the Raspberry, can i come back to the desktop ?

Yes — you can absolutely come back to the desktop (or a console) to modify files even if your Raspberry Pi is set up to boot directly into your arcade menu.

There are three common ways to do this:

________________________________________

✅ Option 1: Switch to the desktop temporarily (if you're in kiosk mode)

If your Pi is running the GUI and your game is full-screen, you can usually exit the game and return to the desktop.

Common methods

✔ Press Ctrl + Alt + F1 (or F2, F3, etc.)

This switches to a text console.

✔ Press Ctrl + Alt + F7

This usually returns you to the GUI desktop.

✔ Press Alt + F4

This closes the current window (if your game allows it).

________________________________________

✅ Option 2: Use SSH from another computer

This is the easiest and safest method.

Steps:

1. Enable SSH on the Pi

2. sudo raspi-config

Go to:

Interface Options → SSH → Enable

3. Find your Pi's IP address:

4. hostname -I

5. Connect from your PC:

o Windows: use PuTTY

o Mac/Linux: use terminal:

o ssh pi@<IP_ADDRESS>

Now you can edit files, move files, run scripts, etc.

________________________________________

✅ Option 3: Add a “developer mode” button

If you want to stay in kiosk mode but still access the desktop sometimes, you can add a hidden shortcut.

Example:

Add a key combination like:

Press F12 to exit kiosk and return to desktop.

You can implement this in your Godot game, or use a script that watches for a key press and kills the launcher.

________________________________________

✅ Option 4: Boot into desktop temporarily (manual)

If you want to temporarily disable auto-start:

1. Open terminal:

2. sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

3. Comment out the line that starts your game:

# @/home/pi/your_game_launcher.x86_64

4. Reboot:

5. sudo reboot

________________________________________

🔥 Best Practice (Recommended)

Use SSH for development, because:

• You can edit files without touching the arcade machine

• You won't break the boot process

• You can restart the launcher remotely

________________________________________

Quick question:

Do you want the Pi to always boot into the arcade menu, or do you want a hidden way to access the desktop without changing settings each time?

Using a Raspberry Pi, if i add external buttons and a joystick, can i code the Raspberry so it reads it is a specific keyboard button ?

Yes — you can absolutely do that. With a Raspberry Pi, you can connect external buttons and a joystick, and then program it so that when you press a button or move the joystick, the Pi acts like a keyboard and sends a specific key press (like “A”, “Enter”, “Space”, etc.).

There are two main ways to do this:

________________________________________

✅ Option 1: Make the Pi act like a USB keyboard

This is the cleanest way if you want the Pi to emulate a keyboard for another device (like a PC, game console, etc.).

How it works

• Your Pi sends USB HID keyboard signals to a host device.

• The host sees the Pi as a real keyboard.

Best for

• When you want the Pi to control a PC or other computer

• When the Pi is acting as a controller

Requirements

• A Raspberry Pi model that supports USB gadget mode, like:

o Pi Zero / Zero 2 W

o Pi 4

• A USB cable connected from the Pi to the host computer

Example Setup

You can program it so:

• Button 1 → sends "A"

• Button 2 → sends "B"

• Joystick up → sends "W"

• Joystick down → sends "S"

________________________________________

✅ Option 2: Read buttons directly and send key presses on the Pi

If you only need the Pi to run software locally (games, scripts, etc.), you can just read GPIO inputs and translate them to key presses inside the Pi.

How it works

• Buttons connect to GPIO pins

• Python detects presses

• Python triggers a key press in a game or app

Best for

• When the Pi is the device running the program

• No need to connect to a PC

Example

Using Python libraries like:

• gpiozero

• pynput

________________________________________

⚙️ Hardware Needed

For buttons:

• Buttons wired to GPIO pins

• Resistors (or use internal pull-up/pull-down)

For joystick:

• A 2-axis joystick outputs:

o X

o Y

o Button (optional)

________________________________________

🔁 So which method do you want?

✅ Do you want the Pi to act like a keyboard for another device?

Or

✅ Do you just want to control a game/app running on the Pi itself?

If you tell me which one you need, I can give you the exact wiring + code.