Wicklog 20: Exposing hidden mechanics, backwards compatibility, and Stugan

Stugan

I’m going to Sweden!! Stugan is a 2-month workshop for about 20 developers to focus on a goal while in a cabin out in the woods. They bring in mentors, and there’s a focus on collaboration & making friends.

So… it’s basically summer camp for game devs. 🙂

Part of the application was making a video that lays out my goals, which you can see here:

 

There’s… not a lot you can do in just two months of development, so I set my scope for just making a better introduction to the game. It’s a design I’ve been kicking around for a while: playing as a veterinarian and being presented with a series of creatures with some sort of physical or neural problem that you need to fix.

I see this setting as having a few key advantages:

  • It’s a natural framing device for a progression of puzzles; a novice vet is going to be handed creatures with simpler issues.
  • It will allow me to show completed creatures to give players a baseline for what they look like, in contrast to the current method of throwing people in with a whole bunch of tools and not much idea what they’re doing.
  • Being a vet is a suuuuper common “I want to be X when I grow up!” dream, but there haven’t been many games where you can be one. I suspect that it’ll be a strong hook for kids.

I’ll be leaving on June 22 and getting back around August 21, including 10 days after the workshop ends for just doing some hiking around the country. I am very, very happy to have been selected for this. Aghklhglbk ~

De-cluttered cell popup

I’ve been redesigning the system for interacting with neurons on the board every few months for the last year or so. The current iteration is to have a tooltip and little icons pop up when you mouse over them, like so:

The main drawback to this is that when there’s a lot of neurons, the view can get super cluttered — especially with that big blocky box of text covering everything above the cell:

What are you even mousing over here? It’s just madness.

So I bumped the label off to the side & made it more clear what each icon did, like so:

The key to making those orange tool labels strongly associated with their icon is that little slide animation they do. Coming out of the icon (as opposed to just fading in) emphasizes the attachment.

Detail Panels

Up til now, people have had to sorta take my word that there was lots of cool neuro stuff happening under Crescent Loom’s hood — so I’ve spent the last month or so making a details panel where you can actually watch ion channels open and close during action potentials.

While working on panel, I went through one of those design cascades where you change one thing, which makes you realize you need to change another, etc. It started when I finished the first draft of the panel mock-up:

There’s information all over the place! Plus, I never loved how the options menu popped out from the top bar. It worked fine for selecting new cells to place, but it was kind of weird that in order to change an option, you had to click on the neuron and then go back up to the top of the screen like you were placing a new one.

So I bumped the options menu into the details panel. And while I was at it, I restored the visual options for neurite and synapse types (which I’d killed last year in an effort to solve this same problem of too many menus in too many different places):

It was such a relief to get the option menus in one dedicated place instead of just being tacked-on to the tool bar. As it happened, I’d been struggling with the same problem with the body part menu, and the too-many-menus problem was currently way worse over there:

So I mocked up a corresponding “Limb Details Panel” that used the same format as the neuron’s:

Making this limb panel got me thinking: right now I only have the capability to have a single multiple-choice set of options for cells (e.g. “Fast”, “Medium”, or “Slow”), but it’d be useful to be able to have that numerical slider that limbs have (e.g. the Pitch slider in the above screenshot). Also, being able to independently modify multiple properties in the same cell instead of just choosing from a few presets seems like an obviously useful thing to be able to do, in retrospect. It’d look something like this:

Changing this kind of thing always requires some amount of under-the-hood reshuffling of code. However, in this case things are complicated by the specter of backwards compatibility; how do I add this feature without breaking all the creatures that have already been saved by the old system?

I’ll talk about the backwards compatibility issue more in the next section, but let’s just appreciate the progression of things here: we started with a new bit of UI to display the inner workings of neurons, bounced around consolidating and standardizing the options system, and am now faced with potentially jeopardizing the save data of all the creatures made so far. Turns out that computer games are highly interconnected, complicated beasts.

Backwards compatibility

I got stuck going down a very technical rabbit-hole for a week or so: optimizing creature file sizes. Here’s a small slice of what one currently looks like:

There’s a ton of room for improvement even in this small slice:

  • Replacing repeated labels like “bodyA” and “skipedges” for something shorter.
  • I’m storing the vertices for the graphic sprites AND the physical bodies, essentially doubling the size needed for each limb.
  • And possibly the biggest thing: reducing the length of all those decimal numbers! I really don’t need to be storing values to the 14th decimal (that’s the ten-trillionth place for those counting at home) — the 4th should be more than sufficient.

Cutting out duplicate information, changing labels, and setting a fixed decimal length took some work, but once again the really tricky part is figuring out what to do with all the previously-saved creatures. Do I abandon them? Do I write some kind of custom converter to translate them all into the new format? Do I let my loading functions just build up with a bunch of legacy options as I continue making changes over time?

Finding some way to preserve the current creatures will take work, and will ultimately be rendered obsolete anyway as I refine the format even more in the future. I am sure that I will inevitably someday hit a snag that will require just wiping out all the current data, so what’s the point in preserving it for now? This has already happened once; the hundreds of creatures made with the first Kickstarter demo were impossible to keep after I switched from basic circles and squares to complex polygons

Then again, it feel bad to pour hours into a creation and then have it just thrown away, so I don’t want deletions to just become a regular thing. I stopped playing Starbound after they left early access and wiped out my 100+ hours of building and exploration.

So I think I’ll try to compromise. I’ll preserve the current creatures for the time being, but set expectations by adding a “These will someday be deleted!” note to the save window.

MCCC visit

I mentioned back in March that I’d be demoing CL at an after-school program, and just got the pictures back today!

It struck me how similar running the session for middle-schoolers was to the time I ran it for undergraduates. People respond to similar incentives (“make a creature that can win a race!”) and stumble into the same pitfalls (initially making something over-complicated).

Making a game that can work in the classroom is not for the faint-of-heart, but seeing kids have that moment of understanding, collaborate, and excitedly build cool stuff gives me hope that CL might be able to make it as a tool for educators.

Thanks for reading!

Wick

Wicklog 18: Minecraft & Language Change

Minefaire

At my very first showing of Crescent Loom, a child walked up to my booth and said, “Is this Minecraft?”.

“Not quite!”, I replied, launching into my pitch. “It’s a game where you can build a creature and –”

But the child had wordlessly turned and marched away. He knew what he wanted, and was on a mission. I thought it was hilarious.

This last weekend, I brought Crescent Loom to Minefaire, a convention celebrating Minecraft. It was a chance for me to finally turn the tables on that child from so long ago.

It was by far the youngest group of people to play Crescent Loom so far, and I finally remembered to take pictures!

Continue reading

Wicklog 17: New Trailer & Orientation Sensor

For the indie fund application, I finally cut together the first trailer since before the Kickstarter. It’s satisfying to look back and see how much I’ve refined my ability to pitch the game:

For your reference, here’s the first one, pre-Kickstarter:

Specific improvements:

  • Shorter is better! I kept the length around one and a half minutes. Choosing a short music track helped force me to cut it down.
  • Quality recording and editing software! It was so worth dropping $60 on a polished editor to avoid having to wrangle with encoding formats in Blender.
  • Crescent Loom’s graphics have straight-up improved. Eyecandy isn’t just for fun; it’s a real investment in your future marketing efforts.

As far as the indie fund application goes, no dice on emailing their public-facing address. Turns out, as usual, you gotta network and approach people individually — or have them approach you. Private fundraising is still new to me, but since I’m now living in the venture-capital-crazy Bay Area I have a lot of resources I can tap into to learn.

Orientation Sensor

One of the problems making creatures for races is that they’ll frequently get pointed in the wrong direction and get stuck on the walls, like so:

Real animals stay oriented with otoliths. They’re a bunch of cells in a membrane that physically deform when they get tilted or moved. By having patches of them in vertical and horizontal rings, we’re able to detect changes in the orientation of our heads:

An advantage of working in a 2D space is that I can simplify the system to only work on one plane: which angle the creature is currently facing on the screen. Here it is in action: a creature that I pull downwards is able to quickly straighten itself back out:

Implementing this required me to re-write a good chunk of the brain interface code because the sensor cells needed to be placed and moved as a single unit for organization’s sake:

I still need to do some graphical work to make it more clear where the sensor is & what angle is being measured, but this should allow people to dramatically improve the navigational capabilities of their creatures.

(This has only been added to the html5 and PC versions; as usual, mac & linux builds are gonna lag behind.)

Wicklog #16: Avenues for ca$h, school visit, GUI improvements

Govt Grant:

Turns out asking for free money from the government is really hard.

The National Science Foundation has a program called the Small Business Innovation Research (SBIR) grant, whose “funding is intended to allow recipients to bring innovative new products and services to market that drive the commercial success of the small business.” Basically, if you’re working on some kind of new technology that advances scientific advancement or education, they can provide $225,000 (that you don’t have to pay back!) to develop it.

Obviously, this sort of thing is hella competitive and requires a lot of writing to convince them that you have a project that’s worth it. I spent the entire month of November building the grant from the ground up — fifteen pages of business plans, societal benefit justifications, market projections, budgets, and development milestones and timelines.

I don’t think I’ve ever done so much writing in such a short period of time, and had to get up to speed in areas I had no experience in. How the heck to you make a market projection? How do you calculate the cost of employee benefits?  What organizations do you need to register your business with to interact with the government?

I had to ask for help, which can still be really hard for me. Drawing on Kickstarter backers, Portland devs, and the Reed community, I found people to help proofread, write letters of support, and edit the manuscript. And even with all this, I probably wouldn’t have been able to get it together if a developer friend I made through Playful Oasis hadn’t sent me a copy of her recently-successful application.

The difficulty of getting an SBIR grant weighed me down; what was the chances that they’d actually fund me? What if I was asking for all this help from people for a doomed venture? I had to make a rule to myself to not indulge in negative self-talk; I just had to press forward and focus on what I could learn about the process. I was gonna submit something by the deadline, gosh darn it.

And hey! The final product was actually pretty dang good, imho. It’s technically proprietary information so I don’t think I’m gonna publicly post the whole thing. However, if you’re working on a similar grant, I’d be happy to pay it forward and share it in private by email.

There’s a 4-6 month turnaround on these things, so now we’re just at the point where I’ve sent this off into the universe and gotta move on.

Other ca$h avenues:

  • Applied for a dreamy job at Supergiant Games (Bastion/Transistor/Pyre). They’re an absolutely fantastic independent studio that happened to have a job opening that I’d love and fits my skills to a tee. If I started working with them, I’d put CL development on hold/weekend status.
  • Gonna apply to the indie fund, a group of successful developers who invest in new developers. Being privately backed would add some constraints, which I’ve talked about, but I’m moving towards a commercial release anyway so I think the funding and connections would make it worthwhile.
  • There’s a handful of more government grants out there that I’m gonna keep exploring and applying for as their deadlines approach. I’ll be glad to have done this first one.

School visit:

This last week, I visited a high school in D.C. to informally demo Crescent Loom with students. A couple takeaways:

  • Needs a lot more tutorials, still.
  • Different people approach the game in very different ways. Some just click around to see what happens, others get the basic hang of things and then try to design for some self-made objective.
  • Everybody loves it when you lay and egg and then your baby eats you.
  • It’s actually a pretty flexible tool; you can use it to show different body designs, ecological interactions, and how different environments call for different strategies.

Changelog:

When I don’t know what to do with myself in situations, I just pop open my laptop and work on small features and bits of polish.

First, the difficulty in getting all the students’ computers set up with the game prompted me to make an installer for the game, now offered as an alternate windows download on itch.io.

Second, a feature that helps load creatures by filtering as you type:

Third, a new menu that lets you set up races:

Forth, painting + lights now listens to symmetry mode:

Finally, I’ve started work on an orientation sensor, with the idea that creatures will be able to use it to stay level. It still needs some significant work to be useful. You can see it here activate when the creature is pointing straight to the right (watch the graph in the bottom-right):

I think that it would be more useful to have an organ that detects the current orientation of the creature, instead of having just a single neuron activate at a set angle. So you’d place your orientation sensor on your creature (sort of like an “inner ear”) and array of neurons like this would show up in the brain:

But this will require some substantial work under-the-hood, e.g. linking multiple neurons so that they all get moved together, having a single organ create and keep track of them, and finding an initial open location for all of them. So it’s unlikely I’ll find the time to get all that set up until I’m a little more financially secure.

Gameplay experience survey! (to help me get grants)

Turns out a lot of government grants want proof that people are interested in your project, so they’re asking me for testimonials. If you have ~4 minutes, could you take this survey?

 [ https://www.surveymonkey.com/r/3NKZ57V ]

 


Also, a couple Kickstarter plugs!

First up is NeuroBytes, which just launched today.

They’re working on the exact same problem as Crescent Loom: how to make neuroscience tangible? Only instead of with a video game, they’re doing it through making physical networks of circuit-board neurons.

Side-note: Zach Fredin (one of the creators) looks eerily like Tom Hanks.

“…the entire network is built from relatively simple elements whose complexity stems from their interconnectedness.”

Second is Nimbatus by my friends at Stray Fawn Studios, which already exceeded its funding goal in the week it took me to send this out.

If you like the building-stuff part of Crescent Loom but want A LOT more lasers, Nimbatus has gotcha covered. You can also set up some pretty sophisticated triggers to make them be able to navigate autonomously.

Best!
Wick

Wicklog #14 – Surveys + final checklist

*** SURVEYS SENT, PLEASE FILL OUT YOUR SURVEYS ***

For backers with survivor/nemesis memories, I have the recording studio booked for next week. In order to get your memory voice-acted, you must fill out your survey by the end of this Saturday (Oct 14).

(if you need some inspiration, check out this sample of what people have submitted so far. They’re SO GOOD!)

Ditto with stickers; I want to start mailing them out, but only about half of y’all who get them have responded. If you haven’t responded by Saturday, their delivery will be significantly delayed until I get a chance to do another mass-mailing.

Laser Delay

In the spirit of being-willing-to-admit-to-falling-behind, I’ve had scheduling problems with getting time on a laser, and am going to substantially miss my Nov 1st estimate for the Ramón y Cajal etchings. My new goal is to get them etched and shipped by Dec 1st — there’s just too much going on this last month, and this is the thing that gave out.

But here is the finished digital draft vs the original art! I’m going to etch at two laser powers; the darker shapes will be burnt deeper into the wood.

 

Final Checklist

We’re in the final countdown. This is a list of my campaign promises to have done by November 1st:

[X] Game engine: brain + body editor 
[X] Basic gameplay: sandbox populated by online creatures (bonus: race mode!)
[ ] Platforms: Win/Mac/Linux
[ ] Backer content: cryopods, voice-acting, creature collaborations
[ ] Physical rewards: stickers & etchings

I’ll be spending the last couple weeks getting it working on Mac/Linux (I got a Mac Mini off of craigslist last night!), adding the backer content (from those surveys you totally filled out), and shipping the stickers.

A difference between this and most other crowdfunding campaigns for video games is that I still don’t consider Crescent Loom “done”. I’ll be entering a phase of open development where I continue to work on it as time and funding allow. This Kickstarter was always meant to do just that: kick-start the game.

I’m pleased with how this year has gone. As far as I know, this is the very first biologically-realistic neural circuit simulator that can be used without technical training in existence.

Oh, and to top this all off, the cookie has crumbled and I’ll be moving out of Oregon (for the first time ever! o_o) and down to West Oakland… also on November 1st. Woop woop!

 

Wicklog #13 – Cosmic jokes, new limbs, and a sense of scale

OMSI mini-maker fair one-year anniversary

It can get lonely working on something by yourself for a year, so the external-validation boost from showcases is always a welcome punctuation to the process. I can’t think of a more perfect way to get closure on a year of work than how this weekend went.

I’ve heard some skepticism that Crescent Loom would be accessible to younger audiences, that the process of weaving a functional brain would be too complicated for them. This weekend thoroughly vanquished that concern. This weekend, I saw players with a curiosity and willingness to experiment that led them to make creatures far more sophisticated than those made by older crowds.

Another lesson that I learned is that different people come to the game looking for different things. Kids that could barely hold a mouse had a blast just smashing creatures together like action figures.

My absolute favorite scene from the entire weekend was from the very last visitors to the booth, a father & son. The kid was having a lot of fun crushing/trapping creatures against walls. The father leaned down and started pointing at the brain, “Now, these are little bits of electricity that are being passed around-”

At which point the child just screamed, “I WANNA EAT IT!”

I almost knocked into a bystander from bowling over in laughter. Sometimes the universe just gives you little clear-cut cosmic jokes. I’ve been building up this complicated game with all these words and sciences and systems, and been trying to clumsily explain what’s going on, but people are going to come into it with very simple desires and an understanding based in their earthly humanity.

New Stuff

I wanted something exciting to make some gifs of, so I spent some time fixing and adding body parts:

1. Harpoon! Catch prey from a distance or just swing around like spider-man.

2. Sucker! Anchor to the ground or hitch rides on unsuspecting bystanders.

3. An inflatable balloon that lets you control the buoyancy of the creature / bounce along the ocean floor (pay no mind to the floating boulders):

4. A symmetry tool, finally. Making larger creatures that can swim straight suddenly got a lot easier:

5. I added the ability to pull specific types of creatures from the server. This allows me to automatically organize and add creatures by how they perform, which is key if I want to eventually set up some kind of natural selection (e.g. creatures that win races will show up in more races).

Cryopods & Creature Scale

As per the Kickstarter reward, I made a cryopod object that pops up the name of the person sleeping inside when you touch it. However, a friend pointed out that having a human-sized reference implies a scale for the creatures. Up till now, I’ve left it ambiguous, but now I have to choose. Are the creatures small, pet-sized beasties…

…or are they huge, tentacle’d monsters?

Wicklog #12 – Gameplay objectives, OMSI, and reward status update

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!

OMSI Mini Maker Faire

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!

Then:

Now:

Not too bad for a year of work. 🙂

Continue reading

How funding sources dictate design

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.

Continue reading

Wicklog #11 – Book-covers, narrative framing, and races.

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.

Box Art

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.

Continue reading

By Wick Perry | © 2018 Wickworks
Proud to be a member of PIGsquad and Playful Oasis.