Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
André Jaenisch 77990fee61
Allow for clearing of localStorage
3 months ago
journal Wrote journal entry for yesterday 3 months ago
scripts Toot as unlisted status message 4 months ago
src Allow for clearing of localStorage 3 months ago
types Update levels/index.json to be valid JSON 3 months ago
.gitignore Adding type definitions 3 months ago
LICENSE Initial commit 4 months ago
README.md Update README 3 months ago
index.d.ts Adding type definitions 3 months ago
index.test-d.ts Adding type definitions 3 months ago
package.json Test store 3 months ago
require.js Test the setting for a player choosing an attack role 3 months ago
rollup.config.js Rename draft.js to draft.json 3 months ago
tsconfig.json Import as JSON 3 months ago
yarn.lock Rename draft.js to draft.json 3 months ago



Topic is death.

I turned that into a Tower Defense game.

Sneak peak

screenshot of the game from 19th August 2022


This game follows a Redux-like architecture for state management and React-like ViewModel. Updates to the state are rendered to the DOM. Yes, I don't use <canvas> but HTML and SVG here.

Event listeners dispatch actions to the store to update the state.

There is a snapshot in localStorage. If you observe something odd, chances are clearing the localStorage and reload might fix it.

Ideas for post-competition

Since Heroku is about to sunset free dynos I don't deploy this game there. Therefore I don't implement multi-player. The only challenge there would be match-making.

Due to the architecture, I can replicate actions over socket.io to keep all states in sync. This is the main reason, why store.dispatch() is async.

To make this game more interesting, I thought about some kind of fog of war. This would be masking the game and having the entities decide, which areas are observable.


Licensed under [AGPL v3.0 or newer][./LICENSE].

Play it online

== I'm Using GitHub Under Protest ==

This project is currently hosted on GitHub. This is not ideal; GitHub is a proprietary, trade-secret system that is not Free and Open Souce Software (FOSS). I am deeply concerned about using a proprietary system like GitHub to develop our FOSS project. I have a mirror on Codeberg and my Gitea. I urge you to read about the Give up GitHub campaign from the Software Freedom Conservancy to understand some of the reasons why GitHub is not a good place to host FOSS projects.

If you are a contributor who personally has already quit using GitHub, please write me an email for how to send us contributions without using GitHub directly.

Any use of this project's code by GitHub Copilot, past or present, is done without my permission. I do not consent to GitHub's use of this project's code in Copilot.

Logo of the GiveUpGitHub campaign