GHC v0.924: Pets! Mecha! Easier scrolling!

It’s two releases for the price of one! I was just preparing to release v0.923 when two fairly serious but easy to fix bug reports came in. So, we skip straight past v0.923 on to v0.924. You can get it from all the usual places- Steam, itch.io, Patreon, and GitHub.

The big change this time around is the addition of pets. Characters who know Wildcraft at rank 5 or more can now call an animal companion. You can only have one active animal companion per character at a time. I have not yet put a limit on how many animals you can have in your FieldHQ… but if you have too many, 1) you have only yourself to blame, and 2) you can dismiss the companions back to the wild.

I have also overhauled the map navigation. WASD now works to scroll the map display, and you can turn off mouse scrolling if you want to. While I was at it I moved all (hopefully) the key definitions to the config file so you can remap anything. In a future release I will add in-game key remapping but now is not that day.

Two new mecha have been added: the Luna II and the Puma. Tons of bugs have been fixed. As usual, try it out and let me know what you think.

GHC v0.920: Bear Bastard’s Mecha Camp

Version 0.920 of GearHead Caramel has just been released. You can get it from all the usual places- Steam, itch.io, Patreon, and GitHub.

The big addition this time around is a new tutorial- Bear Bastard’s Mecha Camp. Learn everything you need to know about the game (mostly) from one of Earth’s most notorious bandits (reformed, mostly). It’s a short, fun adventure that walks you through all of the controls for exploration and combat. Plus, you get to spend the night in a wooden cabin on the edge of the dead zone. A cabin that may be infested with rats. Or worse. A good time will be had by all.

This release also adds jumping- mecha with jump jets can now use them to instantly leap over terrain. In addition, mecha designs that were jump-capable in previous GearHead games have been updated so they are jump-capable now (the Haiho, Phoenix, Trailblazer, and Zerosaiko). Note that this change is not retroactively applied to mecha you already own; you might want to hold onto those old versions, in case they become collector’s items.

GHC Interview in Game*Spark

I have been interviewed by Game*Spark in Japan about GearHead Caramel. I can’t read Japanese, but the Google translated version of my answers seems pretty accurate.

GearHead Caramel v0.910: Fight and Flight

Version 0.910 of GearHead Caramel has just been released. You can get it from all the usual places- Steam, itch.io, Patreon, and GitHub. The big changes with v0.910 are the addition of flying mecha and a complete overhaul of the combat interface. The first two flyers to be featured are the Wraith and the Neko, though you can of course make as many as you want in the mecha editor. The combat interface now features an action clock so you can see exactly how much of your precious time any given action is going to take. The movement UI has been changed to match the style of the other combat interfaces. In addition, there’s now a counter for multi-target actions that should make it more clear what you’re doing.

As usual, try it out and let me know what you think.

GearHead Caramel v0.903 is Released and Steamed

GearHead Caramel v0.903 has just been released. It’s available from all the regular places- itch.io, Patreon, GitHub, and now Steam. Hooray! You know how that say that in the week before releasing on Steam dozens of old bugs that you have never seen before will suddenly show up? I can now confirm that this is absolutely true. To help with future bugs I’ve added an exception logging system. This will record bugs as they happen, which should make finding and fixing them much easier.

The big changes this time around include replacing the old Mecha Tarot system with the new Challenge/Resource system; increased stability; prettier + more varied deadzone villages; improved Start Campaign and Load Campaign menus; tons of bug fixes plus a new error logging system; improved info displays for mecha, beings, and clothing; lancemates keep their colors when switching mecha (unless you turn this feature off); more personal scale equipment; and some new old friends from GearHead Arena.

As usual, try it out and let me know what you think.

GearHead Caramel Coming Soon on Steam

The GearHead Caramel “Coming Soon” page is now up on Steam. If you have a Steam account, please wishlist the game so that when it releases on the 21st it’ll appear higher in the rankings. The more money I can make on GearHead Caramel, the more time I can work on GearHead Caramel, and the less time I need to hustle for private lessons and academic copy editing jobs (if you are an academic in need of proofreading or copy editing, contact me).

Procedural Narrative: Sorcery and Magic

I’d like to talk for a bit about procedural narrative, which has been an important feature (probably the central feature) of the GearHead series since its inception. But first, a song.

By the time this gets to you the language will be nonsense,

words all lose their meaning by the time they leave the tongue.

Sometimes ain’t about making the whole world understand you;

words just speak for moments like the light speaks for the sun.

