You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

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

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 dossier dist/duploGame/ dans /userdata/roms/pygame
  • mode single-file: copier dist/duploGame.pygame et dist/duploGame/ dans /userdata/roms/pygame

Contrôles

Menu

  • UP / DOWN (ou joystick) : choisir 1 ou 2 joueurs
  • ACTION 1 joueur 1 : connecter/déconnecter train 1
  • ACTION 1 joueur 2 : connecter/déconnecter train 2 (mode 2 joueurs)
  • START joueur 1 : lancer le mode contrôle (si trains requis connectés)
  • SELECT joueur 1 (ou touche C) : ouvrir la configuration joystick
  • ACTION 2 joueur 1 (ou touche K) : ouvrir la configuration clavier

Configuration joystick

  • LEFT/RIGHT : sélectionner joueur 1 ou 2
  • UP/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 à associer
  • SELECT : 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 2
  • UP/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 à associer
  • SELECT : 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 / freiner
  • LEFT / RIGHT : changer la couleur de la lumière
  • ACTION 1..5 : sons du train
  • ACTION 6 ou SELECT : arrêt immédiat
  • START : retour menu
  • ESC : 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
  • Joueur 2:

    • Directions: ↑ ↓ ← →
    • Actions 1..6: U I O J K L
    • Start: Shift droit
    • Select: Ctrl droit

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 duploController n'est pas installé, le jeu démarre en mode simulation (sans contrôle BLE réel).