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’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