Void Wizard Postmortem – What I Learned

Published by

on

Void Wizard Postmortem (RIP)

This paper highlights the biggest things I did right and wrong with Void Wizard, my first commercial release. The contents of this postmortem will be split into the following sections:

  1. Project Overview
    1. Game Summary
    2. Goals
  2. Design
    1. Idea Origin
    2. Fantasy
    3. Gameplay
      1. Overall Structure
      2. Combat
      3. Upgrades
    4. Story
    5. Visuals
    6. Audio
  3. Programming
    1. Cleanliness
    2. Scalability
    3. Godot 4 Quirks
  4. Marketing
    1. Product
    2. Placement
    3. Pricing
    4. Promotion
    5. Steam Data
  5. Survey
  6. Summary

Project Overview

Void Wizard is a fast-paced FPS wizard game with roguelike elements. It has two levels, one boss fight, a coliseum mode, and twelve wands to dual-wield. I intended it to be a good mix of FPS and roguelike, but it’s much more FPS due to the lack of many upgrades/items and rooms. It took about seven months to release the first public version, and a couple more months to release the final version.

Design

Idea Origin

I decided that I wanted to make a roguelike because that’s a genre that Steam users tend to like. Before Void Wizard, I tried to make a breakout/brick breaker roguelike, but after two weeks of working on it, I just wasn’t finding the fun.

After that “failure,” I decided to make an FPS roguelike because FPS games are also popular on Steam, but mostly because it sounded cool. I also wanted to make it a wizard game for the same reasons. This was even more ambitious, and in hindsight, was probably a bad idea. Despite all that, I was confident that it would work, so I just jumped right in. I think that was also a mistake. Yes, the game turned out good, but I think it would’ve been even better if I had prototyped some more ideas. That was my first big blunder:

I didn’t even make any prototypes, I just started making the game! I should’ve also played and studied more roguelikes to really understand the DNA of the genre.

So, how did I come up with the name “Void Wizard”? Well, as I was working on the game, I stared into the void, and the void… the void stared back.

Fantasy

Behind every good game is a compelling fantasy. It could be a fantasy of doing something you couldn’t do in real life, (becoming president, time traveling, finding bigfoot, etc.) or just feeling a certain way. (powerful, scared, angry, calm, etc.) Since you play as a wizard, I wanted the player to feel powerful and curious. (wizards study, research, and experiment to gain power) I think I did alright with providing a power fantasy, but I don’t think there are enough things in the game to spark immense curiosity for hours and hours. I would’ve liked to add more secrets, upgrades, and more ways for aspects of the game to interact.

Gameplay

Gameplay. It’s the most important part of any gamer’s diet.

Overall Structure

To keep things brief, let’s use a bullet point-like structure for this part.

Level generation:

Each level is generated by placing randomly selected handmade (but somewhat randomized) rooms in random positions. This isn’t a bad approach, but I didn’t have enough time to make a ton of rooms, which causes players to encounter roughly the same rooms over and over again.

Gameplay loop:

Go into a room, shoot everything. Buy upgrades occasionally. Pick up new wands occasionally.

Levels:

There’s two levels and one boss fight. Once you kill the boss, you start from the first level again (aka loop), but this time, more enemies spawn. This makes the game after beating it for the first time all about getting a high score, which seems to lack meaning for many players.

Difficulty:

The game is pretty difficult, with only 66% of players making it to the second level, 33% of players looping, and only 13% of players beating the boss.

Combat

