Dead Wake Released, Long Post Following (Which Is Pretty Cool)

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.

The Good
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.

The Bad
“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.

The Ugly
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.

Conclusions
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.

Producers Are Like Cry Babies

As I have my own baby project going on, and as I’ve witnessed some producers actions (and happen to be an indie one) I came to conclusion that producers are almost like babies.

situation baby producer
needs diapers yes yes (based on how much bullshit you can pick from his talk)
says incomprehensible stuff yes yes (obvious)
is the boss yes yes
is agile yes yes (at least think his team is doing “agile development”)
craves for attention yes oh, yes (some even put out public blogs to make them feel important)
cries for attention yes yes
eats most of the time yes yes (lunches, lunches, lunches)
cries yes yes (see below)
Thinks that you promised something when you said that “This is only a gut feeling estimation based on total guesswork. In no way this should be used as a promise to anyone. This task might take 3 days, or not. Most likely it won’t. In fact, most likely it will be something totally different I think. I cannot promise that I can get you that toy/feature in time and you should not even think that this can be completed in 3 days.” Yet after 3 days (s)he comes to you crying “but you promised!!!” yes yes (i’ve witnessed this happening)
is cute yes hardly

Besides the cute-factor, I think the evidence is pretty solid.

Do You Know Why I Kind of Don’t Order Stuff From Amazon?

Whenever I’d like to buy stuff from Amazon they are putting these things to stop me. I’m no longer buying stuff from Amazon. Usually I use some other place. The reason is pretty simple. Bookdepository and Play.com clearly show me the final price (including rates for shipping to Finland) of the products.

With Amazon, I don’t know the end price after I’ve (1) logged in, (2) went to checkout, (3) inserted my credit card information, (4) and then reviewing the order.

Compared to “seeing the product and that this is the price” it’s not so usable.

(Amazon still has the best way to look inside products, get product recommendations & reviews so I’m not totally forgotten their site…)

Any Good Notepad Killers?

I want a simple editor. Simple editor that can handle multiple tabs. And can find & replace stuff. And has UTF-8 support. And possibly a possibility to change font. Maybe background color as well. It must not have anything extra. And must load fast.

Notepad is not good enough. Wordpad has too much buttons. Something in between?

What are you using for text editing?

What To Do If You Are Hired To Do Work, Knowing That The Plan Is Not Going To Work

I remembered one incident from 15 years ago. I don’t know why this came to my mind (maybe due the fact that I’ve been working on non-games stuff to pile some additional funds for this project). I was hired to do a visual presentation about a fire that spread quite far in my childhood town.

My uncle hired me and told me what to do.

When I saw the plan (me: age 15ish, uncle age: 3 times my age) I suggested that “yeh, the animated fire over the map looks pretty nice, but wouldn’t it make sense to put a *fast forward* button there so that in the presentation you don’t have to wait for the 3 minute animation to finish”.

My uncle immediately said: “No need for that, this is very good”

To which I replied: “…”

Okay, I was like “the lil boy working with stuff that I was hired to do” and my uncle was the “boss who said how things should be done”. And… he was my uncle. And authority. You don’t tell “but this will be shitty” to authority, right? At least in that situation I just let it be.

Then it was the presentation day. My uncle was saying things. Then some fireman started explaining how the fire spread (and told me to start the animation). The animation begun and everybody was looking the screen really amazed. For 16 seconds. Until then, the fireman needed to pause. And then my uncle said out loud to me (so that everybody could hear it): “hey, please fast forward it a bit”. To which I said pretty silent “It can’t be done, you said…” and then my uncle interrupted me and continued with even louder voice (so that everybody in the room could hear) “looks like boys have not done a fast forward for this, so let’s all wait for a moment for the animation to play”.

I think he did not do that on purpose. I think he genuenily thought that he had done nothing wrong and that it’s a “small problem in the boy’s animation, but I’ll protect him” type of thing. At least that’s my impression.

And it’s not like that I have grudges and plan some evil plot against my uncle (with the exception of publicly attempt to prove him totally wrong him via this blog post – he hardly speaks English I presume – and showing that I was right!). Okay, jokes aside. I didn’t feel bad or anything about that situation. The presentation was fine and everybody liked it, but for some reason this incident was buried into my memory.

I knew I was right. I explained the potential problem in the very beginning, before the presentation. I suggested the solution (which wouldn’t been a big deal to be honest). But the end result was “no, let’s not do that” and afterwards “why didn’t you do that?” (in a very small scale).

I wonder how common this is in people’s lives? Do you encounter situations where you know how things should be done, but your boss is stopping you from doing it – and then blaming you afterward for not doing the thing (which the boss had told you not to do)? How often?

I wonder if I have been like this in my past. I don’t recall any incident where I’d behave like this, but maybe I have. I don’t know. My own brain is telling me how good I’m at anything, so I cannot trust that part of me. It’ll just fool me.

Do you behave a boss like this? Have you done this in your past?

Any advice on how to handle situations like this?

One Or Two Screens?

I’ve been using one computer screen as long as I remember. In fact, I didn’t even realize that you could have 2 monitors until I saw this happening some years ago.

At one point I tried doing stuff with 2 monitors. The end result was that I didn’t like it. To me, the gap between monitors is irritating. Therefore I simply like using a solid one monitor. Large screen enuf and good resolution enuf to handle several windows in my view.

How you like to work? With one monitor. Two? Or perhaps even more?