Tuesday, August 12, 2014

Imperator

After 2.5 years it should be apparent already, but for the formal record: Praetor will never be finished.  For all the fans who are reading this and are dismayed, please believe me when I say that this pains me far more than it does you.  My wife will attest that I hate leaving anything unfinished, much less something that I invested so much time in.

The death blow was a conjunction of three unthinkables:
  • My source code repository died - The hard drive failure that took out my repository didn't worry me at first, since I had an active working copy of all the source code.  But when I had replaced the repository's drive and went to rebuild the repository from the active content, the active stuff was gone--and I don't know why.

  • My backups died too - Here's the unthinkable part: being a veteran programmer, I make backups religiously--in fact, in addition to my primary and repository sites, I have a dedicated RAID-based NAS device to keep backups around.  So when my first two sites died, I shrugged and started recovery from my most recent backup on the NAS--not too bad, just a month or so out of date.  Except that while it was restoring, the NAS died too--and instead of its RAID masking the drive failure, it panicked.  I was never able to get the source off--and had to resort to my fourth, last-ditch backup, a thumb drive on my keychain: this has all the Earth, Water and Air levels but none of the new stuff I had written for Fire at all.  But worst was:

  • Microsoft killed support for XNA on Windows Phone - XNA is the graphics toolkit that Microsoft encouraged us all to use in writing games for Xbox, Windows Desktop and Windows Phone.  They still in fact tell you to use XNA for the first two, but no longer support it at all on the phone.  Which means I can't even recompile the old out-of-date Praetor source code that I managed to recover, much less add new stuff.
So, to move on!  I've thrown out the NAS box and replaced it with an entirely new brand, I've rebuilt my desktop machine, and I've invested in a bunch of next-generation development tools including Unity.  I've planned and schemed, I've contracted an honest-to-god fantasy author to do the plotting and script writing, and I've got a screenshot or two to throw out there to whet your palate.  Yes, there's going to be a sequel--and it's going to be awesome.

Monday, January 9, 2012

Third Praetor Campaign Finished

The last six months have been just awful.  This blog is all about Game Development 101, though, and I guess that's part of the deal: that being able to design and implement a game isn't enough.  You need a lot of drive to get the projects done, even in the face of some truly terrible resistance.

In my case, my mother just passed away following an unexpected stroke and diagnosis of metastatic cancer.  I've spent a lot of time travelling to visit and a lot of time worrying about her; my free time has gone to make up for the office time that I've lost, which means I've barely been able to work on Praetor at all.  I apologize to all the people who have bought and enjoyed the game and have been waiting for the next campaign.

Like many people though, I find some degree of solace in work: it's sometimes easiest to bury your head in a project until life feels bearable again.  So over the last month or so I've managed to burn through the remainder of the 25 battles that make up the third Praetor campaign--and tonight I finished the last one.  Done and done, as my mother used to say while brushing her hands together.

I need to do some final testing and tuning on this release prior to submitting it, but that step should only be days away now.  I've play-tested every level individually and need only to spot-check to make sure I haven't broken anything as I pushed forward, plus a little testing around the transitions to make sure upgrades go smoothly.

This third release includes the aforementioned 25 new bad guys to fight--actually it's 25 battles, but something like 35 different bad guys and another dozen magic enchantments that they bring to the party.  In compensation you gain access to another dozen good guys and a dozen new magics, plus you get stronger and healthier and gain a number of other new abilities.  The story line also moves forward, introducing a new ally (Kaitronius) who will play a big part in the fourth-and-final campaign.  Finally, I took the opportunity to sharpen the graphics a little bit: I recolored the water on the main screen, reworked the world map a good bit to reduce the noise introduced in ocean areas and recolored certain territories to match the campaign story.  And I put a new icon on it, because that's fun.  I also fixed a ton of bugs, including adding some very substantial safeguards to prevent losing saved-game files; I'll talk about those changes in a later post, because they represent relevant Game Development 101 content.

From a game sales perspective, Praetor continues to provide a slow but steady income: it's enough to cover my expenses for the hobby--including the dedicated server for the Random Software web site, which is non-trivial, and periodic upgrades in cell phone hardware for testing.  Looking back, though, the free version of Praetor was a mistake: it significantly siphoned off downloads of the for-pay version, and yet it never generated much in the way of ad revenue--maybe a dollar or two a day on average.  Peanuts.  I've withdrawn Praetor Free from distribution in the US, but have left it available in other countries (I've had people write to thank me for making it available in places where Zune doesn't accept purchases).  And I won't be updating Praetor Free to contain this new third campaign; if people want to play the full game, they can damn well shell out a few bucks.  It has only cost me two years of effort to write this thing after all.

Monday, August 15, 2011

Third Praetor Campaign Progress

This has been a busy time for me--lots of travel, lots of activity at the office, a family member very ill--so it's been hard to find a few moments to work on Praetor.  But I'm continuing to make progress anyway, as much for my sanity as for any desperate desire to actually finish.

