Weave neural circuits to create primitive creatures and explore an alien world.
[ Online Demo | Project Page | Dev Log ]
Last week I showed Crescent Loom at the Seattle Indie Expo (and it got some of the best, most enthusiastic responses yet!) and then came back to a Columbia Gorge On Fire. Needless to say, I got a little less in the way of development done than usual.
I ended up heading out to my parent’s house to be on hand to help with the evacuation if necessary, but thanks to the work of our firefighters (and a little luck), the fire didn’t burn any homes and is now stalled out. Yay!
I’ll be showing Crescent Loom at the OMSI mini maker faire this weekend (Sept 16 & 17). The mini maker faire last year was the very first public showing of CL, so this is officially the end of the first year of development!
Not too bad for a year of work. 🙂
1. Make game 2. ??? 3. Profit!
Before starting game development, I tended to have this notion that, once completed, art sorta existed in a vacuum. High-school-Wick at one point argued that you could seriously judge a piece of art on its own merits, regardless of the context in which it was created or the artist’s intentions.
I now appreciate how the environment that a piece of art is designed for totally dictates the shape of that art. These are design decisions that are so fundamental, that feel so natural, they’re invisible unless you’re looking for them. One of the reason Charles Dickens’ books are engaging is that he ends most chapters on a cliffhanger — due to the fact that he originally wrote the chapters for magazines and needed to get people to buy the next one.
In games, the most clearest example of this is the concept of “lives”. Needing to start a game over from the start if you fail a few times wasn’t something a designer came up with because they thought it would enhance the experience; it’s because it drove people to insert more quarters in the machine to buy more lives to continue their game.
An arcade machine’s entire design — lives, levels of increasing difficulty, high score lists, colorful graphics — is molded around its business model. This isn’t inherently a bad thing; you can find games that worked with this structure to tell a story (such as in Missile Command, which was developed during the height of the cold war and whose mechanics demonstrate the inevitability of mutually assured destruction). However, the structure itself is unyielding. The economics demand it.
Agh, I thought it’d been a weirdly long time since I wrote one of these. With all the travel, I got bumped off my every-two-week schedule and then Google calendar didn’t remind me til now. Ah well. I have a lot to talk about.
First up, I wrote a section about different funding avenues I’m looking at for after the Kickstarter wraps up, decided it was too long, and broke it off into its own post here. They’re some good notes & are worth a read, imho.
Shiniest thing second: seeing Rose City Games’ excellent new branding got me thinkin’ about Crescent Loom’s logo. The current version is pretty abstract, and its meaning is not in any way obvious.
If people have to read a book to be able to parse the cover, the cover ain’t doin’ its job. So I asked myself: what’s the core message I want the packaging to send? My tagline sums it up pretty well, I think:
Stitch muscles. Weave neurons. Create life.
Of those, the most generally-compelling is the creation of life. The emotional journey of Crescent Loom is going to be bringing life back into a ruined world, so I threw together a few posters based on that and asked for feedback on the Portland Indie Game squad slack.
When I landed in New York, I was afraid. I expected endless crowds, giant rats, an arcane subway system, and to inevitably get mugged / hit by a runaway taxi. But it turns out it’s just another city filled with beautiful, busy people. The subway was super efficient and air-conditioned. And jeez, it drove home to me what a issue Portland has with homelessness; I see more street kids by walking down Hawthorne than I did my entire week-long trip there.
I was there for the Games For Change conference, a meeting about using games to do good in the world. This was preceded by a neuroscience virtual reality game jam (a “brain jam”, if you will), where neuroscientists were teamed up with VR developers to make a game in 48 hours.
Long story short, I was paired with a gold-star team, and we knocked it out of the park with this weird floating-lights-with-connections experience called Spark a Memory.
During the jam, one of my team members started talking to somebody at another table. They mentioned something about neuroscience and my ears perked up, but I kept working. Then: “…there’s a neuroscience game I backed on Kickstarter recently. It was called… Crescent Loom?”
What are the chances? It’s the first time I’ve run into a CL backer in the wild. It was awesome and made my day.
“I’ve added most of the systems,” I said to myself. “There’s not that much left to add to the basic engine, right? Make some objectives, polish the tutorial, iron out the physics bugs. It’s been about four months since the kickstarter, and I still have about four months left. This thing is in the bag!”
Oh, Wick of two weeks ago, you sweet summer child.
Based on feedback I got from the July 4th beta and juror feedback, the more-or-less unanimous response has been: “Great concept! I have no idea what I’m supposed to be doing, or how to do it!”
Also, looking at the my big-picture Trello board, I still have a lot of promises to fulfill.
So I rolled up my sleeves, ignored all of that, and added a particle engine + basic lighting effects!
Gotta do something for fun.
Oh! Also, I’m going to the Games for Change festival in NYC at the end of July! There’s this meetup before the festival where the organizers were trying to get neuroscientists to meet game designers to make educational games — my exact cup of tea basically made-to-order.
WHAT’S MORE, they’re gonna be giving me free admission to the festival and I’m going to be able to crash with friends in the city, so the whole thing isn’t going to break my bank account. So that’s nice.
Flashiest change this week: creatures laying and hatching from eggs! I added in a super-basic calorie-counting system that causes creatures to lay an egg if they get enough to eat:
Took a day or two to iron out the kinks. For example, I set eggs as a very calorie-rich meal (makes sense). So calorie-rich, in fact, that a creature got more calories by eating an egg than it took to lay one. In my infinite wisdom, I also neglected to prevent creatures from eating their own eggs.
I think you can see where this is going:
I also had to track down why creatures were hatching with developmental deformities:
It had something to do with me randomizing the angle of the creature when it hatched. Instead of diving into where in my many sins and cosins I had an error, I made it so all creatures just get born at angle = 0. Some fixes are easier than others.
There was also a bug where if an egg hatched while too close to another creature, the baby and that creature would get fused together in a big angry physics mess (I forgot to take a picture of it, sorry!). I fixed this by just making the eggs physically bigger, which ensured nothing was near their centers when they hatched.
But lo, behold life arising from inanimate matter! Babies start small and gradually grow as they eat things:
No big announcements this time around; I’ve mostly been working on polishing the user interface + adding content for the beta at the end of this month.
I finally got around to working on my list of cool body parts. I made a water jet that can be squeezed as an easy mode of propulsion (though it pulls you back a bit as it refills) and fins that can be activated to tense and turn (like holding an oar out sideways in a canoe):
In order to have a dynamic ecosystem, I need to be able to measure the performance of player creatures. Setting up a database + metrics to track creature stats was one of those things that takes a lot of backend work and has unimpressive visual results, but here ya go:
These are the average distances traveled, speed, parts that were chewed off, and calories gained from eating other animals/plants for three test creatures. Since edible plants didn’t exist yet, I had to add those too:
Those blue guys are plankton, which can act as a food source for herbivores. I still need to make a mouth that can efficiently scoop them up — I’m envisioning a whale-type creature that just swims along to gather them up. You can also see here my new ability to dynamically resize stuff, which is gonna allow creatures to eventually hatch from eggs as lil bebbez and slowly grow larger.
I also added a bit more variation to the maps; there’s now foreground and background rocks that can make little caves that creatures can hide in:
I bit off a lot to chew with this Kickstarter. I tried to limit things by breaking off the main “game” into the Explore Mode stretch goal (which we did not, unfortunately, hit) and have the core goal be just a functional creature+brain editor. But it’s a tough sell when I don’t have an easy answer for “but what do you do?”.
Even if I don’t have the design for what happens 100% nailed down, there’s gonna need to be a world for things to happen in. Up til now, I’ve been making the maps by drawing them by hand in Inkscape, which is a fairly labor-intensive process.
Enter procedural generation, a method of making maps (along with other things) by just setting up general rules and having the computer randomly put it together by following those rules. The biggest advantage to procedural generation is that once you set it up, you can make essentially unlimited unique content. The biggest disadvantage is that the vast majority of it is going to be less interesting than if you did it by hand.
But Crescent Loom’s focus is on the creatures, not the world. I just need somewhere to put them, and procedural generation excels at filling that specific need.
Long story short, importing Voronoi tessellations into Monkey X and setting up procedural generation required a lot of tedious math. Rather than subject you to that, here’s a whole buncha screenshots + commentary that I’ll share with you like they’re vacation photos:
Whoop, day late. I’m trying to stick to my every-other Monday schedule for these, but it slipped a bit this time.
Continued tweaking cell properties. It’s now possible to make chains of pacemakers inhibiting each other, which is a type of circuit you see all the time in nature:
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.