One cool thing about Stockholm is how easy it is to get to both a central location and a green/forested area.
Even when you’re in a busy cafe in Södermalm or surrounded by shopping centers in T-Centralen water, trees, green walking paths are never far away.
Last weekend we went hiking at the nearby nature preserve. We called it foraging, but didn’t really forage much. We did, however, build a fire and toast walnuts!
I’ve been playing Beyond Earth this weekend. It has been glorious. Of course the first people I go to war with is the Slavs. They’re such hypocrites - telling me that my expansion has greatly worried them, but when I ask them not to settle near my cities they’re like “We’ll settle wherever we damn well please, it’s our right, yada yada”. Then I rename my city closest to them to Kyivolaev and they declare war on the next turn. They took the city away from me first, but I got it back and then some with my xeno swarms.
I haven’t played any of the Civilization games. The reason I was so excited about Beyond Earth is because I loved Sid Meier’s Alpha Centauri. And I really like Beyond Earth, but…it just doesn’t feel like a true spiritual successor for me. Alpha Centauri was awe-inspiring. I’m sure that was at least in part due to my having never played anything like that before. Even now, when I play SMAC I get that same feeling I did years ago. Beyond Earth just isn’t that for me. I’m going to keep playing it, and I’m going to enjoy it, but at the same time I’m going to try to dig up some of the other recommendations of SMAC-like games that people have mentioned on my Twitter feed.
Now that I have the general snail approach/run away/bite/swallow/mate decisions working I thought I’d start on training. However, I quickly realized that it’s too early for that. Because snails already learn from every day experiences in the jar, I should start by perfecting those experiences. Because really, if I get this right in theory I don’t even need any other explicit “training” functionality. And if I do want to build it (which I probably will), I can base it entirely on the existing behavior/memory/learning implementation.
So I’m going to go back to expanding the range of interactions a snail can have in its jar and refining its decisions and memories.
Memories currently work like this:
- A snail can store up to 5 sensory memories
- If 3 or more sensory memories are stored about the same object, they get converted into short term memories
- 5 short term memories of the same neuron being fired in relation to the same object turn into a long term memory. Long term memories start off with a strength of 100. Every 24 hours 10 points is taken off of the strength (and more points are added if the snail gets another 5 short term memories to add to the same long term memory). Long term memories are never deleted, but can be weakened over time.
Biting vs swallowing
I have also implemented a the swallowing motor neuron. Previously, the snail could bite an item to swallow it. It could also bite another snail. However, biting can also be more of an aggressive action - just because a snail is biting something doesn’t mean it wants to eat it. So when a snail does want to try to actually EAT something, it will swallow. Otherwise, it will simply bite.
Snails are also tough to keep alive at the moment - they run out of 50% of their energy each day, and I am having to constantly throw food into the jar to keep them well fed. I have tweaked this slightly by calculating how many bites a snail should be able to take between idle event checks (similar to movement). A snail takes a bite every 10 seconds. An event checking all snails' idle actions runs every 60 seconds, so every SWALLOW neuron firing will actually fire 6 times each minute (of course there is a way to specify a different interval if we are calculating for more or less time between checks).
The codebase is getting large and I feel I need to start documenting the project better in terms of both design and technical documentation. I made a doc site on http://gastropoda.readme.io/ though it has no proper content there yet, just the very bare bones beginnings.
Making decisions has been tough. The decision making code is a huge mess right now.
I’ve decided to implement something along the lines of Maslow’s hierarchy of needs. So far there are only two needs - food and sex. I made a separate “Prioritisation” neuron that handles both weight setting in the inputs and later setting “motivations” for the snails when it comes to decision time (eg
It’s working a bit better than the previous system (in that snails that refused to eat before are now eating), but is all still very experimental and needs to be observed and tweaked as I go.