The Bourbon tabernacle choir, “by the time”

Procedural narration is the use of a computer program to help make up a story. According to at least two separate people, GearHead Arena (2002) was the first game to successfully incorporate procedural narrative (I’m sure I could find a third person if I asked around on Twitter). The effect of procedural narration is that no two playthroughs of GearHead Arena are the same. Different events will happen; characters who were your friend one time around might be your enemy next time. From the player’s perspective each story is both unique and coherent.

The definition of procedural narrative that I gave in the previous paragraph is a bit broad so I’m going to split it in two. And, being an English professor, I’m going to use a metaphor to do it. Most people approach procedural narrative as a matter of technology. They look to AI projects like GPT-3 for an algorithm that can produce meaningful texts. I’m using “text” here in the broad way that English professors use the word- in this case, the story of a computer game can be a text. This technique can produce interesting and useful results. The game AI Dungeon, for instance, is a simulated game master that creates a story in response to user actions. I’m going to refer to this technique as sorcery. It involves calling upon powerful algorithms that the programmer can never fully understand and has limited direct control over (in this case, a trained AI system). It’s not unlike a sorcerer calling upon a genie (daemons, alas, are a completely different type of software).

I don’t do sorcery. I do magic.

As everybody knows, or at least as everybody who studied literary criticism in the mid 90s knows, the meaning of a text is not contained entirely within the text. Instead, meaning-making is an active process performed by the receiver of a text. When you read a book your brain reconstructs the meaning not just from the words on the page, but also from your cultural background, your preconceptions, your dialect, and a million other factors that affect how you see the world. This is one reason why different people can have different interpretations of a text. It’s also a reason why texts from different times and places can be difficult to understand, or may have a different meaning here and now than was originally intended by the author. The same is true of computer games.

GearHead Arena uses a technique that is now pretty standard for procedural narrative. The story is constructed from a series of plot fragments, each of which describe something that could happen. The plot fragments themselves are mostly self-contained; they don’t need to communicate with other plot fragments. The story generator strings the plot fragments together such that each fragment logically follows from the fragment before it. It doesn’t worry about the story as a whole just as long as each individual transition makes sense. It is the player’s brain that constructs a coherent story from these disparate pieces. This is magic. It’s an illusion- trickery!- but an illusion that relies on the willing participation of the audience. The computer isn’t really creating a story; it’s just sorting bricks according to a set of mechanical rules. But that’s not what the player sees. The player sees a living world, a place they can interact with and change. What they don’t realize is that they are the co-creator of this world.

The whole thing is very similar to Scott McCloud’s theory of how closure allows a reader to see two comics panels and combine them into a single story.

McCloud, Scott, 1960-. Understanding Comics : the Invisible Art. New York :HarperPerennial, 1994.

It is not about the technology; it is about the performance. That’s the difference between sorcery and magic. Almost every time I’ve explained GearHead’s procedural narrative algorithms to a programmer they’ve been amazed (sometimes disillusioned) by the simplicity. You can read more about Markov Chains and Propp’s Ratchet in other posts on this blog.

GearHead Caramel, the latest game in the GearHead series, uses more advanced techniques to string plot fragments together but it’s still just another magic trick. I only hope that you continue to enjoy my performance.

GearHead Caramel v0.830: The Mystery Mecha

GearHead Caramel v0.830 has just been released. There have been a lot of changes under the hood and to the Scenario Creator, but the most visible change for most players will be the addition of Mystery Challenges: collect clues to solve randomly generated puzzles. You can download v0.830 from the usual places:

As usual, try it out and let me know what you think. Thanks for your support!

GearHead Caramel v0.821: Loverboy Not Found

There was a bug with the previous release of GearHead Caramel; the loverboy facial hair image file was not included in the package. I saved it to the wrong folder, but somehow the image loader could still find it on my computer, so when I tested the packed version it looked like everything was working. Then when I tried to solve the problem the loverboy facial hair image file, which was clearly showing up in game, was mysteriously absent from the source folder! It was a bit confusing to say the least. Fortunately, it’s fixed now. Even better, v0.821 also includes improved keyboard controls. You should now be able to play the game entirely using the keyboard. Scroll column widgets act like menus when they’re active. You can move and target things using the numeric keypad instead of the mouse. All keys can be customized by editing the config file.

As usual, you can download the new version from itch.io, Patreon, or GitHub. Try it out and let me know if you find any more problems!

Miniature Sculpting in Blender: How to Use a Texture to Deform a Mesh When All You’ve Got Is a Material

