def test_load_textworld_games(): request_infos = EnvInfos() request_infos.admissible_commands = True request_infos.description = False request_infos.location = False request_infos.facts = False request_infos.last_action = False request_infos.game = True max_episode_steps = 100 batch_size = 5 name = "test" base_dir = "test-data/rl_games/" env = load_textworld_games( [ f"{base_dir}tw-cooking-recipe1+take1+cook+open-BNVaijeLTn3jcvneFBY2.z8", f"{base_dir}tw-cooking-recipe1+take1+open-BNVaijeLTn3jcvneFBY2.z8", f"{base_dir}tw-cooking-recipe1+take1+cook+open-BNVaijeLTn3jcvneFBY2.z8", f"{base_dir}tw-cooking-recipe1+take1+open-BNVaijeLTn3jcvneFBY2.z8", ], name, request_infos, max_episode_steps, batch_size, ) assert len(env.gamefiles) == 4 assert env.request_infos == request_infos assert env.batch_size == batch_size # for some reason env.spec.max_episode_steps is None # assert env.spec.max_episode_steps == max_episode_steps assert env.spec.id.split("-")[1] == name
def request_infos_for_eval() -> EnvInfos: request_infos = EnvInfos() request_infos.admissible_commands = True request_infos.description = True request_infos.location = True request_infos.facts = True request_infos.last_action = True request_infos.game = True return request_infos
def select_additional_infos(self) -> EnvInfos: """ Returns what additional information should be made available at each game step. Requested information will be included within the `infos` dictionary passed to `CustomAgent.act()`. To request specific information, create a :py:class:`textworld.EnvInfos <textworld.envs.wrappers.filter.EnvInfos>` and set the appropriate attributes to `True`. The possible choices are: * `description`: text description of the current room, i.e. output of the `look` command; * `inventory`: text listing of the player's inventory, i.e. output of the `inventory` command; * `max_score`: maximum reachable score of the game; * `objective`: objective of the game described in text; * `entities`: names of all entities in the game; * `verbs`: verbs understood by the the game; * `command_templates`: templates for commands understood by the the game; * `admissible_commands`: all commands relevant to the current state; In addition to the standard information, game specific information can be requested by appending corresponding strings to the `extras` attribute. For this competition, the possible extras are: * `'recipe'`: description of the cookbook; * `'walkthrough'`: one possible solution to the game (not guaranteed to be optimal); Example: Here is an example of how to request information and retrieve it. >>> from textworld import EnvInfos >>> request_infos = EnvInfos(description=True, inventory=True, extras=["recipe"]) ... >>> env = gym.make(env_id) >>> ob, infos = env.reset() >>> print(infos["description"]) >>> print(infos["inventory"]) >>> print(infos["extra.recipe"]) Notes: The following information *won't* be available at test time: * 'walkthrough', 'facts' """ request_infos = EnvInfos() request_infos.description = True request_infos.inventory = True request_infos.entities = True request_infos.verbs = True request_infos.extras = ["recipe"] request_infos.facts = True request_infos.location = True return request_infos