Files
Ange-Marie MAURIN - A2M Systèmes ab219ad611 feat(core): simulation déterministe, enregistrement et rejeu
Virgule fixe Q16.16, générateur PCG32 à graine explicite, horloge à pas fixe exacte, simulation d'un micro-mode de démonstration (marqué SIMULÉ), empreinte FNV-1a de l'état, enregistrement binaire versionné des entrées, rejeu avec d'autres réglages de ressenti et détection du premier tick divergent. Empreinte de référence multiplateforme figée. 22 tests (Debug, Release, ASan).
2026-11-06 19:50:56 +01:00

43 lines
1.1 KiB
C++

// SPDX-License-Identifier: MPL-2.0
// Session de test scriptée : un « joueur » qui court, change de direction et saute.
#pragma once
#include "sequa/core/sim/input.hpp"
#include "sequa/core/sim/replay.hpp"
#include <cstdint>
namespace sequa::core::sim::testing {
[[nodiscard]] inline InputFrame scripted_input(Tick tick)
{
InputFrame input = neutral_input(tick);
const Tick phase = tick % 240;
if (phase < 100) {
input.move_x = 32767;
} else if (phase < 140) {
input.move_x = 0;
} else {
input.move_x = -20000;
}
if (tick % 45 < 3) {
input.buttons = button::jump;
}
return input;
}
[[nodiscard]] inline Recording record_scripted_session(std::uint64_t seed, Tick ticks,
const FeelParams& feel = FeelParams{})
{
SimConfig config;
config.seed = seed;
config.feel = feel;
SessionRecorder recorder(config);
for (Tick tick = 0; tick < ticks; ++tick) {
recorder.step(scripted_input(tick));
}
return recorder.recording();
}
} // namespace sequa::core::sim::testing