Skip to content

Beamrider: first submission#217

Open
xray2moon wants to merge 2 commits into
k4ntz:devfrom
xray2moon:feature/our-changes
Open

Beamrider: first submission#217
xray2moon wants to merge 2 commits into
k4ntz:devfrom
xray2moon:feature/our-changes

Conversation

@xray2moon

@xray2moon xray2moon commented Dec 21, 2025

Copy link
Copy Markdown
Contributor

Full Beamrider implementation. Like in the ALE, the game is done after beating sector 14. All enemies and obstacles have been implemented.

In the ALE, there is always one frame player+blue lines movement, next frame enemy movement. Should we also reproduce this in our game? We feel that it makes the gaming experience noticeably worse.

For convenience, we added WASD movement.

Controls:
Movement: LEFT ARROW, A; RIGHT ARROW, D
Laser: SPACE
TORPEDO: UP ARROW

The Fork that we worked on that contains our commit history : https://github.com/gixerl/JAXAtari_BeamRider (latest branch: refactor)
For some reason, the changed Files Test always failed when trying to open a PR from that Fork.

(locally the tests ran through after 3 minutes when ran in parallel. Not sure why it didn't work here)

@gixerl gixerl mentioned this pull request Dec 24, 2025
@JeanNessen

Copy link
Copy Markdown

Review for Beamrider (second try 😄)

ALE Similarity 4/4
Gameplay feels very close to the reference. In the parts of the game I played everything seemed to be available. The game feels somewhat slower, this is especially noticeable with the shooting cooldown. Apart from that all good.

Overall the game looks very good, almost indistinguishable from the original. The slower pace I mentioned before leads to the strobing effect on level start to be more intense than in the original, that is the only thing I have noticed, great work 👍

Implementation Quality 4/4
The code looks clean and JIT compatible, as far as I can tell. However it is extremely verbose with lots of code duplication and a very large, flat gamestate. This leads to these immense functions that touch the entire state.
It would probably benefit readability if you were to extract common logic from some of the rendering or collision methods.

The other noticeable issue with the implementation is that it takes over a minute for the game to load on my machine with a discrete Nvidia GPU. Any game of some complexity will take time to compile with Jax, but this seems excessive.

Apart from these minor issues the code looks clean and performs very well in game.

@Dan041k Dan041k self-assigned this Jan 6, 2026
@Tenzersher

Tenzersher commented Jan 7, 2026

Copy link
Copy Markdown

Review of Beamrider from: Tenzing Dorjee Sherpa (Tictactoe3D)

ALE Similarity: 3.5/4
After playing both the original ALE version and this implementation back-to-back, the gameplay feels almost identical. Movement, shooting, and overall pacing closely match the original game.
After extended play, I noticed one minor difference(which I also took screenshots of and is attached here): in this implementation, the white UFO(Enemy) often passes through if it is not destroyed, whereas in the original game the enemy typically turns back and attacks the player again.
Despite this small difference, the overall gameplay experience remains very close to the ALE version.
Original ALE
Jaxatari version

Implementation Quality: 3/4
The code works and is mostly JAX-compatible. State updates are functional, jit is used, and rendering is separated from game logic, which is good. Using NamedTuple and Chex types also helps keep the code structured.
That said, the implementation is very large and hard to read in places. Many functions are long and modify many parts of the game state at once, which makes the logic difficult to understand and maintain. There is also some repeated code (for example in rendering and collision logic) that could be moved into helper functions.
JAX is used correctly, but not very efficiently. Most logic is written in a sequential way instead of using vectorized operations, which limits performance and makes the code less idiomatic JAX.
Overall, the game runs and is playable.

@github-actions

Copy link
Copy Markdown

Test Report

This comment was generated automatically by a GitHub Action. It summarizes the test results for this pull request. The GitHub Action run can be found here:

https://github.com/k4ntz/JAXAtari/actions/runs/22037374828

Base Branch ✅

The PR's base branch is dev.
The expected base branch is dev.

Changed Files ✅

There are no forbidden file changes. Nice 👍

Framework Tests ❌

Some framework tests failed. Please check the details below:

beamrider ❌
============================= test session starts ==============================
platform linux -- Python 3.11.14, pytest-8.4.2, pluggy-1.6.0
rootdir: /home/runner/work/JAXAtari/JAXAtari
configfile: pyproject.toml
plugins: sugar-1.1.1, github-actions-annotate-failures-0.3.0, xdist-3.8.0, jaxtyping-0.3.8, syrupy-4.9.1
created: 2/2 workers
2 workers [143 items]

ssssss.::warning file=/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
::warning file=/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py,line=25::pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
sssssssssss.....s::error file=tests/test_core_and_wrappers.py,line=493::test_native_downscaling_hot_swap[beamrider]%0A%0AFailed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: BeamriderRenderer.__init__() got an unexpected keyword argument 'config'
Fs::error file=tests/test_core_and_wrappers.py,line=555::test_native_downscaling_grayscale[beamrider]%0A%0ATypeError: BeamriderRenderer.__init__() got an unexpected keyword argument 'config'
F............................................. [ 50%]
.........ssssssssssssssss.........................::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.

::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py,line=317::WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
::warning file=/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
::warning file=/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py,line=434::WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
..::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
..::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
.s.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py,line=106::Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py,line=175::Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
......::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
.::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=131::Environment returned a NamedTuple for 'info'. This is deprecated.
::warning file=/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py,line=111::Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
  [100%]/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored in: <function _xla_gc_callback at 0x7f04180f40e0>

Traceback (most recent call last):
  File "/home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/jax/_src/lib/__init__.py", line 125, in _xla_gc_callback
    xla_client._xla.collect_garbage()
KeyboardInterrupt

Enable tracemalloc to get traceback where the object was allocated.
See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
  warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))

