Dead Wake is out now (Download). I decided to keep the game free to play (main reason we’ll be seeing later). Doing this project has been the longest one for me (compared to GEOM, Hightailed & Highpiled) and while there’s still deas & things that could be done, I decided to release the game now.
I didn’t intent to write a “post mortem”, but I thought I would do “good-bad-ugly” review. Maybe it fits to my “mixed feelings” about this project. Maybe.
I’m pretty darn proud about the fact that it was submitted to IGF, got featured in PC Gamer and has got some really nice feedback. I’ve made some friends from the community and learnt quite a bit about object oriented programming and design patterns. I’ve also gained more experience in producing a game… and hey – released one more game.
I was also very pleased with the “bi-monthly” cycle of releases. Sometimes I got new version out in just one month, sometimes it took 3, but it was really nice to see the game evolving and going forward.
I also like how the core concept (barricading against zombie hordes) stayed the same since the very beginning of the project. With that being said, I enjoyed the barricading aspect the whole time, and it got some good feedback from the IGF judge panel.
Dead Wake got featured in PC Gamer – zombie edition. (How cool is that?)
And – like said – finishing a game and putting it out is a step forward always.
I’ll be covering more “good” stuff in the end – in the conclusions section.
“Free to play” is nice and it can help bring new customers for future games, and also helps build traffic which can help ad selling in the site. The bad about “free to play” is that I really aimed to sell this game. Unfortunately, the game compatibility simply isn’t in such level that I would feel comfortable trying to sell it. (Also, the game would need – in my opinion – several more features and content to make it sellable). I’ll mention these technical issues in the “ugly” section.
Other thing that was “bad” was the time spent. I aimed for 1 year. It took more than 2 to get the newest release out. In a way this is not bad (since I set my own release dates, and make up my own mind on how the project goes) but due the long development several things happened. Like for example the zombie genre got hot (Left 4 Dead, Zombies vs Plants, Zombie mods… etc.), and then cold (Left 4 Dead 2…) while I was building my game. I was sort of like missing the “time to market” – although glad that the “barricading” works differently than in any other zombie game.
In the middle of the project, when I was doing the switch to a new engine I was introduced to Leadwerks engine. Josh is a totally pro guy with the engine and has done great work building a really cool dev tool. The bad news was compatibility. Leadwerks requires Shader Model 3.0, and the worse news was that it wasn’t actually enough. Gamers with SM 3.0 support reported bugs ranging from flickering shadows to missing weapons to blank screens to missing shadows and so on. Part of it was probably me doing something terribly wrong, but some of them were confirmed to be Leadwerks bugs which got fixes in newer releases (if any). New engine upgrades fixed some of these issues, but brought some new ones (collision engine was totally changed, which caused barricading code workarounds, then the texture format was changed so that all files needed to be changed from .png to .dds).
Yet, some problems still remained, and a new upgrade was required. After doing part of the new upgrade, there was new problems (collision caused some objects to fall through ground for example, which was reported to be fixed in another new version). At this point I (remembering what friend of mine Jake pointed out earlier) decided to stop doing the upgrade and use 2.24 instead of 2.28. This means that certain video cards won’t display shadow properly, and that there are some other compatibility issues – which is much of the reason why I decided to keep the game free.
I don’t know how good compatibility the very newest (which came after 2.28 was released) version 2.3 has, and it’s possibly better than 2.24 or 2.28 but frankly, I’ve decided not to spend any more resource into doing any new engine upgrades.
I feel good that I made the decision to stick with the 2.24 and prepare a freeware version for people to play. I wanted to ensure that my game gets out before our baby (ETA: pretty much anytime), so I feel pretty good about this decision.
Some of the most important lessons from this project are:
- Keep momentum: releasing monthly (whether it is a video or demo or upgrade) is a great way to keep up the pace. I started this project over 2 years ago and I’m actually very amazed to see how motivated I was during this whole time. Sure, there was ups (=time near releases) & downs (=engine upgrades), but overall the motivation for this game was just fine. Much of the reason being monthly releases.
- Public release is a tricky beast: by releasing to public early you can get publicity (PC Gamer) and early feedback (community & testers) which is so great. The bad news is that it might be dangerous if you don’t have a really strong vision about the game. I think I managed to handle the whole project pretty nicely and felt that “I was getting help instead of being controlled by the community”. I acknowlege the danger though, and want to mention here: by letting people to “help with the design” you might feel somewhat “being controlled by other”. Same of course goes for talking about your stuff in your blog. The solution of course is just to ignore everybody and ensure that I’m 100% in control. (Read that book btw)
- Object oriented programming/design: This was a great thing. BlitzMax (which I was using for Dead Wake) does not have “real” object support, but it has something to manage. Also, learning about patterns is a must thing. Learning to reduce object dependencies and creating “small black boxes” is a big deal to everybody.
- Game developer or engine developer: I’ve written about this in my blog earlier and working with Leadwerks sometimes felt that I was working on my engine (I built a template scripting system, built “mini level editor”, re-worked my code to handle engine upgrades, and so on). Whenever I was doing an engine upgrade (and reworking on my code) I was feeling “shit, I wanna add some content! oh well, soon I can”. After the first upgrade was completed, and after I got to use my own template (scripting/modding) system I felt awesome on how easily and fast I could change weapon values and stuff. Working on Dead Wake has made me even more confident that scripting is pretty close the level where I want to stay in coding (Note to people: Leadwerks 2.3 nowadays offers Lua scripting, I didn’t want to do my code port to that – way too much work would have been needed). I don’t want to touch engine. I want to focus on higher level. That’s where I feel really productive. For some developers (like Lumooja :) it feels that you guys “enjoy working on the engine more than on the game”. And I think those people should work on the engine. I prefer working on the game. (And I’m not trying to say that this is the better way. I think devs should do what they really enjoy.)
- Choose an engine with proven projects: I started with (1) NeoAxis. Then (2) Blitz3D. (Then did some research for (3) UT3 modding but canceled that direction it after a very brief test) and finally (4) Leadwerks. Jump from NeoAxis to Blitz3D was a big deal. All code/effort was pretty much lost. Switch from Blitz3D to Leadwerks was a really good thing. I had several things ready made for Blitz3D and while it perhaps was not directly “porting it to Leadwerks” I felt that since the Leadwerks syntax was very similar to Blitz3D, it felt like I was “extending Blitz3D” so to speak. (Sure it meant work, but it felt good – and I got it up & running pretty fast). Learning BlitzMax and using Leadwerks helped to do certain things pretty fast as the tools were familiar. I knew that Leadwerk had compatibility issues (SM 3.0 required) but I was counting on that “in one year SM 3.0 has much wider support” – well, it turned out that there were many more problems than SM 3.0. I think Leadwerks is excellent for high-tech audience and especially for technology demos, but I think the most important feature an engine can offer is “proven history of projects”. Using an engine with “proven history of projects” is a big lesson and now very high in my own list, and something I’m considering when starting my next project.
And the last thing:
- Have fun: I think this is the most important thing. I had fun. I had tons of fun recording my wife playing Dead Wake shooting some zombie hordes (she had fun too). I had fun releasing new versions. I had fun doing IGF submission. I had one seeing my game in PC gamer. I’m having fun writing this blog post.
There’s some other things & lessons & stuff… but I’ll leave something for later. This blog post is long enough.
Over and out for now.