Hope all’s as well as it can be with folks. I’m in a solid quarantine-crew and was able to keep my day-job, so I’m about as safe as one can be. This international crisis has let me take a lot of pressure off of my Crescent Loom work (“It’s OK if I don’t do all those things, we’re in lockdown! Anything I do is more than could be expected!”) which has ironically gotten me to feel better and do more on the project.
Action Potential Explorer
I’ve finished the first draft of the stripped-down version of the game I talked about last time. It’s designed for classrooms // for people who want a explorable simulation of how neurons fire. All the creature-building stuff is left out; there’s just poking around at neurons and ion channels. You can play it here.
Since making in-game tutorials is hard, I copied a solution from gaming’s history: instruction manuals. These books that came with many early games fell out of favor because they were intimidating and arcane. For guidance, people have come to instead rely on online resources; first GameFAQs, and now YouTube playthroughs. My hope is that if I make an interactive & visual online guidebook, I can get the low production costs of a manual and the actually-usefulness of online resources.
This guidebook is designed to be used in conjunction with playing the game. It tells you exactly what to try and gives a space to take notes for what happened — a sort of Socratic method / tutorial combination. It’s definitely an experiment. I’ve never seen anything quite like it in the wild. We’ll see how it goes.
Almost without fail, whenever somebody with a deep math or computer science background plays Crescent Loom they eventually ask: “Can I define some kind of subcircuit/module/pattern that I can then re-use?” Building up functional units of computation is a fundamental skill of these fields and it’s necessary to make anything beyond the most basic of systems.
I mocked up the first version of this “modularization” for Crescent Loom following the sub-circuit metaphor common in logic/computer programs: you can save a micro-brain with defined inputs/outputs:
And you could place as many of these as you want in the brain, just like you would a normal neuron. Any connections dragged onto its inputs/outputs would automatically connect to the simulated neurons inside it. You’d even be able to place subcircuits inside subcircuits!
While this had satisfying parallels to the power of computer architecture, it posed a few challenges that ultimately proved to be fatal to this system for Crescent Loom:
- First was the simple issue of navigation: how would one page through a brain like this? Would you have to constantly zoom in and out of these subcomponents? What would happen to the lower ones if you deleted the thing that contained it? What would happen if you changed one instance of a subcircuit? Suddenly, we’re presented with this turtles-all-the-way-down architecture & I would have to manage templates of subcircuits instead of actually neatly modularizing them.
- Second was the issue of sensory inputs and motor outputs. Could they exist inside of a subcircuit? If so, how could you place a subcircuit before you made the muscle on the creature? You would have to navigate into the subcircuit and place the motor neuron manually for each muscle, which again makes each subcircuit more of a template than a self-contained module.
How to cleanly handle inputs and outputs is a tricky problem in programming architecture — the whole Model-View-Controller philosophy just serves to group inputs and outputs into Controllers and Views, respectively, allowing you to keep your pure computation nice & clean & isolated in their Models. Since there’s such a high level of integration between inputs and outputs for nervous systems and relatively little Model-level processing happening, maybe moving away from this computation-inspired system would be fruitful.
Attempt #2 was simpler: just add additional “pages” to the brain. It’s basically just giving the brain more tiles, but putting the new tiles under instead of next to it. This solves the navigation problem in that the pages can just be displayed as small hexes wrapping around the currently-selected page, since none of them are “inside” any other.
It also solves the input/output problem because you can just drag any motor or sensory neuron to any other page. You just can’t delete a page until you’ve moved out all body-associated neurons (i.e. motor & sensory).
For connectivity between different pages, I took the idea from the sub-circuit model to let neurons connect outwards at the corners of the brain. That axon becomes a “loose end” and can be dragged into any other page from an empty corner. This system promises to be a lot more flexible and with less overhead than the subcircuit model — I don’t have to mess around with templates or saved subcircuits. It also took, like, two days to implement (sans loose-ends) after I’d come up with the design, and most of that was just making the buttons the right size and stuff.
I also have hopes that I can get some of the power of the subcircuit system here if I let players copy/paste pages. This again poses the input/output problem, but maybe I can make those “ghost” neurons that don’t function until they’re replaced with a real motor or sensory neuron.
Yikes, I haven’t actually uploaded a new build in over a year — not since February 2019. Hecka overdue. New version is up. Notable accumulated changes:
- Paging system in the brain, as described above.
- Axons are now single-compartment. I’ve traded simulation realism for the ease of a simplified model. Multi-compartment axons live on where they’re actually relevant; the AP explorer.
- On a related note, I’ve removed dendrites. There’s just not a reason to use them at this level of abstraction.
- You can select multiple axons to see many traces at once.
- Can toggle ion channels on/off
- Simplified neuron detail panel — now long status bar that shows up when you click a neuron. Seriously, this is way better. I’ll do post about the evolution of its design someday.
“I wish it need not have happened in my time,” said Frodo.
“So do I,” said Gandalf, “and so do all who live to see such times. But that is not for them to decide. All we have to decide is what to do with the time that is given us.”
~ Olive <3