The Empyrean

A mod for Minecraft based on Chinese mythology, adding MMO-style combat and classes to the game, as well as a slew of extra content.

Marketing. That terrible word that strikes fear into the hearts of indie devs everywhere. No matter what you do or how hard you work, those terrible gods of marketing can decide that your game is doomed to wither away in the dark corners of the internet forever. Your genius cast aside because you weren’t cool enough on twitter, or you didn’t sell out to the man. All joking aside, getting your game out there is paramount to success, and there are a lot of ways to do that with no monetary cost. That being said, for someone as painfully introverted as I am, a trait I suspect is somewhat commonplace among indie devs, interacting with the community can be harder than actually developing a game.

I started off with good intentions. I made posts on reddit, facebook, twitter and my wordpress blog. Granted, I had no followers on twitter, and my blog had clocked exactly two readers, but I was working on that. I thought that maybe people would stumble on the links from the youtube video I posted, or from my post on the minecraft forums where the mod was officially released. With this storm of social media interaction, I was sure the hits would start rolling in. They actually did, though not to the degree I was expecting. Within a day there were several comments, my website stats showed dozens of downloads, and there were several comments on the forum. I had done it, I successfully engaged in social media on the internet. I was a winner.

As it turns out, one blast from a shotgun doesn’t win the war, or even a battle. I was diligent in responding to the comments on the forum, but I didn’t do a good job of promoting my other avenues of advertising, so they withered, and I forgot about them. I figured the youtube reviewers that were active on the forum would stumble on my mod and start doing reviews, and I just had to sit back and brace myself for the deluge of players that was sure to arrive. Obviously it never did, I didn’t do anything after the first day to actively promote it to anyone besides the people who had already seen it. I had never even heard of a press kit, and I assumed the people who did reviews games were constantly scouring the forums to look for new material.

The world of gaming press was completely foreign to me. I mean, of course I had read magazines, and the big name websites, but they covered the big names in gaming, so their rules must have been different. I was just some indie dev (barely), that was something I surely could never hope to get into, so I just didn’t even bother. Now, I know what you must be thinking at this point. “Wow, you are an idiot, you were doomed from the start, no wonder I’ve never even heard of you.” I did make a lot of mistakes, but I’d like to think I’ve learned from them, and I have that much better of a chance at success next time. This was really the first time I had made a game for an audience that wasn’t just myself. I am always really interested in what I’m doing, and since I had only ever made games for myself before it was a forgone conclusion to me that my audience would be just as interested when it expanded.

Ok, after reading what I just wrote about myself I sound amazingly self-centered. I really don’t try to be, but I was wholly ignorant of how the world worked in this regard. I am glad I went through all of this though, and especially glad I did it in a low-pressure environment, because I learned a ton. I will not be discouraged by all of these terrible failures though. I will take these lessons, learn from them, and do better on the next go around. These articles are the first step toward reaching out and making ties in this community, and hopefully my mistakes and these reflections thereon will help some other developer in a similar situation from repeating them.

Barriers to entry are bad. I learned this lesson in a few ways with this project. Obviously when you say it that way, anyone would agree that preventing people from playing your game is a bad thing, but it’s not always clear that’s what you are doing when you are developing something. In hindsight there was a lot I could have done better, and this a good way for me to really process it all and hopefully help other developers avoid these mistakes in the future.

The game that I released was a bit rough. I had exactly one tester, myself, for the entire year and a half dev cycle. I tried to rope my friends in, but that didn’t really work out. They just wanted to play, not test, and they didn’t know how to give good feedback. One of the biggest things I will be looking for when my next project has any sort of playable prototype is good testers. After the initial release, the slew of minor issues that my written tests and personal play-testing didn’t catch was staggering. The first few days was a whirlwind of quick patches and hot fixes. Things like localization names not matching so the description of an item was item.description instead the intended text, or typos leading to one of the skills being drastically overpowered to the point where level 4 characters could one-shot level 24 mobs. All of these things could have been caught by good testing. Instead, my initial release was a mess, and the people who saw it were turned off. Feedback came in saying the game had a long way to go, and that maybe they might check back in later. That’s disheartening, and it needlessly turns away a portion of the few people who actually installed the mod.

After that things calmed down for a while. The first intended update, to add multiplayer support, rolled out much more smoothly from the technical side, and that update brought in a fair amount of new interest. With that though, came a lot of confusion. Minecraft, on the whole, is not very friendly to start of, and I didn’t think I needed to be any different. Comments started popping up about the mod lacking content that baffled me. There was tons of new stuff to do, how could someone play for an hour and not notice anything different? The answer was simple: I didn’t introduce the content to the players. This is not to say that they needed their hands held, but some sort of tip of where to start looking or what button to press first to get access to the new content menus. I didn’t have any of this, and I thought that in the hands of people who played a game with no instructions it would be fine. What I didn’t have, though, was a well fleshed out wiki detailing all of my content and how to get started. I had nothing. As a result I know I lost more than a few players, and again a simple tutorial, or even a pop-up message, would have solved all of that.

