GearHead Caramel: Next Day Ruckus

I’ve just uploaded a new release of GearHead Caramel to GitHub. The Winter Mocha mission scenario has been expanded with a full random plot generator; play time should now be 15 to 20 minutes, moving this into the category of genuine coffeebreaklikes. You can import characters from GearHead1, and there’s another possible lancemate in Mauna. Best of all, this release can be downloaded in one file executable versions for Windows and Linux, so you don’t have to mess around with Python and PyGame (though you really should if you’re into that kind of thing).

Try it out and let me know what you think.

Fantasy Portrait Set at itch.io

I’ve uploaded a series of 26 fantasy portraits that I did in traditional media (mostly acrylic, some watercolor and gouache) to itch.io. The pictures are licensed under CC-BY 4.0, but any donations I get for the set will go towards hiring artists to help with GearHead Caramel.

In related news items, you can soon expect a review of AssetForge and an article about the great new world idea I have for Dungeon Monkey.

Reworked Conversation System

Last week, I reworked the way conversations work in GearHead Caramel. Originally, the conversation generator gathered conversation bits from every plot in which the NPC may be involved and arranged them into a conversation tree. Unfortunately, this means that certain dialogue paths might get hidden in the maze. For instance, if you wanted to ask Vikki to join your lance, sometimes it would take two or three conversations before the option would present itself.

Instead, now the conversation gets rebuilt at each dialogue exchange. Because of the dialogue construction rules not every offer can lead to every possible topic, but you should be able to get to any other conversation topic via “Could I ask you about something else?”. This seems to be working very well so far.

I’m hoping to make a new release soon. There’s a lot more stuff now than there was in the Tip’s Eve release, but I want to have a bit more randomization in the combat mission.

In related news, I’ve started commissioning artists to make portraits for GearHead Caramel. If you want to help me out with that you can support the game through itch.io or using the tip jar in the sidebar.  GearHead is and will remain free, but it’ll get done much faster if I can afford some help.

THD-36 Thorshammer

The Thorshammer is a heavy weapons battroid produced by RegEx Corporation. It is that company’s most popular model, being used by the Federation Defense Force, the Pro Duelist Association, the Bohemian Collective, and various other organizations throughout the solar system.

Z45-60 Zerosaiko

The Zerosaiko is one of the most popular mecha in the GearHead universe. It is designed for mobility and maneuverability. The basic version lacks firepower, but this is easily fixed with a little modification.

Originally the Zerosaiko was produced exclusively by Zero Tech, a family-run company in Namok. In NT160 Zero Tech was acquired by Kettel Industries. This has caused some controversy, as many cavaliers believe that the Kettel-manufactured Zerosaiko isn’t built to the same quality as the Zero Tech-manufactured models.

Zero Tech’s longtime rival is Vadel Industries. These companies are the GearHead universe equivalent of high quality/low volume sports car manufacturers like Ferrari and Lamborghini. The name Zerosaiko comes from the nickname of one of my students- “Zero Psycho”. Zero was a Korean card game popular among elementary school students; this particular girl was absolutely nuts about it. I thought it would make a good name for a giant robot, and it did.

My Computing Adventures

Last week I had to bring my laptop into the shop because its creaky old case had finally blown a hinge. This week I had to bring it back to the shop because the ROM BIOS suddenly stopped working. These are the first problems this machine has given me in the five years that I’ve had it, but when it rains it snows I guess. Thankfully, Samsung after-service is fantastic (at least in Korea) and both problems were solved quickly and cheaply.

GearHead Caramel now pre-loads the music and graphics when a new scene is entered. Unfortunately, this causes a noticeable delay. I’m going to add loading screens, and I thought it’d be a great idea to make them look like eyecatch cards from classic mecha cartoons. If you’re an artist and would be interested in making a GearHead eyecatch, please contact me with your commission rates. If you’re not an artist but would like to see me hire some good ones, you can support GearHead on itch.io. I’m hoping to make a new release of GearHead Caramel next week, with new content, new weapons, and a whole bunch of improvements.

On Roguelikeness and Ultimatude

I’d like to talk for a bit about the design of GearHead Caramel. As usual, most of the big decisions were motivated by the type of game I want to play and the systems I want to program. Many of the changes are moving the game away from a classic roguelike, but I don’t think that’s a bad thing. Genre definitions can be a useful thing when talking about games. Rigid adherence to definitions, on the other hand, can often impair creativity and growth.

The main characteristics that GearHead Caramel will retain from the roguelike genre are replayability, procedurally generated content, and consequence persistence. Some of the non-roguelike features it will have are tactics style combat, a non-ASCII interface, and a focus on story. Whether this means GHC is still a roguelike or a roguelite or something else is left as an exercise for the reader.

The part of the game I am most interested in programming is the scenario generator. There’s a lot more going on now than simply random story generation. There is also procedural puzzle generation, a bit of which you can see in Winter Mocha (please forgive the fact that the puzzle is trivially easy; this is proof of concept work only). There’s generative text and dynamically constructed conversation trees, both of which should revolutionize NPC interactions in GHC. There is also reactive story generation, in which the player is given opportunities to alter the world state and the story reacts to those changes. In short, there are a whole lot of things I want to experiment with and I can do that better if the game consists of short linked episodes rather than a single epic adventure.

I’d also like to talk about the visual design of GearHead Caramel. I decided early on that I wanted to make the graphics attractive, functional, and low-maintenance. As you can see, each character and mecha has a single forward-facing sprite. In my notes I describe this style as “Neo-Ultima”.

