# \[ANN\] Breakout.jl - A simple Breakout clone for fun and reinforcement learning on internal game state

**URL:** <https://discourse.julialang.org/t/ann-breakout-jl-a-simple-breakout-clone-for-fun-and-reinforcement-learning-on-internal-game-state/134872>\
**Category:** Package Announcements\
**Tags:** package, machine-learning, games\
**Created:** [January 4, 2026, 4:52pm UTC](https://discourse.julialang.org/t/ann-breakout-jl-a-simple-breakout-clone-for-fun-and-reinforcement-learning-on-internal-game-state/134872 "2026-01-04T16:52:09Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rajgoel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rajgoel/32/220234_2.png) [@rajgoel](https://discourse.julialang.org/u/rajgoel)\
**Post date:** [January 4, 2026, 4:52pm UTC](https://discourse.julialang.org/t/ann-breakout-jl-a-simple-breakout-clone-for-fun-and-reinforcement-learning-on-internal-game-state/134872/1 "2026-01-04T16:52:09Z")

</div>

This package provides a Julia implementation of the Breakout game. My motivation for creating this package is to provide an easy to install library providing the Breakout game to get started with reinforcement learning (no Python dependency, no GPU required for training on internal game state).

The main features of this package are:

- a playable breakout clone,
- a [CommonRLInterface](https://github.com/JuliaReinforcementLearning/CommonRLInterface.jl) for reinforcement learning,
- different representations on which game play can be learned:
  - **minimal:** 2 dimensional game state containing x-coordinates of paddle and ball
  - **brickless:** 5 dimensional game state containing x-coordinate of paddle, x- and y-coordinate of ball, x- and -y velocity of ball
  - **full:** 89 dimensional game state containing y-coordinate of paddle, x- and y-coordinate of ball, x- and -y velocity of ball as well as one-hot encoded bricks
  - **pixels** : 160 x 210 dimensional grayscale pixel values

More info on [GitHub](https://github.com/rajgoel/Breakout.jl).

An example usage of this package can be found in my course on [Machine Learning and Deep Learning](https://github.com/rajgoel/course-machine-learning).

---

<div class="post-metadata">

**Author:** ![greatpet](https://avatars.discourse-cdn.com/v4/letter/g/e495f1/32.png) [@greatpet](https://discourse.julialang.org/u/greatpet)\
**Post date:** [January 5, 2026, 4:36pm UTC](https://discourse.julialang.org/t/ann-breakout-jl-a-simple-breakout-clone-for-fun-and-reinforcement-learning-on-internal-game-state/134872/2 "2026-01-05T16:36:20Z")

</div>

Do you plan to also publish your RL training code as a package?

---

<div class="post-metadata">

**Author:** ![rajgoel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rajgoel/32/220234_2.png) [@rajgoel](https://discourse.julialang.org/u/rajgoel)\
**Post date:** [January 5, 2026, 4:42pm UTC](https://discourse.julialang.org/t/ann-breakout-jl-a-simple-breakout-clone-for-fun-and-reinforcement-learning-on-internal-game-state/134872/3 "2026-01-05T16:42:47Z")

</div>

It is already available in the course materials (see link above).

```julia
using Pkg
Pkg.add(url="https://github.com/rajgoel/course-machine-learning", subdir="julia")

```

For (D)DQN training:

```julia
using MachineLearningCourse
Lecture08.demo()

```

You can also watch a trained agent playing the game:

```julia
using MachineLearningCourse
Lecture08.breakout()

```

---

<div class="post-metadata">

**Author:** ![hamza\_souidi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hamza_souidi/32/218956_2.png) [@hamza\_souidi](https://discourse.julialang.org/u/hamza_souidi)\
**Post date:** [January 5, 2026, 11:40pm UTC](https://discourse.julialang.org/t/ann-breakout-jl-a-simple-breakout-clone-for-fun-and-reinforcement-learning-on-internal-game-state/134872/4 "2026-01-05T23:40:55Z")

</div>

Amazing work . Thank you so much for sharing .
