Its been a while since my last update. This is probably my last article for this game because I intend to start a new project soon and I want to have a pretty honest postmortem about my experience making my first serious game and publishing it on Steam (also in April 19, it should finally leave Early Access). I will also mention several mistakes and controversial decisions I made during the development (like using store assets) so this will be a long article but I reccommend you to read it completely if you are just starting with your career because there's a chance that it can help you.
Like most of you I have plenty of ideas and dream projects but since I started learning game development I realized that all of them were outside of my reach by being a single developer with no deep pockets nor contacts. I was tired of waiting for some funding or help to fall from the sky so I went against my instincts and instead of focusing in the games I wanted to make, I focused in the game I COULD make with my limited resources. Of course, I still wanted to make something with quality (or good enough that I would play it if I saw it on Steam) and since I'm a longtime fan of Homeworld and I also like roguelite games (like FTL) I decided to experiment by making a mix between them (it also helped that I found several store assets that could be enough to make a game but I'll talk about that later).
I'm an experienced .NET developer (around 14 years working in several companies, making and mantaining corporate software) so it makes sense that I would choose the Unity engine since it uses Mono and C#.
Thanks to this the coding of the game went pretty smooth at first but my inexperience (and probably some bad timing) led me to make several mistakes that end up being a burden during the whole development, for example:
Since the movement of the ships was in 3 dimensions I couldn't just use a normal pathfinding solution (at least I didn't knew about one that could use 3 dimensions at the time) so I went with Steering behaviours, these behaviours are ideal for vehicle movement because they simulate inertia, local avoidance and maneuvers. This made the ships move in a way that looks "smart" without actually having a smart AI.
The problem is that I was (and still am) a rookie in regards to Steering Behaviours so I went with a Unity-ready library called UnitySteer, while this saved me a lot of time, my inexperience stopped me from extending this system properly so I couldn't implement advanced behaviours like formations (if you played Homeworld, you'll know that formations are a critical feature so not having them was a big minus for my game).
When I started this game, Unity didn't had its current UI system so I was stuck with the old GUI system or a store alternative. Since the old GUI system added a lot of overhead and messy code I went with a store alternative that was easy to use and pretty decent at the time so the UI coding went also smooth and quick.
The problem came with my choice: Daikon Forge. At the moment looked like a great choice, easy to use and compatible with other plug ins but a few months later the developer stopped supporting it (apparently he couldn't handle all the work alone). Now this was not an issue at first because I had access to the source and the GUI didn't gave me problems... but that would change when other issue appeared: rendering paths and color space.
When I started with Unity I didn't knew about Rendering Paths nor Color Space so my first projects were using Forward and Gamma by default. At first this wasn't a problem, because I wasn't expecting to make a good looking game but eventually some options started to appear that tempted me to improve the graphical aspect of the game.
Physical Based Rendering: using a free PBR library called Lux allowed me to make my ships look better and more metallic. Setting this library introduced me to rendering paths but I was lucky that it still worked with Forward/Gamma.
Better effects and planets: this proves to be a problem because I found several good looking effects but they needed Deferred/Linear and when I tried to switch I found that my dear Daikon Forge UI shader looked weird unless I used Forward... also I had some problems because to simulate distant objects like planets I use two cameras and some deferred elements didn't looked ok using the second camera.
Basically I tried a lot of combinations but in the end I was stuck with Forward/Gamma because I didn't had time to change my UI plug in and rewrite all its code so I decided to abandon some of the new effects and planets.
My advice in this case is to make sure that all your assets, UI and camera effects share the same rendering path/color space from the beginning so you don't have problems in the middle of the development.
Coding the AI was not a problem, my ships were simple enough that they only needed finite state machines since more of their logic was to obey a direct order or get close to a target.
More of a challenge was the "tactical AI" that would control the enemy fleets. At first I had a lot of ideas but the complexity kept snowballing so I finally decided to make a simple AI that would choose targets and assign ships based on fixed templates (for example: a player bomber would be targeted by at least 3 fighters while a capital ship would be targeted by bombers or other capital ships with heavy weapons).
While these AI prove to be enough for the game, where I had problems was with the debugging and that is because as a seasoned programmer I was too busy trying to code everything and didn't realized the flexibility of a visual system. Now I'm not telling you that you should ditch your code for a visual scripting system but you should have at least a dinamyc diagram where you can see the thought process of your AI (for example: a Mecanim diagram with AI states instead of animations could help you a lot with your debugging).
Also it didn't help that I end up putting a lot of code in a single file for the ship's AI, I should have used more inheritance or interfaces so I could keep the logic of the ships separated by function (for example: the AI of a resource collector should be a different script than the AI of a carrier or destroyer but both should inherit from an abstract base AI class).
This was mostly bad timing. I started working with Unity 4 and while I was in the middle of development, Unity 5 made its appearance, while it was tempting to upgrade I decided not to because I was running against the clock with my savings so having to deal with all the bugs and changes would take a good amount of code rewirting, debugging and general headaches. So this project is now stuck with Unity 4.7.
While Linux users are patient and tech-savy, their setups seems to be too heterogeneous so when one of my customers has a problem is hard or impossible for me to reproduce it (even by asking my scarce voluntary testers). Adding to this, Linux sales are really low (around 3% of the total without considering possible refunds) and the post-sale support is way bigger than with the other platforms so I'm not sure is a good idea to try to make a Linux version, even if with Unity is only changing a switch most of the time, it will still give you a lot of work and very little sales to justify it.
Funding and Assets
I want to give you a little context so you can understand why I made some of my decisions. On 2014 I lost my job in a small software company, they lost a contract with a state mining company so they couldn't afford to pay me and several other of my coworkers so they just had to fire us.
I wasn't worried at the time because in other ocassions I was pretty fast at finding a job so I took some months in trying to make a "serious" game. During my learning I made a lot of unfinished ambitious prototypes and 2 pretty mediocre but finished mobile games so I considered myself ready to make something that I could sell on Steam.
After having a prototype ready I decided to start looking for a job but I was surprised because despite being in a lot of good interviews I didn't get one, this was new to me, I'm usually liked by interviewers because I know how to sell myself and corporate software development is a job that I can do with my eyes closed.
So the months kept passing and my savings started to deplete so eventually I decided to stop looking for a job and finish the game instead. That led me to some tough decisions: I was expecting to generate some attention, funding and maybe recruit some people with my playable prototypes but that didn't happened so I had to "promote" my placeholder assets (several ships bought from the Unity Asset Store, made by the talented artist MSGDI) to definitive assets. I had to do the same with all art assets: music, GUI, etc., I just didn't had the money for anything else, what was left of my savings was destined to bills and my mortage and still wasn't enough so I had to take a bank loan (good thing I have a good credit score).
After 10 months of full time development my game was ready for Early Access. Obviously it wasn't finished, I still wanted to add unlockable fleets, more content and an alternate ending but at least it could be played from start to finish and it was pretty stable, which is much more that you can say for a lot of Early Access titles.
About the assets: I was worried at first that I would be treated as an "asset flipper" but if someone noticed they didn't mentioned it. Frankly, all my assets keep an artistic coherence because they belong to the same artist and pack so I know for a fact that it doesn't count as an "asset flip".
That said, I would probably try to limit store assets to environment and props for the next game, your main characters should be custom so no one notices the generic props. Also I would like to avoid the fact that shortly after my game was released, 3 (YES, THREE!) indie games with the same assets appeared on Steam (with different levels of success, some of them apparently did worse than mine). Nobody seemed to noticed it though... that would have been awkward.
My Early Access experience
When you are new to Steam, you have this idea that you could sell at least a few thousands of copies during your first month. This is probably because we are used to read about all the games that made such amount, we just don't hear about the games that don't... and believe me, there's a lot of that.
During my first day, I sold little more than a hundred copies and during the first month I sold around 500 copies. After the initial shock I realized this wasn't so bad, here in Chile the life cost is pretty low so I could make do with what I received the next month. Now, life problems tend to get in the way so shortly after my mother found (by pure luck) a malignant tumour in one of her kidneys. I was worried so I started looking for a job again, this time I luckily found one and the operation to remove her kidney was a success but still had to spend my first earnings in the surgery and treatment (I come from a poor family so I'm the only one that can pay these sort of things).
Well, returning to the game, the initial reaction was pretty mixed, some people liked the idea of having a mix between Homeworld and FTL (they also liked the "Battlestar Galactica style" of the game) while others accused me of "ripping off" Homeworld. Now, at the moment it seemed like a big deal and I got pretty anxious but eventually those critics disappeared and many other gamers defended the game so the "controversy" was short lived. If I learnt anything from it is that if you are going to be inspired by a game you need to choose between gameplay and style, you can't take both.
Now, this is something that a lot of games suffer on Steam because there's a good number of gamers that apparently enjoy more the "meta-game" of trying to find something to hate instead of playing games but they will only stay if they get the validation they crave by having people agreeing with them, if they find people that disagree, they will most likely leave shortly after trowing a tantrum.
Being a new and solo developer I tried to use that as my strentgh by mentioning it everywhere I could. I also focused in making fast patches and talking directly to my customers in the Steam forums. This proved to be a good decision because it led to create a small but dedicated group of fans that kept supporting me during the development. I imagine that if their numbers were greater they could really make the popularity of a game snowball.
My real enemy during EA was the lack of visibility, when you release that way you don't get access to a million guaranteed impressions on the main page that are given to new releases so your visibility takes a strong fall after the first day. Of course, I don't want you to believe that I'm trying to blame something else but me for my failure, if my game wasn't a success is because it wasn't atractive enough on first sight nor notorious enough to generate hype or media attention before launch (which seems to be critical for short term success in my opinion). I just mention this so you can take that into account for your projects: you want to maximize visibility on those first days on Steam so using Early Access should be only as a last resource in case finishing your project is the real challenge.
I still had 5 visibility rounds and this was a new concept to me. In theory you are supposed to use them when you make a big update and they will give you at least 500.000 impressions on the main page so that's how I used most of them. I think that was a mistake, you should make big updates but you should try to combine them with a weekly discount so you can get a good amount of sales from them, I know because I did that with my 4th round and I got a way bigger response than with the others. Now I'm saving my last round for a future sale.
Regarding reviews, at the moment I have 36/40 positive reviews, which is good but you have to consider that Steam uses something called a Wilson Score to sort titles so a title with more reviews but a lesser average than mine will appear first (at least that's how I think it works). Of course, this makes sense, Steam is not gonna spend their resources promoting games that can't sell by themselves.
Some conclussions about the game
At the moment (just before full release), the game has sold around 2100 copies and it has around 5% refunds. While I don't get more haters in the forums and most of my reviews are positive, I do get some nasty refund notes because apparently those are not moderated (this and the lack of useful feedback made me stop reading them) and I also imagine that this people won't make a public negative review because like most people on the Internet: they crave validation, most of them don't want downvotes or people arguing against them when they make a public review so they'll just insult me in private (which frankly I prefer it, negative reviews are bad for your visibility).
At the end, I don't think my game is bad and several people seem to agree with me. I think its main problems are:
- Mediocre controls: having a strategy game in 3 dimensions is a challenge specially for the controls part, this need to feel responsive and intuitive from the beginning. This is a challenge that I underestimated and while I manage to improved them a lot during EA, they still seem lacking. Its hard to put in words, these issues are not something specific that you can point at and fix, this requires careful planning, testing and a LOT of polishing.
- Not notorious enough: the market is too saturated so you need something that will make the player stop his browsing and read. A game being good enough is not enough, it needs to be notorious. Also everything seems to be ruled by "Power Law" so if you don't get visibility from the start, its gonna be harder to get it later.
- Too niche: its a strategy game, in space, with roguelite elements, with 3 dimensional movement, no multiplayer, no modding, no AAA assets, short duration, etc. Its a good combination but too casual for the hardcore RTS gamers and too hadcore for the rest, its in a difficult middle ground.
- Bad timing: maybe this game could have made some noise some years ago when there was less competition and there was no Homeworld Remastered. In a world with HW Remastered there's no place for my game (or at least that's what many people told me in the refund notes).
- Comparing yourself to a timeless classic: this is a tricky one, I just didn't wanted to make a retro platformer or something simpler for my first game, I wanted something that I would play. Many gamers will say that they want indies to take bigger risks by trying different genres but in reality trying to make something similar to a AAA classic will get you compared to that game at any moment. Now, there's people that will realize that they can't compare a game made by one guy with pocket change to a game made by a team of veterans with proper funding but there will be many others that won't care and they will ignore the game because is not "as good as Homeworld" (the worst part, is that none of them are wrong, judging a game by itself and ignoring its indie origin is not wrong per se).
Now, I expect that the game will sell around 400-500 copies during its launch week and sink to 1-2 per day after that until the next sale, also I expect more negative reviews since its not gonna be using the "its Early Access" excuse anymore but it should stabilize in a "Mostly Positive" after that... we'll see.
After reading about all these mistakes and low sales you may be thinking that I'm burned out and ready to treat game development as a hobby... well, you are WRONG!
I quit my job in January so I could finish this game (one of the best and probably most stable job I've found), I have new savings and I even took another loan. I just love this, I love making games and I can't go back to being a corporate programmer. I need to create my own studio or die trying.
Making a game fills me with anxiety and crazy expectations but I feel... ALIVE! I'm finally working for myself, working in things that I feel proud of. I've being unhappy most of my life, during my twenties (I have 34 now) I had plenty of money and I only wasted it in vices because I felt hollow every day. When I made the first trailer for Nomad Fleet I felt something I never felt before: real sense of achievement. Not even financial failure can take that away from me.
Of course, not everything is crazy passion, like I said before, life cost in Chile is pretty low so I can make do if I manage to make another game in little time and with low costs. Also having limited resources has increased my creativity and productivity so now I have plenty of ideas and dream projects that don't require AAA funding to be made.
I'll keep "failing forward" to success.