diff --git a/.github/workflows/publish-binaries.yaml b/.github/workflows/publish-binaries.yaml
index c1c67d8..79072b3 100644
--- a/.github/workflows/publish-binaries.yaml
+++ b/.github/workflows/publish-binaries.yaml
@@ -3,8 +3,8 @@ name: Publish binaries
on:
push:
tags:
- - v1.*
- - v1.*.*
+ - 'v[0-9]+.[0-9]+.[0-9]+'
+
permissions:
contents: write
diff --git a/README.md b/README.md
index 264ed6e..bdc6a6b 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,30 @@
-# Conway's Game of Life implemented in OPENRNDR
+# Conway's Game of Life in Kotlin / OPENRNDR
[![Build on commit](https://github.com/hbmartin/openrndr-game-of-life/actions/workflows/build-on-commit.yaml/badge.svg)](https://github.com/hbmartin/openrndr-game-of-life/actions/workflows/build-on-commit.yaml)
+[![CodeFactor](https://www.codefactor.io/repository/github/hbmartin/openrndr-game-of-life/badge)](https://www.codefactor.io/repository/github/hbmartin/openrndr-game-of-life)
+[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=hbmartin_openrndr-game-of-life&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=hbmartin_openrndr-game-of-life)
-
+
-An implementation of Conway's Game of Life using OPENRNDR in Kotlin.
+An implementation of [Conway's Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) using [OPENRNDR](https://openrndr.org/) in Kotlin.
+Inspired by [Golly](https://golly.sourceforge.io/) and the [Edwin Jakobs KotlinConf talk](https://www.youtube.com/watch?v=GysSoSwmLYo).
+
+
## Controls
- Draw on the canvas with a mouse to create new life
- Scroll up and down to control generation time
- Press space to pause / resume the simulation
-- Press 'esc' to reset current pattern to the initial state
-- Press 'r' to reset to a randomly chosen pattern
-- Press 'c' to reset to a random canvas
+- Press `esc` to reset current pattern to the initial state
+- Press `r` to reset to a randomly chosen pattern
+- Press `c` to reset to a random canvas
- (TODO) Press 'g' to toggle grid visibility
-- Press 's' to save the current state to a file
+- Press `s` to save the current state to an RLE / Golly file
- (TODO) Press 'l' to load a state from a file
-- Press 'i' to toggle info text (generation # and FPS)
-- Press 'q' to quit the program
+- Press `i` to toggle info text (generation # and FPS)
+- Press `q` to quit the program
- (TODO) Press 'h' to show the help screen
- (TODO) Press 'f' to toggle fullscreen mode
@@ -39,3 +44,6 @@ An implementation of Conway's Game of Life using OPENRNDR in Kotlin.
To create a runnable jar for a platform different from your current platform, use `./gradlew jar -PtargetPlatform=`, where `` is either `windows`, `macos`, `linux-x64`, or `linux-arm64`.
+## See also
+
+- [Another Openrndr GoL that I found too late](https://github.com/ikolomiets/openrndr-game-of-life)
\ No newline at end of file
diff --git a/media/screenshot.png b/media/screenshot.png
new file mode 100644
index 0000000..ecb5417
Binary files /dev/null and b/media/screenshot.png differ