I think I did a pretty good job with the combat itself, although the difficulty might be too high and it might be making players quit too much. The sound effects and VFX are juicy, the movement is pretty good, shooting feels nice, the weapons are fairly interesting, and the enemies are pretty engaging. Despite all that, here’s some ways I might’ve improved the combat:

  1. There are damage-dealing wands and support wands. It’s almost always worth it to go with two damage wands instead of one damaging and one support wand, which is usually less interesting. To fix this, I’d either make support wands help you deal more damage, (apply status effects to your attack wand, move enemies into a better place to shoot them, etc.) or I’d make it so you have to have one support wand equipped at all times.
  1. Encourage close-quarters combat or killing things faster. Players often just hang back and play it safe, which isn’t that interesting or fun. To fix this, I’d either add a combo system for killing enemies quickly that grants rewards, grant rewards for killing enemies at close range, or make enemies get stronger/multiply the longer they’re left alone.
  1. While the enemies are pretty diverse and provide a good challenge when their attack patterns are combined, I would’ve liked to add more enemy variation. This can be done by either adding more enemies, or by creating status effects that can be applied to any enemy to change how it works. Status effect ideas include swiftness, increased attack speed, leaving a trail of fire or poison, increased health, reduced or increased accuracy, and an effect that changes the size of the enemy.
  1. Temporary power-ups. Abilities or stat increases that last for one room, or even just for a few seconds could be really fun and add some more variety. You could also add permanent upgrades that increase the likelihood for power-ups to be found or increase their duration.

^ Peak Void Wizard combat.

Upgrades

This is where I think I failed the most with this project. There aren’t very many upgrades in the game, and they aren’t very interesting. They’re all just minor stat increases that you have to buy at the shop. I think they still add a lot to the game, but most modern roguelikes seem to be about experimenting with unique upgrades and trying to build synergies/engines to become OP. Here are some tips for my future self on how to make a better upgrade system:

  1. Streamline the upgrade creation process. The code for the upgrades in this game isn’t that good, which makes it take longer to add more.
  1. Don’t worry about balance too much. I think that it’s actually fun to rely on luck to a somewhat large extent, simply because it’s exciting. Doing well in a run because of your skill while having bad items can be satisfying as well. That being said, you probably still want some level of balance, but prioritize fun and experimentation.
  1. Add upgrades that change the mechanics of the game. It’s fine to do a lot of plain old stat upgrades too, but maybe make them less frequent and have a bigger effect. It’s usually not that interesting to increase your strength by 0.1% because it’s hard to tell if anything is happening.

Story

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!SPOILERS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

When you first boot up the game, it tells you that you MUST defeat the void wizard, and that a world will be created for you to do so. When you make it to the end of the second level, a group of rats tell you that they lied to you, and that there’s no void wizard, but if you want, you can travel back in time to defeat your past/current self. (idk, it’s weird) The only other choice is to return to the “real world.” What does all this mean? Does it even mean anything? I’m not gonna tell you, but I will say that I think future games will be connected somehow.

Anyways, I do think that the exposition when you open the game does provide some curiosity, which may have kept people playing for a little longer.

Visuals

The game features a colorful, voxel art style at a low low resolution of only 410×230! People have said that the voxel art makes it look like Minecraft, which I sorta agree with, but the low resolution helps the game to stand out. I used voxel art because I don’t know how to use Blender and didn’t want to spend the time learning it, so I just used MagicaVoxel which is much simpler. The low resolution is also very practical. It actually helps the game run a lot smoother on low-end devices. I also just like the crisp look of it.

^ It doesn’t look like Minecraft!!!!!! 😠

Audio

I didn’t spend a ton of time on the audio, but despite this, I think it turned out good! I mostly used cheap royalty-free music from itch.io. As for the sound effects, I got most of them from either freesound.org or itch.io for free. I added a limiter to the master track and a reverb effect to the sound effects track. Many of the sound effects are pitched randomly by a couple percent, which is a quick and easy way of making repeated sound effects (shoot sounds, hurt sounds, etc.) sound better. I also had to edit and combine a lot of sound effects by hand, but that didn’t take very long at all.

Programming

I used Godot 4.1.3 to make this game. I also used GitHub for version control, which was of course an excellent decision.

Cleanliness

