feat: add get_tensor on GameState more explicit for training than the minimal get_vec()

This commit is contained in:
Henri Bourcereau 2026-03-07 12:56:03 +01:00
parent 145ab7dcda
commit aa7f5fe42a
4 changed files with 108 additions and 1000 deletions

View file

@ -83,8 +83,8 @@ pub mod ffi {
/// Both players' scores.
fn get_players_scores(self: &TricTracEngine) -> PlayerScores;
/// 36-element state vector (i8). Mirrored for player_idx == 1.
fn get_tensor(self: &TricTracEngine, player_idx: u64) -> Vec<i8>;
/// 217-element state tensor (f32), normalized to [0,1]. Mirrored for player_idx == 1.
fn get_tensor(self: &TricTracEngine, player_idx: u64) -> Vec<f32>;
/// Human-readable state description for `player_idx`.
fn get_observation_string(self: &TricTracEngine, player_idx: u64) -> String;
@ -180,11 +180,11 @@ impl TricTracEngine {
.unwrap_or(-1)
}
fn get_tensor(&self, player_idx: u64) -> Vec<i8> {
fn get_tensor(&self, player_idx: u64) -> Vec<f32> {
if player_idx == 0 {
self.game_state.to_vec()
self.game_state.to_tensor()
} else {
self.game_state.mirror().to_vec()
self.game_state.mirror().to_tensor()
}
}