4.6 KiB
duploGame
Jeu Pygame pour piloter 1 ou 2 trains LEGO DUPLO avec clavier PC ou contrôleurs arcade/joysticks.
Fonctionnalités
- splash screen au démarrage
- menu de connexion de 1 ou 2 trains
- écran partagé en 2 zones de contrôle indépendantes
- support clavier (2 joueurs) + joysticks (1 joystick par joueur)
- intégration de
duploController(asynchrone) pour piloter les trains
Dépendances
- Python 3.10+
pygameduploController: https://gitea.christophe-scaya.fr/scayac/duploController
Installation
Exemple:
python -m venv .venv
source .venv/bin/activate
pip install pygame
pip install git+https://gitea.christophe-scaya.fr/scayac/duploController.git
Lancement
python main.py
Export Batocera (.pygame)
Un script d'export est disponible pour générer un package .pygame:
python tools/export_batocera_pygame.py --name duploGame --entrypoint main.py
Le fichier est généré dans dist/duploGame.pygame.
Par défaut (--mode folder), l'export génère le dossier dist/duploGame/ au format
style Retrotrivia avec:
dist/duploGame/duploGame.pygame(script lanceur)- les fichiers du jeu et assets à côté
vendor/pour les modules Python embarqués
Ce format est généralement le plus compatible avec Batocera.
Le mode single-file reste disponible, mais moins recommandé:
python tools/export_batocera_pygame.py --mode single-file
Dans ce mode, l'export génère dist/duploGame.pygame et un dossier payload dist/duploGame/.
Par défaut, le script embarque les modules Python duplo_controller, bleak et dbus_fast dans vendor/.
Options utiles:
python tools/export_batocera_pygame.py \
--project-dir . \
--output-dir dist \
--name duploGame \
--entrypoint main.py \
--mode folder \
--vendor-module duplo_controller \
--vendor-module bleak \
--vendor-module dbus_fast
Si un module vendor n'est pas présent sur la machine de build:
python tools/export_batocera_pygame.py --allow-missing-vendor
Ensuite, copier vers Batocera:
- mode
folder: copier le dossierdist/duploGame/dans/userdata/roms/pygame - mode
single-file: copierdist/duploGame.pygameetdist/duploGame/dans/userdata/roms/pygame
Contrôles
Menu
UP/DOWN(ou joystick) : choisir 1 ou 2 joueursACTION 1joueur 1 : connecter/déconnecter train 1ACTION 1joueur 2 : connecter/déconnecter train 2 (mode 2 joueurs)STARTjoueur 1 : lancer le mode contrôle (si trains requis connectés)SELECTjoueur 1 (ou toucheC) : ouvrir la configuration joystickACTION 2joueur 1 (ou toucheK) : ouvrir la configuration clavier
Configuration joystick
LEFT/RIGHT: sélectionner joueur 1 ou 2UP/DOWN: sélectionner la fonction à mapper (UP,DOWN,LEFT,RIGHT,A1..A6,SELECT,START)ACTION 1: entrer en mode capture, puis appuyer sur le bouton physique à associerSELECT: reset mapping par défaut du joueur sélectionnéSTART: retour menu
Les mappings sont sauvegardés automatiquement dans joystick_mappings.json à la racine du projet,
et rechargés au prochain lancement du jeu.
Important borne arcade: si votre encodeur expose le stick en boutons (et non en axes/hat),
mappez explicitement UP, DOWN, LEFT, RIGHT dans cet écran.
Configuration clavier
LEFT/RIGHT: sélectionner joueur 1 ou 2UP/DOWN: sélectionner la fonction à mapper (UP,DOWN,LEFT,RIGHT,A1..A6,SELECT,START)ACTION 1: entrer en mode capture, puis appuyer sur la touche clavier à associerSELECT: reset mapping clavier par défaut du joueur sélectionnéSTART: retour menu
Les mappings clavier sont sauvegardés automatiquement dans keyboard_mappings.json à la racine du projet,
et rechargés au prochain lancement du jeu.
En jeu
UP/DOWN: accélérer / freinerLEFT/RIGHT: changer la couleur de la lumièreACTION 1..5: sons du trainACTION 6ouSELECT: arrêt immédiatSTART: retour menuESC: quitter
Mappings clavier
-
Joueur 1:
- Directions:
W/Z,S,A/Q,D - Actions 1..6:
1 2 3 4 5 6 - Start:
Entrée - Select:
Backspace
- Directions:
-
Joueur 2:
- Directions:
↑ ↓ ← → - Actions 1..6:
U I O J K L - Start:
Shift droit - Select:
Ctrl droit
- Directions:
Mappings joystick arcade (par défaut)
- Directions: D-Pad (hat) ou axes gauche X/Y
- Actions 1..6: boutons
0..5 - Select: bouton
6 - Start: bouton
7
Ces mappings sont modifiables à chaud via l'écran de configuration joystick.
Si
duploControllern'est pas installé, le jeu démarre en mode simulation (sans contrôle BLE réel).