My code isn’t very clean. I tend to rush things, which is great in the short run, but later on it starts to make it more difficult to fix things and add new content or features. Here are some tips for myself for the next game:

  1. Learn more programming patterns. Get more used to state machines, composition, etc.
  1. Use static typing. Yes, it takes an extra five seconds, but it reduces the risk of bugs and you also get more autocomplete support.
  1. Prefer composition to inheritance. This can make your code much more flexible.
  1. Use custom resources. They’re great in so many ways.
  1. Break things into smaller components. This is related to composition, but you need to remember that each component should usually do only one thing.
  1. Actually document things next time, but don’t go overboard!
  1. Try making one GitHub repository for the actual game project, and another for all of the files related to the game, like promotional material. I had everything in one repo and it was a mess.

Scalability

My code isn’t very scalable, so here’s some scalability tips for myself:

  1. Do all the stuff in the cleanliness section, especially use composition and custom resources.
  1. Make a 2D game. 3D is kind of a hassle, so unless you have a really good reason to go 3D, just stick with 2D for a little while. You don’t want to worry as much about optimization, which renderer to use, or 3D transforms. (eew, gross!)

Godot 4 Quirks

I’m a proud member of the cult of Godot, but it do get a little quirky at times. Here are some problems I had to deal with.

  1. There’s an issue in Godot 4 (maybe in 3 too, but idk) where when running a Windows export, the line spacing of labels will sometimes be too big. I figured out that this is because “\n” gets replaced with “\\r\\n”. To fix this, just run the following code whenever a label’s text changes: 

————————————————

label.text= label.text.c_escape()

label.text= label.text.replace(“\\r\\n”, “\n”)

label.text= label.text.c_unescape()

————————————————

  1. With Godot’s new Vulkan support, you can make beautiful 3D games, but a lot of low-end computers can’t run on Vulkan very well, especially if the game isn’t well optimized. (like mine… 😢) To fix this, I just export the game once  in Forward+ mode and again in compatibility mode. I then let the Steam user select which exe to run. This can be configured with SteamWorks under SteamWorks settings > Installation.
  1. Rcedit is a program used to give Godot games thumbnails when exporting. Unfortunately, it sometimes fails, and Windows gives it the default Godot icon. Even when you run Rcedit successfully, it will likely still have the Godot logo. This is because Windows caches thumbnail icons. To delete all cached icons so you can make sure Rcedit actually did its job this time, follow this guide: 

https://www.wikihow.com/Clear-the-Thumbnail-Cache-in-Windows

I know wikihow has some cringe stuff, but this guide actually helped me. Here’s some weird quizzes just for fun:

Cringe.

Marketing

Every indie dev’s favorite subject! Ok, I know most people hate it, but I actually kinda like it. Sure, it’s the most stressful to me, but it’s also the most closely related subject to money, which I could really use right now. D:

Product

Genre is one of the most important things when it comes to marketing. I wanted to pick a genre that tends to do well on Steam. Roguelikes apparently do, so I decided to make an FPS roguelike. (I added FPS because it seemed cool, and it still does) Pretty simple. Here’s the article with the study I based this decision off of: https://howtomarketagame.com/2022/04/18/what-genres-are-popular-on-steam-in-2022/

Placement

There are many online storefronts available to indie developers, but the big one is Steam. Yeah, you’re probably gonna be a rather small fish in a humongous pond, heck, an ocean, but there are waaaaaaaaay more customers on Steam than on any other platform. I also believe that Steam does a good job at promoting your game to players, giving it an honest chance to succeed. That being said, you can release your games on multiple platforms, but I just didn’t want to deal with that for my first game.

Pricing

Void Wizard is a short game. Its median playtime is only about 19 minutes, but if the game clicks with you, I think you could play it for at LEAST 3 hours. Due to this lack of content, I decided to price the game at $1.99 USD. (The game has a different pricing for different countries. I let Steam determine the international prices because I don’t know squat about any of that.) I think I priced it too low out of fear. I should’ve charged $2.99.

The price of a product obviously affects how well it sells, but with Steam, it does something else, too. Steam users tend to buy a lot of games, and sometimes when they go on a shopping spree, the cheaper games go unplayed. I’d rather this not be the case for my game, but I think this actually reduces the return rate. (Steam’s return policy is too generous.) I heard one time that the average Steam game has a 10% return rate, but Void Wizard is sitting at only 5.8% at the time of writing this.

