<!--
SPDX-FileCopyrightText: 2023 Jummit
SPDX-License-Identifier: CC-BY-SA-4.0
-->
# Pre-Jam Preparations
## The Idea

For the [Autumn Lisp Game Jam 2023](https://itch.io/jam/autumn-lisp-game-jam-2023), having recently made a real-life version, I decided to implement [Rai-Net Access Battlers](https://breezewiki.esmailelbob.xyz/steins-gate/wiki/RaiNet_AccessBattlers) from Steins;Gate. (Check it out if you haven't, it's amazing.) I used [this fangame](https://www.rainetdigital.com) for research.
## The tools
I'm pretty comfortable using [TIC-80](https://tic80.com), and since it has [Fennel](https://fennel-lang.org) support, it's perfect for a Lisp game jam.
I'm going to write the code in [Helix](https://helix-editor.com), currently my go-to editor.
For my VCS, I'll use good ol' Git.
## REUSE
Most of my new projects adhere to the REUSE specification. Check out https://reuse.software for more info.
## ECS
I started prototyping a simple ECS setup, and this is what I came up with:
```fennel
(local systems [])
(var entities [])
(fn _G.TIC []
(cls 14)
(each [_ system (ipairs systems)]
(set entities (or (system entities) entities))))
```
Entities are just tables, where keys are the "components".
Systems take the world, iterate over entities and optionally return a new world.
Example system and entity:
```fennel
(fn text [entities]
(each [_ entity (ipairs entities)]
(case entity
{: text : x : y}
(print text x y))))
(local systems [text])
(var entities [{:text "HELLO WORLD!" :x 84 :y 84}])
```
## Wrapping Up
That's it for the preparations. Hopefully I can finish something playable in time!
El. Psy. Kongroo.