The GearHead Caramel mecha sprites are scaled so 3 pixels = 1 meter; all of the mecha in the picture above are to accurate fictional size with one another. There is no definite scale for human sprites, but I plan to eventually introduce a paper doll system showing the character’s clothing and equipment.

Competing Goods: Cavalier Virtues

A giant robot in classic computer game Ultima IV. It's going to stomp Lord British's castle! Oh no!

Ultima IV plus Robot by Creative Stall from the Noun Project

GearHead Caramel will not feature the Heroic/Villainous morality scale used in previous GearHead games. Typically, games that feature a good/evil scale use it to divide up the content: play a hero and you get one story, play a villain and you get a slightly different story. The moral choices you get to make tend to be boring and come down to which route you’re trying to play. Never mind the fact that the game designer and player might not agree which choice is the moral one and which is the immoral one.

I never intended for GearHead to have separate heroic and villainous paths. Instead, heroic points were supposed to be an optional reward for going above and beyond the call of duty, while villainous points were meant as an easy way for me to kill off player characters who act stupidly. So, moving forward, the heroic/villainous scale is out.

Instead, for GearHead Caramel I intend to use a virtue system as in Ultima IV… though for now the virtues will just be a design principle rather than formal game rules. There are several advantages to using a system of virtues rather than a good/evil scale. First, there’s no need to tailor game content for Stupid Evil alignment. Second, different virtues can contradict one another, leading to much more interesting moral choices than yet another variation on the trolley problem.

Here are the five virtues of the cavalier code:

  • Duty: A cavalier must honor their mission contracts and other obligations. Your word is your life.
  • Fellowship: We’re all in this together. A cavalier should treat civilians and other cavaliers with magnanimity. This virtue covers loyalty and empathy.
  • Justice: It is necessary to act in a just manner. Cavaliers are expected to protect those in need and bring punishment to the guilty.
  • Peace: A cavalier should act to minimize harm, which is not easy when you’re piloting a fifty ton death machine.
  • Glory: Finally, a cavalier must keep striving for greatness. This virtue covers courage and honor.

There are numerous ways these virtues could conflict. Do you pursue a criminal through a crowded city (justice) or let them get away to avoid civilian casualties (peace)? Stand guard at the bridge (duty) or take down the enemy leader who has been separated from their group (glory)? Ideally, each of these choices should take the story in different directions.

GearHead Caramel One Week Update

BuruBuru mecha standing in snow up to its knees.

Snow Day; acrylic on Canson acrylic paper.

Thanks to everyone who has provided feedback on GearHead Caramel so far. If you haven’t tried it yet, you can download the release or the latest commit from GitHub.

I’ve heard one report of fullscreen mode not working properly on a laptop computer. I haven’t managed to replicate that problem, but I did find that fullscreen mode runs slowly on my office Windows computer (which is not the greatest computer in the world, to be fair). If you encounter problems with fullscreen, you can switch to windowed mode by editing the configuration file which should be in your home directory’s “ghcaramel” folder. The window is resizeable so you can stretch it back to nearly fullscreen.

My next step is to expand the Winter Mocha scenario into a proper tutorial level and introduction to the GearHead universe. Here are some things I’m hoping to include in the next release:

  • Some more NPCs to talk to, including alternate lancemates.
  • More content for the mission scene, with the goal of replayability.
  • Get the rest of the main rules working; add shields and intercept weapons.
  • The ability to set screen mode and other options from within the game.
  • Personality traits which alter dialogue (this is already working in the dev version).
  • The ability to import characters from GearHead1 (this is mostly working now).

New Style Portraits: Step by Step

As you can see from the above picture, GearHead Caramel uses much bigger portraits than previous GearHead games, and the color switcher can handle subtler shading. Plus, there are now five recoloring channels to work with instead of just three. Here’s a quick tutorial on how I’ve been making portraits for the new system.

I start by doing a number of rough sketches for the character, before settling on the one I like the best. GearHead Caramel portraits should show the character from head to mid-thigh. They should be looking to the right, since that’s where the dialogue box is. I use a blue color for my pencils so it’ll be easier to draw black over them.

The second stage is what we cartoonists would call “inks”, though since I’m working digitally no actual ink was involved.

Next, I do the flat colors. For this method I complete the drawing in black and white, then add colors as the final step. You want to get a pretty wide value range- the shades should go from dark grey #404040 to pure white #ffffff. My professor Allen Passalaqua suggested using the darkest color of each area as the flat color, so that’s what I did here.

Shading is added using the lasso-and-gradient method. Using the lasso and other selection tools, I apply white-to-transparent gradients to a layer above the flats. You can find lots of tutorials on this method if you search. I probably should have pushed the darks a bit darker on this portrait, but it’s all a learning experience.

Finally, it’s time to color the portrait. I add another layer on top of the picture and set its mode to Multiply.  Red areas get colored with pure red (#ff0000), yellow areas with pure yellow (#ffff00), green with green (#00ff00), magenta with magenta (#ff00ff), and cyan with cyan (#00ffff). Because the layer mode is set to Multiply, the shading from the lower layers will show. Any areas left grey will be grey in the final portrait.

For characters: red = clothing 1, yellow = skin color, green = hair color, cyan = detail color, magenta = clothing 2

For mecha: red = main color, yellow = secondary color, green = sensor/detail color, cyan = metal color, magenta = tertiary color

The final portrait size is 400×600. Most characters should be around 500px tall; that way, there’s room to go bigger or smaller to show that a character is particularly large or tiny.