Skip to content

Executables

MasterLaplace edited this page Jul 14, 2026 · 5 revisions

Executables

lpl-server — Authoritative Server

Source: apps/server/main.cpp Build: xmake build lpl-server

Serveur autoritaire utilisant le Core engine :

  • Crée une instance Core (Network initialisé automatiquement)
  • Spawne 50 NPCs aléatoires (IDs 1–50) au démarrage
  • Enregistre 7 systèmes ECS :
    • PreSwap : NetworkReceive → Session → InputProcessing → Movement → Physics
    • PostSwap : Broadcast → ServerMonitor
  • core.run(true) — boucle fixe 60Hz en mode threadé (parallélisme intra-stage)
  • Ctrl+C propre via sigaction (sans SA_RESTART)

Network : essaie le driver kernel (/dev/lpl0) en premier, fallback sur socket UDP si indisponible.

Usage:

xmake build lpl-server
xmake run lpl-server

lpl-benchmark — Micro-benchmark Suite

Source: apps/benchmark/main.cpp (uses the lpl-bench harness) Build: xmake build lpl-benchmark

CPU micro-benchmark suite. Each case reports mean ± relative stddev, min, p99 and sample count. Covers:

  • Allocators (arena / pool / libc malloc)
  • CORDIC sin (Fixed32) vs std::sin, with accuracy vs libm
  • EntityRegistry create/destroy, WorldPartition build+insert
  • Physics scalability sweep (1k → 20k entities, real-time budget classification)
  • FlatAtomicHashMap (insert / get / forEach / parallel / churn)
  • SoA vs AoS layout, SparseSet vs linear scan, N² vs broad-phase collision

See Performance Results for the latest numbers.

Usage:

xmake build lpl-benchmark
./build/linux/x86_64/release/lpl-benchmark [numEntities] [numFrames]

lpl-client — Desktop Client (Vulkan)

Source: apps/client/main.cpp Build: xmake build lpl-client Dependencies: Vulkan SDK, ImGui (auto-fetched via xmake)

Client desktop utilisant le Core engine + Vulkan renderer :

  • Crée Core → initClientNetwork(serverIp, serverPort) (envoie MSG_CONNECT)
  • Init BCI via source factory (serial/synthetic/lsl/csv avec fallback)
  • Enregistre les systèmes ECS :
    • PreSwap : NetworkReceive → Welcome → StateReconciliation → BCI → LocalInput → Spawn → Movement → Physics → InputSend
    • PostSwap : Camera → Render
  • core.runVariableDt() — boucle avec delta time variable
  • Client-side prediction via InputManager::computeMovementVelocity()
  • Rendu Vulkan avec ImGui overlay

Controls

Key Action
W/A/S/D Movement relative to camera
Arrow keys Camera rotation
Escape Quit

Usage:

xmake build lpl-client
xmake run lpl-client

← Implementation Status | Next: Roadmap →

Clone this wiki locally