Weave neural circuits to create primitive creatures and explore an alien world.
[ Online Demo | Join Beta ]
Time is strange. It feels like the changes I make every day are small, but gradually they accumulate into something bigger than it seems like I could make. And then I realize how little time I have left, and the good feelings about that turn back to anxious work.
Last weekend, I showcased Crescent Loom at the Portland Mercury’s new tech/gaming convention: Betacon. It was cool event for me for a few reasons:
It got me to focus on getting a polished build put together, fixing a lot of the UI things that I’d been putting off (e.g. finishing the design, seamlessly switching between body and brain editing, making an info panel for the neurons)
But from the start, about half the people picking up the game for the first time would put their muscles down like this:
Which makes sense! It’s a lot more intuitive that a set of muscles would run up along an arm rather than, say, between the creature’s ankles. A better design for the game would be one where people’s natural intuition is the correct thing to do.
It just so happened that I’d also been wrestling with a different design problem; there wasn’t currently a good way to get a limb to turn in a specific direction on muscle activation; the muscles would tend to get bound-up since they didn’t wrap along with the limb:
SO! I decided to try and kill two birds with one stone and make muscle attachment points run up alongside each limb, rather than having a free-form “attach anything to anywhere” system. This has created a standardized way to place muscles that produces a predictable motion, and is far less likely to get bound up:
I’m pretty pleased with this solution, not gonna lie. Identifying problems and finding clever ways to solve them is one of the most fun processes in game dev. Of course, this raises its own problems (can you attach any hardpoint to any hardpoint?)…
Crescent Loom won the Betacon award for “Most Innovative”! I’ve never won an award for my games before, so that was PRETTY SLICK.
I participated in the March for Science, and had a brief chat with a scientist/photographer named Tyler Hulett who put together a snapshot-documentary on the march.
You can see it on Vimeo; my beautiful face is at the 5-minute mark.
Now, here’s the current to-do list on my desktop:
You’ll note the lack of, y’know, actual development on this list. I am probably one of the slowest writers I know and there is SO MUCH writing you need to do in order to manage a game project and fund thyself.
I think I need to find a writer/PR/publisher. I’m spread thin and that’s the area where I’m least-efficient. Grants especially require a specialized skillset that I simply don’t have. Problem is, even with the KS money, the project is already bare-bones budget-wise. So, dunno how that’ll turn out. Maybe I’ll just learn to write faster and care less about typeos.
Oof, it’s already been a month since the Kickstater ended? Time is flying by, it feels like I barely get anything done each individual day, but looking back I’m always surprised by how much I did.
Quick note: I’ll be showing Crescent Loom at Betacon in Portland this weekend! (Apr 15-16) If you wanna see how the game’s coming along, that’ll the place to say hi!
The biggest visual difference is that I finally added a user interface! You can now click buttons instead of having to tab through a thousand different options:
I looked at a handful of other construction games as reference points. I think it’s pretty obvious which one of these I stole the most from:
Kerbal Space Program suffers from presenting too much information (its pop-ups are a mess) and Spore suffers from being simple to the point of uninteresting (though it is cute & approachable, which is important).
I tried to strike the same balance as Besiege, and limited icons to horizontal bars on the top and bottoms of the screen. If more needs to be shown, I can do that in a pop-up when people mouseover or click the icon.
The most interesting design decision was how to incorporate the brain window. I didn’t want a separate half of the screen anymore, so I figured to go for a picture-in-picture approach.
Two options presented themselves to me:
(In either case, clicking on the brain would embiggen it to take up half the screen.)
I asked Twitter, and people were pretty enthusiastic about putting it on the creature itself, so that’s what I did. I might set the other mode as an option, because I think there are cases when you’d want to clearly see what’s happening without it taking up most of the screen. Something for Future Wick to do.
Turned out that simulating the ion channels opening and closing along each neuronal tile in a scripting language (which is more flexible than the main “engine” code, but slower) was too computationally intensive, so I simplified the ion channel scripts to only run once during setup. Here’s the ion channel that responds to a keyboard hit. Any cell with this becomes thirty times more permeable to sodium while the Q key is pressed:
Finally, there was a bunch of backend stuff I finished up doing as a consequence of the new way I’m simulating neurons. The easiest way of saving all the neurons + ion channels was actually save these ion channel scripts in the save file and running them on loading the creature.
Ugh, why do I reinvent the wheel every time I make a new user interface. TBH, most of my week was ironing out the logic of how menus and icons arrange themselves. NOTE TO FUTURE WICK: text wrapping has been solved a thousand times. If you find yourself trying to do it again, don’t. Use a library that doesn’t have all the bugs your sleep-deprived brain decided would be fun to add.
Decided that a bi-weekly update schedule’d be better to avoid spamming the email lists, which is why I skipped sending out an update last week (but I did publish a postmortem on the campaign – it took a quite unusual path!):
So what’s been happening in the last two weeks? Looking back, a suprising amount given how slow things feel on any particular day.
First off, I’ve been redesigning the creatures to make them feel more organic and less robot-like. Here’s the concept art:
And once I tweaked the drag physics (edges that are facing other parts aren’t included in the drag calculation, and thanks to Benjamin Morrison springs are now damped) and added non-rectangular pieces, I was pleased to discover that it was a *lot* easier to make things swim & steer!
So pretty. I spent way too long just cruising around as this lil guy.
I’ve expanded the scripting language implementation from last update to maps + neurons, though it’s not quite done yet. It’s a lot more work than it sounds, since I have to code each function in triplicate. Wish there was an easier way. :/
Speaking of neurons, I spend last week visiting Gabriel Barello (a computational neuroscientist math friend) in Eugene and he hammered out the solution (several, actually) for simulating actual electrical currents flowing through a neuron in real time:
This is just fantastic. It’s so so much more accurate than the janky version I had before, is prettier, and allows for a lot more nuance.
Finally, I’m almost done with my application to Stugan which, if accepted, will let me work on CL in Sweden for the summer. This would be a rad opportunity — not only is it a great focused work environment, but meeting + working alongside other devs is important if I want to keep growing this weird game/science independent career of mine.
Hi! Quick intro: My name is Wick, I’m a neuroscientist / solo indie game dev, and I just ran my second successful Kickstarter campaign. The game is called Crescent Loom; players build creatures, weave brains, and explore an underwater ecosystem.
Common wisdom says that most of the time campaigns see a big spike at the start, have a big plateau in the middle, and another spike at the end.
Crescent Loom… did not follow that pattern.
What happened? Lemme back up and give some context to what things were like right before that huge jump.
(I hope it’s not too tacky to call these wicklogs instead of updates. It makes me feel sorta like a smurf to put my name on everything)
So! The Kickstarter gave eight months to make a game. This is doable. I can do this. Hoo boy.
In the demo, I have all the content (levels, cell behaviors, body parts) hard-coded in the game’s files. It’s a quick-and-dirty way to get things working, but not a great way to structure a game long-term since you need to recompile everything whenever you make any sort of change or addition (and it’s hard for non-coders to make contributions).
A better way is to load external files. Games already do this for art and music, but the way this happens with code is generally through scripting languages. These are code files that are loaded and run on-the-fly, like so:
Monkey X has a custom scripting language called mini c thanks to a few programmers who decided to do the impossible task (for me, at least) of writing it from scratch. So rather than having to cobble something together myself, it was just an afternoon of downloading their modules and starting to integrate it into my game.
Steam: Crescent Loom got Greenlit (which is an arbitrary and brutal internet popularity contest), so yay! But I’ve run into a few snags due to already being associated with Starship Rubicon on the Steam backend. Their system is confused since I’m not running the finances on that project, but will be for CL. Emailed ’em.
itch.io: I’ve set up a way for people to still preorder the game & join the beta via itch.io. I’d like to eventually completely host the online demo through them, but I haven’t yet figured out how to save/load creatures to my database from an external source. Gonna have to get that done for the desktop versions, anyway.
Funding: I’m looking into applying for funding beyond the Kickstarter, which generally falls into one of three categories: 1) Publisher! 2) Investors! 3) Government Grants! (#4 aka rich friends is not reliable) All of these are gonna be brave new worlds for me, so that’ll be fun.
(there’s a distressing lack of programming on that list. I need to remind myself that Production is real work too, and super important to get right)
nbd, just achieved a years-long dream of mine to be able to work on a neuroscience video game and finally get some basic neuroscience into the public consciousness. I’M JUST A LITTLE ECSTATIC.
Also, I ran the first creature tournament! Eight creatures, competing for a $250-tier laser-cut neuron art panel.
Congrats to the winner! What a strange upset.
Spent wayyyy too long on it, but it looks so much better than the old one. Looked at The King’s Bird for inspiration.
More created creatures! Did some more graphical work to bring them to life. Since having a big ol’ eye in the center was confusing since eyes are a literal organ that matter ingame, I replaced it with a pulsing heartbeat. On the todo list is to maybe link it up with a pacemaker neuron in the center of the brain to really drive home the brain/body connection.
Oh also now there is kelp. And little blue faeries. Since all the art in the game is vector-based, I’ve been looking for ways to show off its unique capabilities. Realtime point-by-point modification of graphics is not something I see a lot of games do, so I’m excited to keep exploring it.
There are hookshots now! Good way to get around…
…and to catch prey.
MY GAME IS PRETTY DO YOU THINK IT’S PRETTY I THINK IT’S PRETTY
RACE MODE! Compete against another random player-created creature to reach the end of a short tunnel. It’s harder than you might think.
In order to make the creatures seem more animal-like, I made the central circle more eye-like and added a slight breathing effect across the entire body.
Playing around with using touch feedback to drive motion instead of pacemaker cells; it makes swimming feel more fluid.
I’m not really sure what this creature of the day is besides big and pink. Was going for tardigrade? Sorta doglike.