Files
Ange-Marie MAURIN - A2M Systèmes 98c778aa28 feat(input): entrees du joueur captees par l'adaptateur (ADR 0011)
L'adaptateur traduit clavier et manette en actions SEQUA (PlayerInput) ;
le Core ne recoit et n'enregistre que ces actions, le rejeu reste exact.

- SEQUA 3D : PlayerInput, poll_input(), capacite player_input
  (interface des adaptateurs en version 2)
- protocole Core - rendu 0.2 : render/input, envoye quand les actions
  changent ; entree remise au neutre si le rendu disparait
- Godot : InputMap du projet (ZQSD, fleches, espace, manette) ou script
  SequaInput.sequa_player_input() pour une correspondance avancee ;
  entree neutre sans focus ; exemple examples/sequa_input.gd
- adaptateur debug : entrees scriptees par numero d'image
- Studio : ligne "Entrees du joueur" du panneau Rendu
2026-11-07 20:48:26 +01:00
..

Adaptateur SEQUA 3D « de débogage »

Deuxième adaptateur de three_d::I3DEngineAdapter (docs §7.1) : un outil de débogage et de mode sans interface, pas un rendu produit. Il rastérise la scène en vue orthographique de côté (pur CPU, sans GPU ni moteur) et écrit le résultat en images ou en vidéo à faible cadence.

Usage

sequa::debug::DebugEngineAdapter adapter(
    std::make_unique<sequa::debug::PpmSequenceSink>("./frames"));
adapter.start(config);        // headless uniquement
adapter.apply(delta);         // même contrat que les autres adaptateurs
adapter.render_frame(request); // dessine et écrit une image ; adapter.last_image() la lit
  • sequa::debug::PpmSequenceSink : une image par fichier frame_NNNNNN.ppm (binaire P6).
  • sequa::debug::FrameSink : interface pour d'autres destinations.

Entrées scriptées

Sans clavier ni fenêtre, l'adaptateur « joue » un script d'entrées par numéro d'image (ADR 0011) : le chemin complet des entrées (adaptateur → rendu → Core) se teste sans moteur. Réglage de --adapter-options (ou --render-options du Core) :

{ "input": [{ "frame": 20, "moveX": 32767 }, { "frame": 60, "buttons": 1, "moveX": 32767 }, { "frame": 100 }] }

À partir de l'image frame, l'entrée reste active jusqu'à la suivante ; champs absents = 0 ({ "frame": 100 } relâche tout). Sans script, l'adaptateur ne déclare pas de capture d'entrées.

ffmpeg facultatif

sequa::debug::FfmpegSink lance ffmpeg en sous-processus (_popen/popen) pour écrire une vidéo H.264 (libx264, yuv420p). C'est un outil externe FACULTATIF, jamais lié : le binaire ffmpeg (GPL) doit exister dans le PATH ou être passé explicitement au constructeur ; sans lui, write() renvoie engine_failure. Aucune autre dépendance : bibliothèque standard seulement.

Vues

  • Orthographique de côté, regard vers −Z : X vers la droite, Y vers le haut, physiquement centrée sur la caméra.
  • La rotation des objets est ignorée (formes alignées aux axes) ; les couleurs SEQUA linéaires sont converties en sRGB 8 bits.
  • Sans anticrénelage, dessin déterministe (du plus loin au plus proche).

Tests

sequa_debug_adapter_tests (doctest), construits avec SEQUA_BUILD_TESTS=ON. ffmpeg n'est pas testé (outil facultatif absent de la machine, la plupart du temps).

Licence

MPL 2.0 (voir en tête de chaque fichier).