Importantly, after writing 57 of the 100 distinct battles in the game, I've finally added support for walled encampments.  The picture to the right is a live screenshot, as opposed to the mockup I posted last time.  And walled areas like this--I'm calling them palisades internally--are extremely cool in the game.

First, the ownership of a palisade automatically shifts based on who's inside it.  The one in the picture is red-tinged because my opponent owns it; if I manage to get someone inside, that tinge will go away to show it's open, and if I'm the only one inside it will turn blue.

Palisade ownership is important because those walls are normally impenetrable: nothing's allowed to go through them (though flying creatures can go over, and so can projectiles).  But if you're standing next to a wall you can step through it if the stuff on the other side isn't owned by your enemy--so if you're inside your own palisade you can send out sorties, and your men can even step back inside to safety where the enemy can't follow.

Better, catapults tear down palisade walls: in this picture you can see a catapult has already put a hole in the walls up north.  Creatures can walk right through there and suddenly the encampment is overrun: the red tint goes away because it's contested territory, and now everyone can sneak through the walls.

I'm still tuning this particular battle and I haven't written the code for the victory piece yet, but it's good progress.  57 battles done; when I get to 75 I can release this stage, and 100 is the whole game.  If the sales remain (comparably) strong I may actually make it there.  Praetor is slowly dropping in the Top Downloads list, though Praetor Free is climbing--and they're both ranked very highly.  Ad revenue looks pretty poor--something like $90 last month--but I'm still experimenting with ad mixes to try to improve that.  It's too early to tell if the price increase on Praetor has had a net positive or negative effect.

I'm a little frustrated with not having finished Praetor, partially because I've got some great ideas for the next game to write--including some ideas put together by my kids--and I want to get started on those.  But first things first: there are a lot of people who have paid for this game, and for their sake--and my own--I feel like I should keep pushing this one until it's done.

Saturday, July 23, 2011

Third Praetor Campaign Underway


I've been seeing a lot of crashes reported by Praetor users, and the new WP7 developer "App Hub" reports statistics that corroborate: both the for-pay Praetor and the new ad-supported Praetor Free have been crashing far too often.

To fix this, over the last few weeks I've been concentrating on finding and fixing crashes and adding defensive code to make any as-yet-undiscovered bugs less visible in the field. For example, one of the computer opponent's current symptoms is that sometimes--maybe once every fifty battles or so--it will run forever trying to decide on its next move. I've found and fixed lots of causes of this, but there might be more causes--so I've taught the for-release builds to just give up looking for new options after a certain amount of effort, such that the computer opponent might play stupid but at least won't crash and bring the game down. Invariably that kind of defensive code is disabled in my debug builds, so that I'll still see the bad behaviors in house and will have a chance to fix them.

The newly stabilized Praetor 2.4 is in the release process, awaiting Microsoft's say-so to release. With any luck this will be the last substantial update I'll need to make until it's time to release the next campaign as Praetor 3.0.

With every campaign I'm adding 25 new battles, including 25-35 new bad guys and 20-25 new good guys to join your army. I'm also trying to add new features to the base game, however simple--for instance with the Water campaign I added the new Swamp tiles, which have an unusual effect on your movement across the land and can inflict a nasty Swamp Rot on your creatures. The Water campaign also added the idea of Allies--named warriors that join you on the battlefield as each fight begins.

The screenshot in the upper-right is faked--it's just a mock-up that I'm using as I try to get the visuals right--but it shows two of the new things I'm adding for the Air campaign. In the lower left is a series of Desert tiles, which inflict Exhaustion much as Swamp tiles inflict Rot. As your creatures try to travel through the deep desert their movement speed slows and their movement cost increases, and the longer they stay in the desert the more strength they lose. That strength recovers slowly once you leave the desert--unlike Rot, Exhaustion isn't fatal--until you're back to full strength. The result should be that crossing a desert will be a lengthy, wearying process--just as it should be.

More interesting is the red field in the upper right. Yes, Praetor is going to gain walls now: with the Air campaign you'll actually be tackling multiple cities and other fortifications, and you'll need to bring your catapults and siege engines to break down those walls. Oh, it's going to be simply tremendous.

