Posts
-
The Jumping Jouster
I’ve become quite fond of the Godot game engine. Something about the Godot scene hierarchy implementation clicks with my brain a lot more than Unity. Years ago, when I first started making my own games and prototypes, I worked a lot with Cocos2d, primarily in Objective-C. Godot seems similar to Cocos2d and the ease of using GDScript makes it a great tool for prototyping.
Each year for Christmas, my in-laws give me a tear-off calendar of New Yorker cartoons. When I saw this March 19th entry, by Seth Fleishman, it immediately struck me that the concept would make a fun simple game.
So, for the past several months, in my spare time, I’ve been poking away at The Jumping Jouster. It’s a game where you joust and pole vault. A little more poking and I’ll release it for all to play. Incidentally, it’s difficult to get screenshots of the action in the game, since playing requires repeated pressing of several keys on the keyboard. Here’s a look, though:
One learning from the project, so far, has been the degree to which I need to develop procedural systems for the game. For example, when I started the project, I imagined there would be grass levels, snow levels, and mud levels, each with different gameplay dynamics. That would have required the creation of environmental art for each of those levels. I completed the snow and mud terrain elements and implemented a system that would create terrain zones and transition between them. I realized, however, that different gameplay dynamics likely would only increase player frustration with a game that already is a bit challenging. Eventually, I stripped out the other zones and the game now only uses the grass zone.
In hindsight, I should have focused on the core gameplay first before working on expansions to it. This, of course, is a common trap in game development, not only for hobby projects, but also for large studios. When you function as your own artist, producer, programmer, and QA team, it’s easy to get lost in the conflicts of interest and spend time spinning your wheels on features unimportant to core gameplay. Lesson learned for next time! (I hope!)
I’ll post a followup when its available.
-
Human Skeleton Graph Data Model
I recently participated (remotely) in the IT University of Copenhagen’s Advanced Topics in Procedural Generation class. While I didn’t need credit, I was inspired to work on a project related to an idea I’ve had for building a simulation of a field hospital following an earthquake. This is based on experiences I had working in Haiti following the 2010 earthquake. As part of that simulation idea, I always hoped to have a procedural injury model. There are lots of orthopaedic injuries during earthquakes, so it made sense to use a graph model of the human skeleton in the modeling of injuries.
After searching a while, I couldn’t find what I needed with regards to data structure, so I decided to create it myself.
You can download it from this repository.
In the event you have an idea that could benefit from such a data model, feel free to access and use it as you please!
-
Santa Overslept
During a hack day at work, I made a simple procedurally generated Santa present-delivery game. More than anything, the project was a chance for me to learn the Godot game engine and to discover a workflow for drawing game assets on an iPad. I settled on using Affinity Designer after struggling a bit with Autodesk Sketchbook. The ability to combine vector and raster graphics in a single document and to save to iCloud for export and editing on my Mac is what eventually sold me on Affinity Designer.
You can download and play it for free on itch.io.
-
Generative Ships Lecture Tool
I was invited to give a lecture at North Carolina State University on procedural generation of content in games. Among other things, I wanted to discuss systems and constraints and thought it would be fun to build a little Processing sketch that would allow students to explore some constraint systems.
Meanwhile, I had been nerding out on Rob Turpin’s hand-drawn spaceships, as seen here. Check out his Twitter for more.
The Processing sketch I created loosely follows his design grammar. Frankly, had I decided upon the idea more than a few hours before the lecture, I would have spent more time trying to mimic some of the elements he includes in his work. Nevertheless, the result was a tool that served the purpose of the lecture. You can download it from this Github repository if you’d like to play with it yourself.
Here are a few screens of it.
-
Jimmy is Sick
Simple p5.js game about spreading disease. Click here play. It might work on mobile devices and tablets. Needs vomit noises.
My kids are begging me to turn this into an iPad game, for some reason. Let’s see if I get motivated. :)
-
p5.js cartoon generator
This p5.js sketch uses a genetic algorithm to generate cartoons. Made for the Kadenze Nature of Code class. Click here to see it in action. Find the code here.
The original plan was for the critic (head on the side when you click through to the app) to change facial expressions depending on what you hovered over on the screen. In effect, it would have been a bit of a game, where you would click preferred images to try to converge on an optimal target as quickly as possible. In reality, I never implemented the facial expressions. While the sketch still uses the idea of the critic having a preference, that preference is not displayed to the user and creates some confusion as to why the cartoons converge on any particular style or language.
-
Eyeo DepthKit Workshop
I attended the DepthKit tutorial at the Eyeo Festival. Pretty awesome technology. The class worked together to create short clips of everybody dancing, which then were made available for individual projects. Here are the results of my tinkering.
-
p5.js image quilting
This is a p5.js implementation of the Efros / Freeman paper from 2001. Starting with a small sample texture, knit samples of it together to create a larger seamless texture.
Click here to see it in action. Find the code here.
-
Citizen Spelunky
What do you do when your entire family loves Spelunky and you want to memorialize that? Make a fan film, of course! Here’s Citizen Spelunky, a mashup of Citizen Kane and Spelunky.
Citizen Spelunky from Clay Heaton on Vimeo.
-
Star Wars Episode V.V
Snow day! No school! Let’s make a Star Wars movie!
Star Wars Episode V.V from Clay Heaton on Vimeo.
-
Gypsy and the Hidden Treasure
So, my older daughter wanted to make a movie. We came up with an idea, shot the movie, edited it, and had our viewing all in a single afternoon. I present to you Gypsy and the Hidden Treasure:
-
Blomster: A Genetic Algorithm of Flowers
Optimization class wasn’t working for me… I was bored, but the idea of working on genetic algorithms was appealing. To teach myself the concepts, I created a Processing sketch that I called Blomster (Norwegian for flower).
When you launch the sketch, a target flower is chosen and then an algorithm breeds generations of flowers to optimize towards the target. Once the convergence threshold is crossed, generational best flowers are displayed on a grid, with the target in the middle.
Note that there are a number of variables you can set in the
blomster.pde
file. Eventually, I had several prints made from output from this sketch. It was a lot of fun to build!