Technical Artist Oliver Davies and Programmer Richard Hale have shared the workflow behind Crystal Samurai, the third-place winner of Houdini Game Jam 2022, and spoke about level generation and asset creation in Houdini.
80.lv: Please introduce yourselves to our readers. Where did you study? What companies have you worked for?
Oliver Davies, Technical Artist: Hi, I’m Oliver Davies. I am a 28-year-old Software Engineer turned Technical Artist. I graduated from UC Santa Cruz in 2018 with a B.S. in Computer Science. I worked in software throughout my college years, starting in 2013. My original roles and skills focused entirely on the Unity game engine and the nascent AR field.
Recently, I’ve been working with digital and physical set extension, projection mapping, live interactive installations, and games. I’ve worked with groups such as Light Harvest, Graphite, LuaSol, and Idea Fab Labs, among others. I’ve recently been focusing on moving further into the game industry. I was on the team that built Crystal Samurai, a small bullet hell game where the player faces off against bosses in the form of massive dice.
Richard Hale, Programmer: Hi, I’m Richard Hale, I attended Arizona State University back in 2010. I worked as a machine operator, milling slides and receivers for Ruger. Then as a designer, drafting parts for a 3D printing company. Recently, I’ve been writing code for a living, converting LiDAR scans into Height Maps and using OpenCV to detect and orient/align segmented captures using aruco markers.
80.lv: How did your Houdini path begin? What was your first experiment? What motivated you in the beginning?
Oliver Davies: I started experimenting with Houdini in 2019 after a friend excitedly explained its procedural and non-destructive nature. From a Software Engineers' perspective, Houdini is an excellent bridge into the technical art realm. Programmatically being able to define recipes (HDAs) that solve artistic problems in a modular and reusable fashion, similar to loosely coupled well-maintained code, is a joy.
My first Houdini project was the stereotypical pipe tool. Being able to draw a few curves and presto, a usable pipe asset, revolutionized how I think about asset creation. The workflow kept me fascinated, and as I became more knowledgeable, the possibilities multiplied. I’ve now clocked over two thousand hours of Houdini usage, according to Steam, and I am not slowing down.
Richard Hale: In late 2017, I saw river generators by Ben Schrijvers and Vladimir Lopatin from Guerrilla games. And also an independent version made by Simon Schreibt. I was so impressed and instantly wanted to make my own river generator. But first, I had to figure out how to do the basic things they were talking about. In the beginning, I felt like I was making lots of progress in getting closer to their results and that was encouraging.
The Crystal Samurai Project
80.lv: How did you get started with Crystal Samurai? What was the idea? What core gameplay mechanics did you have in mind?
Our core mechanics were simple: You travel between arenas where you battle giant dice by firing projectiles, reflecting or dashing around projectiles, and breaking down shields. The classic bullet hell, with a focus on bosses. We put a lot of time into the aesthetic and the feel of the mechanics, which served us well in the end but could have been balanced better with thematic improvements.
Crystal Samurai was one of those projects where you figure it out as you go. We started the Jam three days late and neither of us had particularly strong opinions on the gameplay mechanics. We had been considering creating a project for the Jam, but both were hesitant to go it alone. We found each other through the Houdini Discord and decided to give it a go.
When "Against All Odds" was announced as the theme, we went with the idea of fighting giant dice. Feeling the pressure of the Jam's deadline, we ran with this concept without much further ideation. We drew a circle with a dice boss in the middle and decided, “I guess we’re doing a bullet hell”.
Along the way, we had some ideas of the dice faces on the enemy boss having different responses. Hitting the wrong face would trigger a debuff or strengthen the enemy's firepower. This gameplay mechanic would have helped us fulfill the theme of the jam better, but also seemed like one of the later features to prioritize. We did an acceptable job prioritizing the essential features first but did score lower by omitting some of the more thematic features.
Generating Levels for the Game
80.lv: Could you discuss your level generation workflow? What was the process?
As the project progressed, it became increasingly clear that developing a procedural level geometry workflow would greatly improve the look and feel of the game. We experimented with a curves-inside-Houdini workflow but found we wanted to art-direct with either vector (SVG) or image inputs (PNG). We eventually chose to derive the wall and floor geometry from an input image because it offered a lot of control.
We felt defining the level shape explicitly provided a better player experience considering the time constraints. This also leveraged our love of making vector art and provided an excuse to use Graphite and Cuttle, two relatively unknown tools we like. Our workflow allowed us to iterate quickly on ideas within our limited time and generate geometry that looked great.
We experimented and used multiple level generation workflows, some of which didn’t make it due to time limits. Here are some of the other generative assets:
And also we used SideFX Labs' tools to bake a physics sim to a skeletal mesh but decided not to use it for the final project:
80.lv: What game models did you create with Houdini? Could you share some details on the workflow?
We created roughly 90% of the on-screen game assets with Houdini, along with many that didn’t make it on screen. Our bosses, level geometry, shields, and hero props were all created with Houdini. Our bosses were generated by using platonic solids with rounded edges, pips on the faces, and some generative designs layered on to make them more visually interesting.
For the shields, we both created a Houdini solution. It is interesting to see how our approaches differed, here are the two node trees side by side:
80.lv: You mentioned Houdini helps you speed up your workflow. What are its main advantages in your opinion?
Rapidly iterating with a system built in Houdini allows for a lot of emergent design/content. For example, we realized our level generation tool could embed intricate patterns along the ground, which compounded well with our outline system in Unity. We used Houdini's vertex coloring to control how the outlines in our scenes were placed, which gave us artistic power without surface painting or manual setup. Anytime we needed to modify a model or asset, it was a quick tweak of a node tree and back to focusing on the game.
80.lv: Most people are still scared of getting started with Houdini. What would be your piece of advice for them?
Oliver Davies: The learning curve is steep but worth it. I recommend watching the Simon Houdini YouTube channel and choosing a tutorial that engages you. Keep your curiosity alive even if it is frustrating. Set yourself a goal to make something and then review how well it went. Didn’t go well? Try to think of another way of approaching the problem by breaking it into smaller steps.
Solving problems in Houdini is similar to creating a reusable recipe that has clearly defined steps. In another tooling, the destructive workflows are easier to think about, the recipe isn’t all laid out in front of you, it just happens as you go along. That’s fine until you need to change the first operation or repurpose your tool. Ctrl-Z can’t always save you. That’s where Houdini shines.
Richard Hale: I like the updates, the geometry spreadsheet, and the flexibility. Plus I think the SideFX team is doing phenomenal work, and the updates are much appreciated. If you’re getting started, I am envious that this is where you could begin.
80.lv: How much time did it take to finish the project? What were the main challenges?
We spent about four days working on Crystal Samurai. Both of us were working our normal day jobs during that week, so it was definitely a time crunch. We managed to find time in our evenings each day and pulled some long hours, it was definitely worth it!