I wrote the first 50 battles (all I've published so far) one at a time, kind of choosing where the plot would go with each battle as I wrote it. For the Air campaign, since I've been writing code only to fix bugs in the current release, I've spent time designing the new campaign instead of just immediately writing it. I've now got all 25 battles figured out ahead of time: all the bad guys, all their skills and strengths, all the things you gain and all the little plot twisties are already plotted out. That should make actual construction of the levels a lot easier to accomplish, since that creative part is the stuff I find hardest to accomplish--and now it's out of the way, leaving me able to concentrate on the easy part (the coding).

Oh, one more spoiler: in the Air campaign you'll be picking up a new ally: Kaitronius, a cousin of your second-in-command Tallius. Kaitronius will be with you for the rest of the game, and eventually the land in which you're fighting will be named for him ("Kaitron") when he is martyred near the end of the Fire campaign. That's all paving the road for the follow-up game "Lords of Kaitron," which I'm busily plotting out.

Wednesday, June 22, 2011

It's been about three months since I posted here. See, Praetor was just a huge undertaking and it left me kind of exhausted--so I took about a month off from doing anything other than the most essential bugfixing for my games, and concentrated on other stuff. Got my third-degree black belt. Turned 40. That kind of stuff.

And since it's been a full quarter since Praetor hit the markets, I bet you're all just dying to know how well it's selling. Well, I've got good news and bad there.

First, Praetor has unquestionably been a hit. It's in the phone's Top Downloads list just half a dozen flicks of the finger down from the top, far above many games--including some Xbox Live games--that I would've considered top notch. It has amassed over 100 reviews, almost all 4 or 5 stars (average is rounded to .5's, and stands at 4.5) and almost all using words like "incredible" and "amazing." I confess that I'm a little addicted to checking for new reviews a couple of times a day, just for the minor ego boost.

So subjectively, the game is doing well in the marketplace. Here's a more objective set of metrics: to date Praetor has racked up 1150 sales out of approximately 6000 downloads. That's a conversion rate of nearly 20%--extremely solid, especially considering that the app currently on the market doesn't even have an in-game link to make purchasing easy.

But in absolute numbers, 1150 sales isn't very much--not for a game that's doing so well by all the other metrics. Praetor sells at 99 cents, and I get 70% of that as gross income--so I'm making 70 cents per sale, which means to date Praetor has turned in about $800. Subtract the several hundred that I invested in outsourcing for music and graphics, and the yearly fee for being in the WP7 marketplace at all, and I'd be lucky to have netted half that. Subtract another 30% for taxes, and the 10% that I'm paying my son (who helped me come up with content for the game) and I'm left with about enough to support my Starbucks habit. Year of work == Starbucks habit. Yikes.

So I'm going to try something I never thought I would try: I'm going to release a second version of Praetor, this one free and displaying ads. Word on the developers' forums is that ad-supported apps are generating far more revenue than their paid equivalents, and it was the work of only one night to add the necessary code. Will give it a shot and see what happens.

In the mean time, after my brief "break" I've picked up working on the second episode of Praetor. Actually I just finished coding and testing battle number 47; when I finish number 50 I'll give it a little more testing and release version 2.0 to the world. I've also decided to increase the price to $1.99 for the non-ad-supported version; after all, there's twice the content now, so why not twice the price? If it drives more people to the ad version, well, so be it; I'll get paid there too.

I hope, anyway.

Sunday, March 27, 2011

And it's away!

I've just submitted Praetor to the Zune marketplace for inclusion in the WP7 app catalog. It will take several days at least before I know whether they're willing to include it as-is or require changes first.

It's been almost exactly one full year since I started development, and this is unquestionably the biggest game I've tried to produce under my one-man "Random Software" hobby label. The final package, fully compressed and encoded for release on a cell phone, is 24MB; anything beyond 10MB is considered sufficiently big that you need to connect your phone to a computer to download it, so this lands squarely in the Epic category as far as cell phone games are concerned.

I'm releasing Praetor exactly as my wife wisely suggested: rather than finishing the full hundred battles immediately, I've done a solid 25--including the first mini-boss and completing the entire Earth Magic saga. If this Episode 1 proves popular enough to justify the extra effort, I'll push ahead with Episode 2 where we wander into the lands where Water Magic prevails--and then on to Air and Fire if my enthusiasm stays strong.

So, congratulations to me! All three readers of my blog can rejoice. With projects that take a year to complete, it's pretty rare to get one to this stage of completion--and that feels pretty good. I'll post again if/when it finally shows up in the Zune marketplace.

Thursday, February 3, 2011

Praetor Progress


When we last left our hero--on Christmas day 2010--he reported in with 4 Praetor battles completed and good hopes for the future. Today, about 5.5 weeks later, the total stands at 23 completed battles and the game is looking great.

My wife is pushing me to declare victory at 50 levels, composing the game for a decent storyline completion halfway to my original goal and releasing it to the general public at that point with an upgrade (or "expansion pack" as she calls it) to follow down the road. And I have to admit I'm starting to like the idea; Praetor is turning out to be a lot of fun, and I'd like to see if it can actually build a following or not before I plow N more months of effort into it. At expert difficulty each battle still takes me 5 to 10 minutes, so 50 levels is between 4 and 8 hours of game play--perfectly fine for a 99-cent cell phone game.

I've also started adding more material to the web site--a couple of new screenshots and the beginnings of a strategy guide to help you get through the levels. Some of them are pretty tough, and reading through the guide you can see how your tactics have to shift as the opponents get stronger and you get new pieces to work with.