On top of that, there were fragments of a story in the mod, one that I had intended to develop fully by the fourth update, that were completely lost on people. I later came up with several ideas for how to fix this, but by the time I got any of them implemented it was too late, and they didn’t help nearly as much as I thought they would. It’s hard to find the line between subtle and impossible to find when you have been immersed in something for over a year. If you roll your eyes at how obvious the story is after a year, it’s probably just subtle enough. Good testing would have caught this as well, which is another reason to get 3rd party testing done early and often.

So a rough release and no tutorial is a bad combination to have. I did have plans to add an in-game encyclopedia in one of the future updates, but that isn’t something that should have been pushed back. It’s a lot better for players to know what is going on with the 80% of the game you gave them, than to lose players who couldn’t find any of the 100% of the game.

Making it easy to get into the game, and making the game easy for the player to understand. Two sides of the same coin, really; it’s all about getting people playing the game. Next time I’ll go over how I failed to do the one thing that could have overcome both of those issues: marketing.

This is the first in a three-part series on what went wrong with my first attempt at releasing a “game” to the public. In this part I will go over one of the three major factors that I felt contributed to the underwhelming response to my efforts: I did not make efforts to make the mod easy to get up and running.

One of the biggest lessons that I learned from this project was that no matter how good your game is, if people can’t get into it with little effort, it won’t matter. The response I got from the people that actually played the game was almost unanimously positive. Several people told me that the mod became the game to them, and they couldn’t go back to normal Minecraft afterwards. With positive initial feedback like this, I was sure this was going to be a smashing success. Then the negative feedback started rolling in. Nothing about the game itself, but waves of questions about compatibility and installation. I thought (erroneously) that the modding community would have no problems installing a stand-alone mod, but I wasn’t involved enough with the community to know how wrong that was (which will be the topic of the third part in this series, so more on that later).

Many of the people playing with mods were using one of two popular modding engines. These engines forced some compatibility between mods, and limited the mods to the places they allowed to maintain it. Essentially, they were unofficial modding APIs made by the community, and I decided not to play ball. I went beyond the scope they provided in a number of ways, and I didn’t want to sacrifice my vision for the game for the sake of compatibility. By itself, this may not have been a big issue, but there were other issues with compatibility that really prevented the mod from catching on.

The deluge of questions and criticisms related to the community APIs was a bit of a blow to the ego, but not entirely unexpected. I was hoping that the video preview and the screenshots would get people to decide it was worth it to at least try it, and unfortunately for many people that was not the case. I thought that if they would just try it they would be hooked, but so many people turned away before they even tried it. Over a year of hard work on my part being offhandedly dismissed due to what I perceived as such a minor issue was hard, but once the reviews started rolling in, things had to improve. But while the reviewers and community voices were at least willing to install it, they had issues of their own.

One of the big features of the popular mod APIs was that it allowed the youtube reviewers to pull the mods apart from the inside and really dig into them. Without that, many of them attempted to do a review and then stopped because they didn’t have the tools they needed to do it. I tried to patch that functionality in to get them rolling, but I couldn’t compete with people dedicated to making it easy for them, and I was set at odds with the people I was relying on to spread the word and get people to overcome their trepidations about installing it.

I was a bit upset about the way this all unfolded. I thought my game was so good that its quality would make people ignore these issues and I was dead wrong. I set such a high bar for both players and reviewers to get into it that many people wrote it off before giving it a chance. Many of these issues are unique to modding, and my future projects won’t have the exact same issues, but the underlying current will always be there. Making it easy to get up and running is now just as high on my priority list as making the game fun to play. I have seen this paralleled in the game industry at large with DRM issues and launch-day servers problems, I should have known better. I had said to myself “but that won’t matter, my game is good enough to get past that.” I’ve learned that anytime I hear myself say that phrase though, that it’s time to rethink things.

Next up I’m going to go over the importance of having a solid player introduction to your game.

I know this news is likely expected by the community, but I have come to the decision that I can no longer support this mod. The main reason here is time. Before release, this game had been my only project for almost a year and a half. During that time, the mod would frequently go out of date while I was in the middle of a new feature or framework, and I would simply sit on it until that was done, then wait for the next slew of updates to finish and port my code over. Obviously with the mod out, I can’t really do that. I have done that, and any community that I might have built up has dwindled as a result. Since the whole reason for doing what I have done with this mod was to build a community, the project is simply no longer serving its intended purpose.

I want to make my intentions completely transparent here. I started this mod because I wanted a different experience than I was getting from the original game, and I felt that I had the capacity to create it. I have proven to myself that I do have that capacity, but somewhere along the project the goal changed. I realized that I really enjoy making games. I have always known that, and I have always made games as a hobby, but this time it was a bit different. This was a game for other people, and the thrill that came along with that was amazing. In order to make better games to release to the world, I needed more time. To get more time, I needed to not have a day job. I decided I would try and make a go of this indie game development thing, and I was going to use my mod to build up some brand recognition to help my first commercial venture be successful.

