Spaces:
Sleeping
Sleeping
| import engine_rust | |
| import numpy as np | |
| def analyze_obs(): | |
| db_path = "data/cards_compiled.json" | |
| with open(db_path, "r", encoding="utf-8") as f: | |
| db_json = f.read() | |
| db = engine_rust.PyCardDatabase(db_json) | |
| state = engine_rust.PyGameState(db) | |
| # Initialize with a standard deck (ids ~1-60) | |
| # Energy ids ~38-40 | |
| p0_deck = [1] * 48 + [101] * 12 | |
| p1_deck = [2] * 48 + [102] * 12 | |
| state.initialize_game(p0_deck, p1_deck, [38] * 40, [38] * 40, [], []) | |
| obs = state.to_alphazero_tensor() | |
| print(f"Observation Size: {len(obs)}") | |
| print(f"Min: {np.min(obs)}") | |
| print(f"Max: {np.max(obs)}") | |
| print(f"Unique values: {len(np.unique(obs))}") | |
| # Check if int16 can hold it (with scale/offset if needed) | |
| # Range is -32768 to 32767 | |
| can_fit_int16 = (np.min(obs) >= -32768) and (np.max(obs) <= 32767) | |
| print(f"Can fit in int16 without scaling? {can_fit_int16}") | |
| # If not, how many unique values actually exist? | |
| # Usually game states are just IDs, counts, flags. | |
| # Large numbers are likely Score/Stats which might need float or scaling. | |
| if __name__ == "__main__": | |
| analyze_obs() | |