Skip to content

Commit

Permalink
Merge pull request #561 from Farama-Foundation/docs-update
Browse files Browse the repository at this point in the history
Update the FAQ section in the documentation
  • Loading branch information
mwydmuch authored Sep 25, 2023
2 parents 86708f1 + edd92f9 commit 1e1f1ee
Showing 1 changed file with 9 additions and 17 deletions.
26 changes: 9 additions & 17 deletions docs/faq/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Did not find answer for your question? Post an [issue](https://github.com/Farama
## How to use original Doom's assets?

We cannot provide original Doom's assets due to licensing issues, that is why ViZDoom uses [freedoom2.wad](https://freedoom.github.io) as default assets.
If you own original Doom or Doom 2 game (can be bought them on Steam or GOG), you can replace Freedoom graphics with original Doom's assets by placing doom.wad or doom2.wad into your working directory or vizdoom package directory (same directory as vizdoom(.exe)). Alternatively, any base game WAD (including other Doom engine-based games) can be used by pointing to it with the [`DoomGame: setDoomGamePath`](DoomGame.md#setDoomGamePath) method. On Unix you can also set `DOOMWADDIR` environment variable to directory with your wads files.
If you own original Doom or Doom 2 game (can be bought them on Steam or GOG), you can replace Freedoom graphics with original Doom's assets by placing doom.wad or doom2.wad into your working directory or vizdoom package directory (same directory as vizdoom(.exe)). Alternatively, any base game WAD (including other Doom engine-based games) can be used by pointing to it with the [`DoomGame.set_doom_game_path`](../api/python/doomGame.md#vizdoom.DoomGame.set_doom_game_path) method. On Unix you can also set `DOOMWADDIR` environment variable to directory with your wads files.


## How to create/modify scenarios?
Expand All @@ -23,14 +23,16 @@ We recommend using one of these two editors:
You should select ZDoom as your Doom engine version and UDMF map format (Universal Doom Map Format),
that supports the widest range of features.

For more details check

**Original issue and answer:**
[https://github.com/Farama-Foundation/ViZDoom/issues/319](https://github.com/Farama-Foundation/ViZDoom/issues/319)


## How to stack frames?

ViZDoom does not automatically stacks frames for you.
You have to manually store the states from [`DoomGame: getState`](doomGame.md#getState). and build up stacked states for your agent.
You have to manually store the states from [`DoomGame.get_state`](../api/python/doomGame.md#vizdoom.DoomGame.get_state). and build up stacked states for your agent.

**Original issue and answer: (contains code an example)**
[https://github.com/Farama-Foundation/ViZDoom/issues/296](https://github.com/Farama-Foundation/ViZDoom/issues/296)
Expand All @@ -41,7 +43,7 @@ You have to manually store the states from [`DoomGame: getState`](doomGame.md#ge
When you launch an instance of vizdoom, it will create `_vizdoom.ini` in your working directory (if it does not exist yet).
This file contains all the additional engine settings, including key bindings, that you can edit freely.

You can also load .ini file from different location using [`DoomGame: setDoomConfigPath`](doomGame.md#setDoomConfigPath).
You can also load .ini file from different location using [`DoomGame.set_doom_config_path`](../api/python/doomGame.md#vizdoom.DoomGame.set_doom_config_path).

**Original issue and answer:**
[https://github.com/Farama-Foundation/ViZDoom/issues/253](https://github.com/Farama-Foundation/ViZDoom/issues/253)
Expand All @@ -57,7 +59,7 @@ Try [NavDoom](https://github.com/agiantwhale/navdoom) or [MazeExplorer](https://

## How to control game speed in `ASYNC` modes?

See: [`DoomGame: setTicrate`](DoomGame.md#setTicrate) and [examples/python/ticrate.py](https://github.com/Farama-Foundation/ViZDoom/tree/master/examples/python/ticrate.py)
See: [`DoomGame.set_ticrate`](../api/python/doomGame.md#vizdoom.DoomGame.set_ticrate) and [examples/python/ticrate.py](https://github.com/Farama-Foundation/ViZDoom/tree/master/examples/python/ticrate.py)

**Original issue and answer:**
[https://github.com/Farama-Foundation/ViZDoom/issues/209](https://github.com/Farama-Foundation/ViZDoom/issues/209)
Expand All @@ -71,9 +73,8 @@ See: [examples/python/delta_buttons.py](https://github.com/Farama-Foundation/ViZ
[https://github.com/Farama-Foundation/ViZDoom/issues/279](https://github.com/Farama-Foundation/ViZDoom/issues/279)

See also:
- [`Types: Button`](Types.md#button)
- [`Enums: Button`](../api/python/enums.md#vizdoom.Button)
- [examples/python/DeltaDuttons.cpp](https://github.com/Farama-Foundation/ViZDoom/tree/master/examples/cpp/DeltaDuttons.cpp)
- [examples/python/DeltaDuttons.java](https://github.com/Farama-Foundation/ViZDoom/tree/master/examples/java/DeltaDuttons.java)


## Agent does not fire after picking up ammo or weapon?
Expand All @@ -92,7 +93,7 @@ See also:
## How to pick up items (medikit, ammo, armour) when inventory is full?

CVARs implemented in ZDoom engine are very helpful in quickly modifying some aspects of the game.
`game.add_game_args("+sv_unlimited_pickup 1")` adding before init will allow picking up unlimited items.
`doom_game.add_game_args("+sv_unlimited_pickup 1")` adding before init will allow picking up unlimited items.

**Original issue and answer:**
[https://github.com/Farama-Foundation/ViZDoom/issues/187](https://github.com/Farama-Foundation/ViZDoom/issues/187)
Expand Down Expand Up @@ -141,7 +142,7 @@ server proceeds by one frame). See discussion in Issues below for more informati
- [https://github.com/Farama-Foundation/ViZDoom/issues/417](https://github.com/Farama-Foundation/ViZDoom/issues/417)


## Why `game.get_state()` when `game.is_episode_finished() == True`
## Why `doom_game.get_state()` when `doom_game.is_episode_finished() == True`

After the end of the episode, ZDoom engine might change its state and exit the episode (map) resulting in some objects and variables being destroyed or reset. Because of that it's difficult to provide a proper state after that. When we were originally designing ViZDoom we wanted to have a simple logic and we only update state after complete logic tic. Because of that we are not able to detect end of episode early before to save a proper state and decided to provide null/none value instead. We believe that it's easy to provide dummy (e.g. filed with zeros) state if it's needed by an algorithm.

Expand Down Expand Up @@ -184,12 +185,3 @@ GUI apps do not work out-of-the-box on WSL on Windows 10/11. To make it work, yo
## What is a difference between ViZDoom, ZDoom and GZDoom

ViZDoom is based on the last version of ZDoom (2.8.1). ZDoom was discontinued in 2016, and the development switched to GZDoom, which provides a new 3D renderer implemented in OpenGL. ViZDoom, however, sticks to the original 2D software renderer, which is much faster for small resolutions than OpenGL. Because of that, ViZDoom modernized the ZDoom engine by adding support for Apple Silicon and ARM Linux and removing old unused parts of the code base (e.g., by removing Assembler parts).

15.1K Views
90%
1 month ago
Add to
Jump to
Report
28
3

0 comments on commit 1e1f1ee

Please sign in to comment.