in rts/game_MC/python_wrapper.cc [67:93]
EntryInfo EntryFunc(const std::string &key) {
auto *mm = GameState::get_mm(key);
if (mm == nullptr) return EntryInfo();
std::string type_name = mm->type();
const int mapx = _context->options().map_size_x;
const int mapy = _context->options().map_size_y;
const int max_unit_cmd = _context->options().max_unit_cmd;
const int reduced_size = MCExtractor::Size() * 5 * 5;
if (key == "s") return EntryInfo(key, type_name, { (int)MCExtractor::Size() * _num_frames_in_state, _context->options().map_size_y, _context->options().map_size_x});
else if (key == "last_r" || key == "terminal" || key == "last_terminal" || key == "id" || key == "seq" || key == "game_counter" || key == "player_id") return EntryInfo(key, type_name);
else if (key == "pi") return EntryInfo(key, type_name, {GameDef::GetNumAction()});
else if (key == "a" || key == "rv" || key == "V" || key == "action_type") return EntryInfo(key, type_name);
else if (key == "uloc") return EntryInfo(key, type_name, { max_unit_cmd });
else if (key == "tloc") return EntryInfo(key, type_name, { max_unit_cmd });
else if (key == "bt") return EntryInfo(key, type_name, { max_unit_cmd });
else if (key == "ct") return EntryInfo(key, type_name, { max_unit_cmd });
else if (key == "uloc_prob") return EntryInfo(key, type_name, { max_unit_cmd, mapx * mapy });
else if (key == "tloc_prob") return EntryInfo(key, type_name, { max_unit_cmd, mapx * mapy });
else if (key == "bt_prob") return EntryInfo(key, type_name, { max_unit_cmd, GameDef::GetNumUnitType() });
else if (key == "ct_prob") return EntryInfo(key, type_name, { max_unit_cmd, CmdInput::CI_NUM_CMDS });
else if (key == "reduced_s") return EntryInfo(key, type_name, { reduced_size });
else if (key == "reduced_next_s") return EntryInfo(key, type_name, { reduced_size });
return EntryInfo();
}