Files
SEQUA-Engine/core
Ange-Marie MAURIN - A2M Systèmes 142e563fcc feat(core): serveur WebSocket du protocole Studio - Core
sequa::core_server : ProtocolSession (poignée de main hello -> welcome/error, JSON provisoire identique à Studio, même règle de compatibilité) séparée du transport CoreServer (IXWebSocket 12.1.0, écoute 127.0.0.1:9100). Exécutable sequa-core. Vérification exclusive du port sous Windows (IXWebSocket active SO_REUSEADDR). Sanitizers appliqués à tout le build (ASan MSVC exige des dépendances instrumentées). ADR 0005. 30 tests (Debug, Release, ASan), dont 4 sur vrais sockets.
2026-11-06 21:23:37 +01:00
..

SEQUA Core

SEQUA Engine en bref

SEQUA : Simulate Environments, Quantify Uncertainty, Adapt. SEQUA Engine est un environnement de création et d'exécution de mondes virtuels, d'abord pour le jeu vidéo, où l'auteur dirige un monde par l'intention, le ressenti et les règles plutôt que par des paramètres. Il est composé de quatre couches : Studio (outil de création web), Core (source de vérité), SEQUA 3D (seule porte vers un moteur 3D) et des moteurs 3D interchangeables (Godot, puis Unreal, puis un moteur maison).

Référence : docs/SEQUA_Engine_resume_complet_v2.md

Rôle de Core dans l'engine

Core est la source de vérité du projet. Il possède :

  • le format de projet et la scène de référence (§5.1) ;
  • la représentation du monde en quatre niveaux, de L0 structurel à L3 génératif (§5.2) ;
  • la simulation déterministe à pas fixe, l'enregistrement des entrées et le rejeu bit à bit (§5.3) ;
  • la couche d'intention ;
  • l'orchestrateur de rendu adaptatif (§5.4) et la mesure de la confiance (§5.5).

Core ne connaît aucun moteur 3D : il ne dépend que du contrat de données (schema/). Les modèles neuronaux et génératifs sont exclus de la boucle de simulation.

État

Phase 0. Simulation déterministe, enregistrement et rejeu en place (include/sequa/core/sim/) :

Élément Fichier Rôle
Fixed fixed.hpp Virgule fixe Q16.16 : calcul entier, identique bit à bit partout
Pcg32 rng.hpp Générateur aléatoire SEQUA à graine explicite (PCG32)
FixedStepClock clock.hpp Temps réel vers pas fixes, calcul entier exact, retard plafonné
Simulation simulation.hpp Pas fixe, entrées quantifiées, empreinte FNV-1a de l'état complet
Recording, SessionRecorder, replay replay.hpp Enregistrement des entrées horodatées, format binaire versionné, rejeu avec d'autres réglages, premier tick divergent

SIMULÉ / PROVISOIRE : le monde est un micro-mode 2D de démonstration (un joueur, un sol, des pièces, réglages de ressenti) qui sert à éprouver le déterminisme avant la vraie scène L0. Il sera remplacé.

Le test « empreinte de référence multiplateforme » fige l'empreinte d'une session d'une minute : toute plateforme doit la retrouver exactement (§10.1, §16).

Serveur WebSocket (protocole Studio - Core)

Bibliothèque sequa::core_server (include/sequa/core/server/) et exécutable sequa-core (ADR 0005) :

  • ProtocolSession : poignée de main hello -> welcome ou error + fermeture, en JSON provisoire identique à studio/src/protocol/messages.ts (même règle de compatibilité de version). Pure, testée sans réseau.
  • CoreServer : transport IXWebSocket, une session par connexion, écoute locale (127.0.0.1:9100) par défaut, refus explicite si le port est déjà pris.
  • Pas encore de messages métier : après la poignée de main, tout message reçoit not-implemented.
.\build\windows-msvc-debug\core\sequa-core.exe --port 9100   # Ctrl+C pour arrêter
.\scripts\studio.ps1 -Core ws://127.0.0.1:9100                # puis « Connecter » dans Studio

Construire et tester

Depuis la racine du dépôt :

.\scripts\build.ps1                            # Windows, preset windows-msvc-debug
.\scripts\build.ps1 -Preset windows-msvc-asan  # AddressSanitizer
.\scripts\check.ps1                            # tous les presets Windows + Studio
./scripts/build.sh                             # Linux / macOS

Règles de déterminisme appliquées à la compilation (§10.1) : pas de fast-math, pas de contraction multiplication-addition (/fp:precise sous MSVC, -ffp-contract=off ailleurs).

Licences

  • SEQUA Core : MPL 2.0.
  • Dépendances :
Dépendance Usage Licence
doctest 2.4.12 Tests uniquement MIT
IXWebSocket 12.1.0 Serveur WebSocket (sequa::core_server) BSD-3-Clause
nlohmann/json 3.12.0 Messages JSON provisoires (sequa::core_server) MIT

Politique (§10.2) : le cœur n'utilise que des dépendances permissives (MIT, BSD, Apache 2.0, zlib).