- [Screwlisp proposes kittens](https://screwlisp.small-web.org)
# Plant insect bird game jam colorized likert probability mechanic
I could feel myself getting a little frayed in my fourth devlog yesterday. But between that and a dream, I think the ending is in sight. In particular, between [Ksaj, Doug Merritt, Vassil Nikolov and sigh on the Mastodon](https://mastodon.sdf.org/@screwtape/114483135834607296)'s feedback about conway's game of life and agents being basically more nuanced and maybe game-theoretic automata, listen, here's what we're going to do.

## Game probability mechanic
This is what the player plays while the game is running. All those probabilistic-type things are going to be user-controls while the world evolves (the world is persistent in the software individual, so it is always running). Like literally (yes I am still eepitching from markdown listen I will write that up after the jam and KMP's interview).
```
put likert-scale type thingtype
put likert-scale attributes {probability}

addmember (get board contents) likert-scale
writefil board
loadk board

put a-lot type likert-scale
put a-lot probability 4/4

put often type likert-scale
put often probability 3/4

put sometimes type likert-scale
put sometimes probability 2/4

put occasionally type likert-scale
put occasionally probability 1/4

put not-normally type likert-scale
put not-normally probability 0/4

put board contents (union (get board contents) {a-lot, often, sometimes, occasionally, not-normally})
writefil board
loadk board
```

Now this isn't the whole trick
# Add colors that store probabilities
Since now probabilities are a mutable property, the player might want to change the probability as a world evolves. However, what if they want the world as such to continue, but to introduce a new species (= color = probability) of plant or insect or bird.
```
put color type thingtype
put color attributes <a-lot, often, sometimes, occasionally, not-normally>

addmember (get board contents) color
writefil board
loadk board
```
now we can snapshot the current probabilities into a color:
```
ssv .c pink
put .c type color
put .c a-lot (get a-lot probability)
put .c often (get often probability)
put .c sometimes (get sometimes probability)
put .c occasionally (get occasionally probability)
put .c not-normally (get not-normally probability)
addmember (get board contents) .c
```

## View inside the plant-insect-bird individual's brain:
```
ses.152) ssv .c pink

ses.153) put .c type color
put: pink type color

ses.154) put .c a-lot (get a-lot probability)
put: pink a-lot 1

ses.155) put .c often (get often probability)
put: pink often 3/4

ses.156) put .c sometimes (get sometimes probability)
put: pink sometimes 1/2

ses.157) put .c occasionally (get occasionally probability)
put: pink occasionally 1/4

ses.158) put .c not-normally (get not-normally probability)
put: pink not-normally 0

ses.159) addmember (get board contents) .c

ses.160) . (symbol-plist 'pink)
(not-normally 0 occasionally 1/4 sometimes 1/2 often 3/4 a-lot 1 type color)
```
with some apologies, we can turn this into a one-liner:
### sequence of actions, soact
```
put not-normally probability 1/20
ssv .c blue
soact [put .c type color] [put .c a-lot (get a-lot probability)] [put .c often (get often probability)] [put .c sometimes (get sometimes probability)] [put .c occasionally (get occasionally probability)] [put .c not-normally (get not-normally probability)] [addmember (get board contents) .c]
```
Well, the /result output/ is nice:
```
put: blue type color
put: blue a-lot 1
put: blue often 3/4
put: blue sometimes 1/2
put: blue occasionally 1/4
put: blue not-normally 1/20
```
check pink.
```
(get pink not-normally)
ses.164) (get pink not-normally)
  => 0
```
Don't forget to write changes.
```
writefil board
loadk board
```

# Summary
We introduced a likert-scale identified with changeable probabilities. Since these can change, we introduced a color type to snapshot any particular qualitative five-point-scale of probabilities.

These will allow the player to explore mixed dynamic ecosystems.

We learned about soact one-liners - basically a human would not want to write this, unless they are a hack like me, but imagine if the software-individual themselves is writing it, and the human is just exposed to the nice output summary.

# Talk on the Mastodon
- [Mastodon thread (mutuals, please)](https://mastodon.sdf.org/@screwtape/114491977636211241)
- [Lispgamejam thread](https://itch.io/jam/spring-lisp-game-jam-2025/topic/4858711/what-genre-is-simulation-eat-things-or-you-die)
- [Live interview with Kent Pitman on Tuesday night/Wednesday 0UTC (watch the Mastodon)](https://communitymedia.video/c/screwtape_channel/videos).