How to begin new "game" development?
-
It is a question. How does one begin new "game" development with Retropie as the target system?
I'm hoping to hear answers detailing specific tools and ordered steps to set up an environment for new "game" development.
I'm assuming the process involves selecting some "generic" emulator for Emulation Station at some point. "Generic" is in quotes because I don't know what else to call it. Substitute whatever emulator I should use in place of the word "generic"
"Game" is in quotes because what I really want is a graphical program with all the same IO and simulation resources as a game. It might be an actual game, or a robot controller program which can swap simulated environments for a live camera feed, but function much like a game.
I want a Raspberry Pi into which I can plug any combination of Retropie supported controllers. I want both realtime programmatic access to manipulate the live gaming controller inputs and a configuration profile to condition those inputs, turning them into keystrokes, analog with custom scales, D pad, null, etc... before passing them to
EITHER a game engine running on the Pi
OR to a Rpi USB device port (not host port)
so that the Pi is emulating one or more USB HIDs (Human Interface Devices).In this way, the Retropie can serve as a hardware game controller to a game engine running on a more powerful PC, or to a real hardware console.
Example:
Physical controllers: Logitech MOMO Forcefeedback wheel w/pedals (PC) and
Nintendo Switch Pro Controller (Wired USB-C) and Rpi pico or Arduino supplying any additional or custom input channels.Emulated controllers: Logitech - G923 Racing Wheel and Pedals for PS5, PS4, PC and
Keyboard, Mouse, Serial.Pico or Arduino can supply a hardware switch for selecting whether the Keyboard, Mouse, and Serial devices are enumerated.
Or the switch can be virtual based on whether the device is
plugged into a genuine Playstation console(disable enumeration of additional devices) or
PC(enable enumeration).Pico or Arduino can also supply the USB device port to be enumerated in case the Retropie device does not have a native device port available.
In real life the example configuration is plugged into my power wheelchair which can accept a Playstation controller for driving.
I also build robots as a hobby and would use this as a means of blending autonomous and teleoperated control.I did not think those specific use cases would be of as much general interest as "game" development. So I tried to fit my needs within that framework. Simulation is a real need I have which is handled nicely by game engines.
I am only an amateur developer with very little commercial experience, mostly around Arduino.
Getting Started with ES Development resonated with me and was helpful. But, I don't even know if ES is where I need to start.
A higher level overview describing the domains of each Retropie component would be instructional.Is what I describe possible within the current framework?
My first experience with Retropie was frustrating and ended by basic UI problems like Why the hell doesn't RetroPie come with an On-Screen Keyboard?
The official response fails to acknowledge that every single workaround described REQUIRES A KEYBOARD on another computer. If I don't have a keyboard handy, why is it OK to assume I have a whole other computer with keyboard? I'm back to try again.In the interest of avoiding that nonsense, lets assume I've already heard "If you want it, build it yourself", I've already spent a week reading the documentation(I have), I really do want the thing I asked for, not something else that you find easy, I am willing to put in the effort, I am still confused and asking for guidance. Please.
Pi Model or other hardware: pico, zero W, 1B+, 3B, 400
Power Supply used: Various, measured 5.1v or above under 3A load.
RetroPie Version Used: 4.6
Built From: Pre made SD Image on RetroPie website
USB Devices connected: Teensy 4.1 or Pico with 4 switch gated joystick, arcade buttons, quadrature encoders, linear pots, force feedback motor controllers, I2C status screen 128x64
Controller used: Nintendo Switch Pro Controller, Google Nexus Player Gamepad, Logitech MOMO, Logitech F710, Saitek ST290Pro
Error messages received: None yet
Verbose log: I'm so verbose I bet you wish you were reading log files instead.
Guide used: Lost track of which ones, but followed several different guides
File: Need to know which files to change.
Emulator: Need to know which emulator to use.
Attachment of config files: It would be helpful if the sticky post containing this "Read before posting" included the expected path and name format for config files.
How to replicate the problem: Want all the stuff above, but not know how to get it. -
RetroPie is not a 'gaming' framework, it's just an installation/configuration utility for emulators, that sits on top of a Linux distribution (RasPI OS for RPI, Ubuntu/Debian for other systems).
There's no 'RetroPie game development' SDK. EmulationStation is just a front-end used to organize your games' library and launch emulators. The games are all played by the various emulators installed by RetroPie - RetroArch is most prominent one, but there are others too. Check the Emulators section in the docs.
If you wish to start game development, start with any game engine that's supported by Linux and the Raspberry PI. There are a few such engines supported out of the box in RetroPie, like Solarus, Pico8, AGS, but you can use any engine that's available on the Pi - PyGame, Godot.
You can also check out Wireframe, a dedicated Raspberry Pi video gaming publication. -
@mitu said in How to begin new "game" development?:
RetroPie is not a 'gaming' framework
It is certainly not a major intent of the project, but the RetroPie project has gathered many of the elements needed to make what I want possible. I'm looking through the many different emulators and game engines, but without experience I'm likely to hit many false starts. Looking for any related projects to start from.
Is anyone aware of a project using elements of Retropie to "pretend" that a group of gaming input devices is a different group of gaming input devices? Emulating not the game, but the input hardware.
-
@slomobile
Bliss box products are hardware controller adapters if thats what you mean.
https://bliss-box.net/ -
@slomobile said in How to begin new "game" development?:
Is anyone aware of a project using elements of Retropie to "pretend" that a group of gaming input devices is a different group of gaming input devices? Emulating not the game, but the input hardware.
What elements of RetroPie are you referring to ? We don't include any input translation layer (like RetroArch's RetroPad abstraction). We have some 3rd party GPIO drivers that emulate a joystick (see here), but other than that each program is responsible for it's own input handling.
If you're looking for a software solution akin to the Bliss-Box that @Floob mentioned, you may want something like MoltenGamepad or maybe something based on Linux's UInput module (
python-evdev
can create virtual devices and generate events programatically, see an example in the Xbox360 Python controller). -
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.