In making this mod, I learned a lot about the aspects of game development that I hadn’t even thought about before. I am planning on writing a three-part post-mortem series talking about all of that before I move on to my next project. I am glad I did it. Finishing something and releasing it felt good, and it reminded me why I started it in the first place. I would love to see it through to completion, but as it stands I just don’t have the time.

Each Minecraft update requires me to port my code over to the new version. Very little of it transfers, and what does usually works a bit different in each new version, which requires time spent learning the new base code to fix. All said it takes me about 15-20 hours to port the code over each time an update is pushed out, and while I try to treat this as a part time job and put in that 20 hours a week, in all reality I’m lucky to get half of that. Since 1.5 was released and I finished my class and got my free time back, I have attempted to port the code base over three times. With the most recent release from the good guys at Mojang, I took a step back and evaluated what I was really doing with my time.

I understand why this happens, and I knew what I was getting into. I thought I had the stamina to stick with it, and I might actually have it, but it’s simply not worth the time investment any more. I want to apologize to my small community of players, and thank you all for the support you have given me. I also want to thank all of the people who gave me the harsh feedback I needed to learn a valuable lesson about actually getting a game into gamers’ hands. I learned a lot from this, and I will take all of this information with me as I move on to my next project. Stay tuned, the biggest lesson I learned was that I have to be more involved with the community, so this blog is about to get a whole lot more active.

This is the first of what I hope to be many articles on game design and theory. Initially I intend to use The Empyrean, my first public release, to draw from. Mainly I wanted a forum to discuss some of the decisions I made in that game, how and why the decision was made, and offer a little insight into the thoughts behind them.

For the first article, I wanted to touch on one of the more bizarre concepts in the game, and that is the mechanics behind the Daoist class. Before we get into the why, I feel a little bit of background necessary.

When the game was first conceptualized, it was a drastically different game from what was eventually released. Everything was much more standard within it’s genre: a Medieval European setting, warriors and mages, and what is now the Daoist class was the more standard fare, a cleric. The initial testing was actually a Bukkit mod for our SMP server that added elemental magic, with the ability to switch elements, and each of the elements representing one of the standard RPG classes. Since this was a server plugin, there were no new items, and this meant that the standard healer weapons, maces and staves, were not available. To make do, the rogue element (fire) went unarmed, the warrior element (earth) used a sword, and the mage element (air) was also unarmed but from range. What to do then with the cleric? The only other weapon in the game at the time was the bow, so I added a few spells dealing with arrows to the mix. A cleric with arrows didn’t really make a whole lot of sense at the time, but I went with it in the name of balance.

Eventually I decided to pursue this game concept more fully. Every hack or shortcut I had to make because it was a server plugin grated on me, and when I finally decided to make an actual client modification, I saw the opportunity to redesign the structure of it all. This is when the Chinese mythology theme came into the game, and for the most part it was just an overlay. The soldier was still basically a warrior, but the arrow-firing cleric didn’t fit anywhere. At this point, the cleric was a mess of healing spells and damaging arrow attacks, and I had to make a choice: abandon the bow, or find a way to somehow integrate those two wildly different concepts. I liked the bow, and since it was in the game anyway, it felt wrong to cast it aside and make a new weapon for the now Chinese-inspired cleric, and I had no idea what that would be anyway.

The first attempts at marrying these two mechanics together were awful. A special shot that let you fire an arrow that healed the caster for an amount based on the damage dealt, and another shot that did the same but healed a random ally. Feedback on this was that it felt clunky and awkward, and that the bow didn’t really fit with the rest of the class. I was determined to make it work, but I was out of ideas.

A few months down the road, as the other classes were being polished up and the new enemies and items were making their way into the game, I noticed something while testing the stronger arrows. Hitting my allies during combat was obnoxious, and since they moved around a lot, healing them was equally difficult. I thought that if there was a way to combine those two aspects, I wouldn’t have to worry as much. If my heals missed my allies, they should at least try and damage my enemies. I experimented with a few different key bindings to make this happen by attempting to cast both with mild success. It was better, but not great.

That’s when I got the idea to combine them at a base level. Why hack it together with awkward keyboard shortcuts, when I could just make the spell do both, depending on who it hit? I tested a few spells with this mechanic and loved it. I didn’t have to worry about my allies moving around like crazy people. Sure if they were low on health I had to be more careful, but since my attacks now healed them if they got in the way, that came up much less often. Making this new type of spell work with the bow was almost too easy. The same mechanic that fixed the target problem seemed a natural way to fix this one as well. Arrows that cast my spells for me was an exciting idea, and one that I still really like as a mechanic.

In testing, this mechanic held up well. Conjure arrows, shoot them with wild abandon, and everyone is happy. This also took what was previously a very energy-intensive class and made it more about preparation. If you have enough arrows, you can last the whole fight and not have to worry about regeneration or waiting on a heal so you can get a few ticks back first. A few of the original arrow skills made their way back into the class, since those were now just a good at boosting healing as they were at boosting the disjointed damage when the class was first started.

I have to say that this is one of my favorite mechanics in the game. It really brings the different aspects of the class together in a way that feels right. So why does our healer have a bow? Because his arrows heal us.