質問: *イタリックテキスト*パックマンの敵の位置の値やインベーダーゲームの敵の位置などの、ゲーム内の数値を調べることはできませんか? 公式HPやgithubのソースコードなどいろいろ調べてみたものの分かりませんでした。 追記 https://qiita.com/keisuke-nakata/items/141fc53f419b102d942c 今調べていたところ上記のHPに 環境名に ram がついていると、画面のピクセル出力ではなく、内部RAMの状態を観測値として得る設定になります。 ram: 内部RAMの状態を観測値 observation として返答する <無印>: 画面のピクセル出力を観測値 observation として返答する とありました。環境目にramが付いている方でobservationの値を見てみればいいんですかね...?
回答: Atari のゲームはエミュレータで実行しています。 環境変数名に ram をつけて取得できる状態は、ゲームを実行している際の RAM (メモリ) の値です。 結論をいうと、敵の位置等はゲームのプログラム上は保持しているわけですが、エミュレータはゲームのバイナリを実行しているだけなので、知りようがありません。 画面上の数字と RAM の値を比べながら、どの領域がどの変数に該当するのか頑張ってリバースエンジニアリングできないこともないと思いますが (ゲームのチートとかによく使われる)、おすすめはしません。 ``` import gym env = gym.make('AirRaid-ram-v0') env.reset() for _ in range(10): obs, reward, done, info = env.step(env.action_space.sample()) # take a random action print(obs.shape, obs.dtype) ``` ``` (128,) uint8 # RAM の状態 ```