3D model of Hyolee

Yesterday I finished up a 3D print model of Hyolee from GearHead (which will be uploaded to Patreon soon, then my itch and Cults3D shops later). I’ve been working on these games for over 20 years now, and all that time I’ve wanted miniatures of my creations- which, thanks to 3D printing, is now a possibility. Anyhow, the bit of this miniature that gave me the most trouble was adding the knit texture to her dress. First I tried drawing the cords by hand, but that was a Bad Idea. After that I tried using a texture brush in sculpt mode, but that doesn’t work great for textures that need to be evenly applied to an entire surface.

Eventually I learned how to apply a texture so it physically deforms the mesh it’s attached to, but it’s not as simple a process as I hoped it would be. So now I’m writing this blog post in the hopes that my onerous journey of pain and suffering experience might be useful to other sculptors. To demonstrate the steps involved I’ll be making a miniature of the Servitor, a synth monster from GearHead Caramel.

Two servitors protect the city core in a dungeon in GearHead Caramel.

I chose this monster for the tutorial because let’s be honest- it’s just a d20 with legs. So I start with a ico sphere with 1 subdivision.

Next, I choose a texture to apply to the model. I want to retain the geometric shape but give it an organic looking skin. I found this texture on pixabay.com/:

I add a material to the ico sphere, then set the Base Color of the material to an image (by pressing the circle that doesn’t really look like a button, but trust me it’s a button, to the left of the color selector). Then I set the Vector to “Generated” and the mapping method to “Sphere”, resulting in the following:

This looks pretty good to me as an organic texture. But right now it’s not a texture, it’s a material. Materials and textures are different. I don’t know why they are different. I have very little experience with 3D graphics and just want to make tiny plastic toys. Is that too much to ask? No, no it isn’t. But it is going to take a bit of work.

For the next step, I’m going to prepare the ico sphere to accept the texture. Note that we’ll be using the Deform modifier, and the Deform modifier only works with the vertices the model already has (in this case 12). You could use the Subdivision Surface modifier to split each face an arbitrary number of times, but instead I’m heading into Sculpt mode to Remesh the model with a Voxel Size of 0.05m. This will provide us with a metric crapton of vertices, which will come in useful later.

Go from Sculpt mode to Edit mode and UV/unwrap the ico sphere. You can use the regular unwrap menu item or one of the fancy ones. Don’t ask me; I don’t know the difference.

Alright, now our prep work is done. Next we need to convert our material to a texture. You’d think this would be one of those things that is a simple menu option. Oh, you innocent fool, you sweet pixel art child. We haven’t even started that process yet.

Step one: switch your render engine from Eevee to Cycles. Eevee doesn’t do this.

Next, go into the Shader Editor, where we will find the material we just created waiting for us.

We’re going to have to do a few things here. First, get rid of that Principled BSDF node and connect the texture directly to the material output. The Principled BSDF handles lighting for your scene, but we want to apply this texture without concern for lighting. We also need to add a new Texture/Image node with a new image- make sure the image is pretty big (I selected 4096 x 4096; I heard there’s some advantage to using a power of 2 but dunno why) and click the 32 bit float box.

Add a UV Map node, select the UV Map of your ico sphere (which should just be named “UV Map” unless you renamed it) and connect this to the Vector input of the Image Texture. Then, open up the Scene panel over on the right, and with the Image Texture node selected press the “Bake” button.

When the baking process finishes, you can find the baked texture in the image editor. You will note that it is quite different from the texture you started with. Save it to disk.

Head back into the 3D view. Create a new texture, and load the baked texture you just created (NOT the original texture! That’s important!).

Add a Displacement modifier to the ico sphere. Set the coordinates to UV and the UV Map to the UV Map created above (which, again, should be named UV Map unless you renamed it). Bam! Immediately the cube is deformed to match the texture, with bright/white areas being raised and dark/black areas being recessed.

You can play around with the Strength and Midlevel values until you are happy with the thickness of the deformation. In general, I try to make sure that texture extends at least 0.3mm above the surface. Details on miniatures should be exaggerated, so when in doubt go thicker than you think you need.

Also: you’ll probably notice that using a straight black and white texture resulted in sharp deformations. For a more organic look, I should have used a texture that has smoother color gradation. For example:

I’m not entirely happy with this texture either, but I’ve got some more to try. Anyhow, that is how you transform a material to a texture to a mesh in Blender3D. Hooray!