Promotion

Promotion is what most people think of when they hear the word “marketing.” I think that it’s one of the most difficult parts of marketing, alongside deciding which product to make. Here are some things I did and roughly how many wishlists they got me:

  1. My own YouTube channel. I made a few Void Wizard devlogs. Most of them got around one to two thousand views, but the last one I made now sits at thirteen thousand. That one video got me about 250 wishlists. (that conversion rate is about 2%!) It took me about a week to make, and I think I can make even better videos in the future, which could get fifty thousand views pretty easily. (ambitious, I know) In short, this was one of the less impactful promotion activities, but I think it has the most potential for me because I believe I can get many times more views per video with a bit of practice.
  1. Other people’s YouTube channels. I spent almost a month emailing small to medium sized youtubers keys to the game. I sent out roughly 250 keys. (aggressive, I know) I got several people to feature the game on their channels. Sadly, I kinda forgot how many wishlists I got from this, but it was probably a few hundred.
  1. Twitter. Twitter is only good for networking, unless your game is super beautiful or cute or something, idk.
  1. Discord server marketing. I actually got a couple of gaming Discord servers to do a giveaway of my game. Again, I forgot how many wishlists I got from that, but it wasn’t a ton. Luckily, it doesn’t take much time to ask someone to do a giveaway, and they’re usually pretty receptive to the idea because they want to give a lot of free stuff to their communities.
  1. Steam FPS Fest. This was the first marketing effort after launch. I sold most of my copies due to that fest, and probably got about one thousand wishlists from it. I forget exactly how many copies I sold, but it was probably about six hundred. Oh yeah, and it was free.
  1. Steam Endless Replayability Fest. This was the second themed festival I took part in, and it was very disappointing. I probably only sold about thirty copies because of it, and only gained about one to two hundred wishlists. This one was also free to me, so I’m glad I joined, but I’m also confused about why I didn’t do nearly as well in it. Maybe because my launch visibility boost ended, or maybe it was because the FPS fest was just a better fit. Who knows.
  1. Coliseum update. I added a new game mode the other day, and that allowed me to activate a Steam visibility cycle. It hasn’t done much yet, but I think it’s helped me sell a few more copies than otherwise, and it’s only been a couple days as of 5/22/2024.
  1. This paper. If you liked this amateur postmortem, why not pick up a copy of Void Wizard if you haven’t already? It’d be a good learning experience to get a feel of the game you’re reading about. 😉 

Steam Data

Here’s some data about my launch:

Launch date: 4/12/2024

Wishlists at launch: roughly 600

Gross revenue as of 5/22/2024: $1,555 USD

Refund rate as of 5/22/2024: 5.8%

Reviews as of 5/22/2024: 24

Positive review percentage as of 5/22/2024: 95%

Median time played as of 5/22/2024: 19 minutes (earth minutes)

Survey

On 5/23/2024 I released a survey that asked people about their experiences with the game. The biggest takeaway from that survey is that the game lacks content. I can’t show you the results though because I forgot to say that they were going to be public. Sorry.

Summary

Overall, while not a huge financial success, I’d say that I’m very proud of Void Wizard, and I’ve learned a lot from it, which was the main reason I made it. I think that its biggest flaws are its lack of complexity and content, but its biggest strengths are the satisfying combat and its charm. (another thing I’d like to add in future games is localization) I’d say that my biggest takeaways from this project are that I NEED to prototype a lot instead of going with the first idea that sounds cool, and that I should value fun, experimentation, and content over balance and polish. Thank you for reading this postmortem, and I hope Void Wizard has a blast in Valhalla. (either that, or it got stuck in the void…)

Well, on to bigger and better things!

-Vincent Poteet, creator of Void Wizard, founder of Antique Gear Games, and certified epic sigma gamer by the Association of Super Sigmas.

Leave a comment