=================================== FAILURES ===================================
/home/runner/work/JAXAtari/JAXAtari/tests/test_core_and_wrappers.py:514: Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: BeamriderRenderer.__init__() got an unexpected keyword argument 'config'
/home/runner/work/JAXAtari/JAXAtari/src/jaxatari/modification.py:40: TypeError: BeamriderRenderer.__init__() got an unexpected keyword argument 'config'
=============================== warnings summary ===============================
tests/test_all_mods.py::test_no_duplicate_mod_keys
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/pygame/pkgdata.py:25: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import resource_stream, resource_exists

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[beamrider]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_reset_method[beamrider]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[beamrider]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_render_method[beamrider]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_preprocessing_wrappers[beamrider]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_frame_stack_wrapper[beamrider]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[beamrider]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[beamrider]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:131: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[beamrider]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_step_method[beamrider]
tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_seeding_and_determinism[beamrider]
tests/test_funcenv_adapter.py::TestGymWrapperIntegration::test_time_limit_wrapper[beamrider]
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/gym_wrapper.py:111: UserWarning: Environment returned a NamedTuple for 'info'. This is deprecated. Please return a Dict or a Flax PyTreeNode.
    warnings.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[beamrider]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/passive_env_checker.py:317: UserWarning: WARN: No render modes was declared in the environment (env.metadata['render_modes'] is None or not defined), you may have trouble when calling `.render()`.
    logger.warn(

tests/test_funcenv_adapter.py::TestGymnasiumApiCompliance::test_gymnasium_env_checker[beamrider]
  /home/runner/work/JAXAtari/JAXAtari/.venv/lib/python3.11/site-packages/gymnasium/utils/env_checker.py:434: UserWarning: WARN: Not able to test alternative render modes due to the environment not having a spec. Try instantiating the environment through `gymnasium.make`
    logger.warn(

tests/test_spaces.py::test_discrete_space
tests/test_spaces.py::test_box_space
tests/test_spaces.py::test_dict_space
tests/test_spaces.py::test_tuple_space
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/games/jax_pong.py:106: UserWarning: Performance Warning: JaxPong.consts is a 'NamedTuple'. This prevents JAX from treating constants as static metadata, potentially causing excessive recompilation. Future versions will require 'flax.struct.PyTreeNode' (and the states/observations/info to flax.struct.dataclass/PyTreeNode). Please refactor your constants class.
    super().__init__(consts)

tests/test_spaces.py::test_discrete_space
tests/test_spaces.py::test_box_space
tests/test_spaces.py::test_dict_space
tests/test_spaces.py::test_tuple_space
  /home/runner/work/JAXAtari/JAXAtari/src/jaxatari/core.py:175: DeprecationWarning: Environment exposes deprecated obs_to_flat_array(). Observations should now be flax.struct.dataclasses using ObjectObservation for objects or plain arrays for observations like lives, score, etc. Depending on legacy obs_to_flat_array might lead to unforseen issues with wrappers.
    _warn_deprecated_obs_to_flat_array(env)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
SKIPPED [1] tests/test_all_mods.py:188: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:234: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:309: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:333: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:350: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:396: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:483: Game does not have mods registered
SKIPPED [1] tests/test_all_mods.py:671: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:694: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:712: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:542: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:732: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:565: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:752: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:593: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:774: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:605: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:787: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [1] tests/test_all_mods.py:809: Game 'beamrider' is not in core.GAME_MODULES
SKIPPED [8] tests/test_environment_compatibility.py:521: Skipping to debug memory issues in CI
SKIPPED [8] tests/test_environment_compatibility.py:560: Skipping to debug memory issues in CI
SKIPPED [1] tests/test_funcenv_adapter.py:157: Skipping to debug memory issues in CI
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_hot_swap[beamrider] - Failed: Game renderer likely hasn't updated its __init__ to accept 'config'. Error: BeamriderRenderer.__init__() got an unexpected keyword argument 'config'
FAILED tests/test_core_and_wrappers.py::test_native_downscaling_grayscale[beamrider] - TypeError: BeamriderRenderer.__init__() got an unexpected keyword argument 'config'
===== 2 failed, 105 passed, 36 skipped, 23 warnings in 1182.10s (0:19:42) ======


This log was automatically created at 2026-02-15 14:51:25 UTC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants