Gorgeous koi, twitchy frogs, and a lotta derp.

So, it’s been an exciting week! We still have a long way to go, but my spirits are buoyed by the fact that people have been making some really amazing creatures (though I think they’re *all* beautiful).

I’ll be sending out weekly digests of creatures, so if you wanna show the world what you can do, head on over to the demo and post a link or screenshot in the comments or the subreddit!

Creations:

(see them at the Kickstarter update)

What’s up/next:

My first and foremost concern is to keep getting the word out on CL. If we’re gonna pull this off, it’s gonna need a big boost. There’s so much noise out there (re: world on fire) that it’s been more of an uphill struggle than it would be in less interesting times.

However! I am happy to just keep working on development and engaging with people and teaching about hella cool neuroscience! Serenity to accept that which I cannot control, etc.

I’m going to be working on adding introductory levels that guide people through the basics of creating a creature. I uploaded a skeleton version of the first level last night; you just have to weave the brain of a pre-made creature and then control it to have it reach a beacon on the map.

Once I have a bit more of a structure in place, I’m going to load up a Greenlight campaign on Steam — hopefully by the end of this week.

Oh! And I spent like five hours yesterday adding font support to the game! Totally the best use of my time.

 

The storm before the storm…

Crescent Loom’s Kickstarter campaign launches tomorrow morning.

That is to say, ah, it’s been a busy couple days. Weeks. I don’t even know any more. @_@ I’m tired and sleep-deprived but it’s coming together and (despite the wretched political situation) I have a spark of hope and excitement in my heart.

This’ll be a bit of a pre-mortem.

  • Video editing has taken up the vast majority of my last few days. I dunno if I’m just really slow, but I think the final time-spent-producing / length-of-video ratio is around 10 hours per minute of footage. Blender, you’re wonderful, but I think we need some space. The result seems to be a video that is pretty but spends maybe more time with me excitedly talking about neurons than the game.
  • Reaching out to press is a skill I seriously need to work on. I spent days setting up a press kit for Crescent Loom and writing a press release for the launch of the campaign, then only ended up sending a dozen emails or so (rather than the hundred-plus that really excellent marketers send). I’ll keep the hustle going throughout the campaign, but it is usually a lot more effective to make those contacts ahead of time. Let’s call this an area of potential growth.
  • The alpha demo still has a few glitches (and the save-load feature isn’t quite at 100%) but is very pretty and gets the idea across. If kids picked up and enjoyed the really early tech demo back at OMSI, I think the current version will do just fine. I also made a subreddit as a place for people to share links to the creatures they create with the demo. We’ll see if that’s something that interests people.

  • I dropped the project goal from $20k to $16k after a night thoroughly researching the numbers on other people’s completed campaigns. A surprising takeaway for me was how little it seemed that reward tiers actually mattered — the biggest correlate for the campaign’s funding was simply how many people backed it (at least at the scale Crescent Loom; it separates out a in the megaprojects).
    • I’ll need about 700 people to make $16k, which means about 200 within the first 48 hours (you get about a third of your backers at the start and end dates and the rest spread out in the middle). The CL facebook page has 50 likes, which means that I probably have at least that many friends and family who’ll end up as backers, which is almost the right order of magnitude, at least. Fingers crossed.
    • Having a few solid high-end tiers add up fast, but really can only push you above the average for how many backers you have. As a consequence, I added a few $100+ tiers for an art project I’ve been wanting to do for a while: laser-etched Ramon y Cajal illustrated wooden panels.

Whatever happens in the next few days is gonna have a huge effect on the course of my life. Making an interactive neural circuit game has been a dream of mine for almost a half-decade. I believe that Crescent Loom has an enormous potential to teach and do some good in the world.

Fingers crossed, into the breach we go. See you on the other side!

 

Crescent Loom trailer

Putting together the video for Crescent Loom’s upcoming Kickstarter (IT’S IN THREE DAYS AAA); realized that I haven’t posted a link to the announcement trailer here yet. Here it is in all of its piano-youtube glory:

And here’s a sneak peak at the Blender timeline for the Kickstarter video:

Senses & Swimming

First round of public feedback

I showed Crescent Loom at OMSI’s mini maker faire and it got a fantastic reception. I was worried that the clunkiness of the demo would put people off, but the prospect of being able to build something drew more attention than I thought it would. What’s more, most of the attendees (and players!) were kids. “The minecraft generation”, somebody commented. I took a bunch of screenshots of people’s creations, which you can see here. This game is happening!


Swimming physics

Literally the night before the maker faire, I finally got the physics for swimming working. I found this guide on buoyancy and drag just in time. The final game will probably have both swimming and walking challenges, but movement for getting something to move underwater is a little simpler so I think I’m going to focus on that as the main environment.


Eyes

I added another sensor. It simply raycasts out from a point and activates the neuron if it hits anything. Crude, but more useful for reacting to the environment than the touch sensor.

21_sightpredator

 

23_anotherwiggler


To-do

  • Adding some features has broken the JSON save/load function. I have a feeling that’s going to be a continuing theme. I’d like to get a database set up so people can save (and share!) creatures online.
  • I need to make a pipeline for getting some better art ingame. Started poking around with importing .svg vector graphics to put on top of the shapes. Realized that it might be possible to have Inkscape double as a physics editor as well by just converting the saved shapes to Box2D. We’ll see.
  • More editor polish. Dragging around limbs, modifying muscle+tendon strengths and range of eye sensors, some axon pathfinder bugs.
  • Kickstarter videooooo. Been putting this off for too long. Need to finish my draft and start filming me talking and stuff from lab.

JSON files: my super dumb and technical week.

Whew. Sometimes game development requires spending a long time working on things that aren’t visible. I spend the better part of this week putting together the code to convert a box2d world and the objects that make up a creature (joints, muscles, hierarchy) into a json text string. Basically, something that can turn this:
creature
into this:

[[{"ID":1,"bodies":[2,6,14,22,30],"gravity":0,"joints":[38,41,44,47,50]},{"ID":2,"angle":0,"fxes":[4],"pos":3,"type":2},{"ID":3,"x":0,"y":0},{"ID":4,"dens":1,"fric":0.4,"rest":0.3,"shape":5},{"ID":5,"radius":1.5,"type":0},{"ID":6,"angle":2.148698261301898,"fxes":[8],"pos":7,"type":2},{"ID":7,"x":-1.5022363965040386,"y":2.3034291413061876},{"ID":8,"dens":1,"fric":0.4,"rest":0.3,"shape":9},{"ID":9,"type":1,"vertices":[10,11,12,13]},{"ID":10,"x":-1.25,"y":-0.5},{"ID":11,"x":1.25,"y":-0.5},{"ID":12,"x":1.25,"y":0.5},{"ID":13,"x":-1.25,"y":0.5},{"ID":14,"angle":5.819537691528989,"fxes":[16],"pos":15,"type":2},{"ID":15,"x":2.459674775249768,"y":-1.2298373876248851},{"ID":16,"dens":1,"fric":0.4,"rest":0.3,"shape":17},{"ID":17,"type":1,"vertices":[18,19,20,21]},{"ID":18,"x":-1.25,"y":-0.5},{"ID":19,"x":1.25,"y":-0.5},{"ID":20,"x":1.25,"y":0.5},{"ID":21,"x":-1.25,"y":0.5},{"ID":22,"angle":6.124751611729083,"fxes":[24],"pos":23,"type":2},{"ID":23,"x":4.92836381080626,"y":-1.624266653429484},{"ID":24,"dens":1,"fric":0.4,"rest":0.3,"shape":25},{"ID":25,"type":1,"vertices":[26,27,28,29]},{"ID":26,"x":-1.25,"y":-0.5},{"ID":27,"x":1.25,"y":-0.5},{"ID":28,"x":1.25,"y":0.5},{"ID":29,"x":-1.25,"y":0.5},{"ID":30,"angle":1.7284620311810566,"fxes":[32],"pos":31,"type":2},{"ID":31,"x":-1.8947696372115996,"y":4.772420363433075},{"ID":32,"dens":1,"fric":0.4,"rest":0.3,"shape":33},{"ID":33,"type":1,"vertices":[34,35,36,37]},{"ID":34,"x":-1.25,"y":-0.5},{"ID":35,"x":1.25,"y":-0.5},{"ID":36,"x":1.25,"y":0.5},{"ID":37,"x":-1.25,"y":0.5},{"ID":38,"anchor1":39,"anchor2":40,"body1":2,"body2":6,"collide":false,"limit":true,"lower":-0.7853981625,"type":1,"upper":0.7853981625},{"ID":39,"x":-0.7511181982520193,"y":1.1517145706530938},{"ID":40,"x":-0.7511181982520193,"y":1.1517145706530938},{"ID":41,"anchor1":42,"anchor2":43,"body1":2,"body2":14,"collide":false,"limit":true,"lower":-0.7853981625,"type":1,"upper":0.7853981625},{"ID":42,"x":1.229837387624884,"y":-0.6149186938124426},{"ID":43,"x":1.2298373876248838,"y":-0.6149186938124426},{"ID":44,"anchor1":45,"anchor2":46,"body1":14,"body2":22,"collide":false,"limit":true,"lower":-0.7853981625,"type":1,"upper":0.7853981625},{"ID":45,"x":3.6940192930280142,"y":-1.4270520205271846},{"ID":46,"x":3.6940192930280142,"y":-1.4270520205271846},{"ID":47,"anchor1":48,"anchor2":49,"body1":6,"body2":30,"collide":false,"limit":true,"lower":-0.7853981625,"type":1,"upper":0.7853981625},{"ID":48,"x":-1.6985030168578192,"y":3.5379247523696313},{"ID":49,"x":-1.6985030168578192,"y":3.5379247523696318},{"ID":50,"anchor1":51,"anchor2":52,"body1":30,"body2":22,"collide":false,"damping":1,"freq":1.5,"length":6,"type":3},{"ID":51,"x":-1.6666666666666687,"y":5.833333333333334},{"ID":52,"x":5.5333333333333306,"y":-1.5666666666666655}],[{"body":2,"branch":0,"parent":-1,"radius":1.5,"shape":0},{"body":6,"branch":1,"het":0.5,"parent":0,"shape":1,"wid":1.25},{"body":14,"branch":2,"het":0.5,"parent":0,"shape":1,"wid":1.25},{"body":22,"branch":3,"het":0.5,"parent":0,"shape":1,"wid":1.25},{"body":30,"branch":4,"het":0.5,"parent":0,"shape":1,"wid":1.25}],[{"damping0":1,"damping1":1,"hz0":1,"hz1":1,"joint":50,"len0":6,"len1":0}]]

And then back again. This is important because one of the major things I want people to be able to do during the kickstarter demo is save and share their created creatures via a link. At first, I thought I might be able to just push all that data through the URL bar (like ChipTone does), but I think I might have to instead learn how to set up a database that’ll store all that stuff. Unfortunately, most of what I know about databases comes from seeing Hollywood actors hit keyboards while pretending to hack them. Just another thing that I’ll have to learn, I guess.

Regarding the box2d->json converter, I was surprised that one didn’t already exist for Monkey X, the language I’m doing all this in. I’d like to release the module I made to do so once it’s a little more complete (e.g. right now it only supports the joint types I happen to be using). PROS: I’ve never released code for general use before, so that’s exciting.  CONS: people will know both my super messy code and my shame. We’ll see how it goes.

First look at the Creature Editor

I spent this weekend putting together a rough draft of the creature editor. Inspired by the drag-and-drop editors of Spore and Kerbal Space Program, I made a simple interface where pieces automatically snap onto the edges of others. Besides primitive shapes, I’m going to eventually add a number of pre-built “limbs” consisting of multiple shapes and muscles (and allow players to save their own). I also want to add an option for automatically mirroring your placements.

05_creatureeditor

There are a number of different joint types that can be used to attach shapes. Weld joints hold things in place (but not with absolute stiffness, I’ve learned — I may need to experiment with adding them just all be in the same body as different fixtures). Hinge  joints keep the two shapes attached at a single point, but allow them to bend some amount (right now they flop about freely, but I might try to make a springy version). Revolve joints will keep them touching, but freely orbit one another.

Also, I discovered that it would be pretty easy to make a live test mode where you can see the physics in action.

05_editorphysics

The next step was adding muscles. These will be the main points of control for your creature. They will tense when their controlling neuron fires, and relax otherwise. The editor will have a test “tense/relax all muscles” function so you can test the movement. The trick to making a beautiful, functional creature is setting up your body and brain so they work in harmony. Thus, behold! :

06_wellatleastcolorisworking

Ah, ehm, OK. Some physics troubles. Gimme a second…

Behold! :

07_camealongwaytoday

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