Delayed.

As many of you know, Soulcaster II was in peer review this week. (This is XNA’s central quality control, where other developers test your game and give it their stamp of approval if they can’t find any objectionable content or crash the game.)

Last night I pulled the game from review after discovering a controller lockup bug, the Evil Guitar Bug that has claimed many lives so far. I thought I had tested for everything, but I missed this. Basically, if you have a guitar controller connected when you start a new game, if you use a player number higher than the guitar’s player number, the game won’t be controllable. This is because the guitar is constantly sending non-neutral signals to the XBOX, and the game thinks the guitar has taken control and locks control to the guitar. The most common solution to this is a “Press Start” screen. If you’ve ever wondered why so many games have this screen, now you know one of the reasons!

There is a one week grace period before I can submit the game again for review, plus two days for it to be passed minimum, so the game is not going to make the first week deadline unfortunately. Nevertheless, I have the next week not only to fix this bug, but make improvements to the game in terms of balance and polish. I lost a lot of sleep scrambling to get things done by December 2nd, so maybe in my daze there were other issues lurking in the shadows that would mar the experience. Now I have time to find them and iron them out.

So, it’ll be another nine days. Bear with me and thanks for your patience!

Soulcaster II Preview

OK, so the press is going berserk over the Winter Uprising, and this site (being one of the top links in the press release) has had its traffic go up something like 5000% in the last couple days. Awesome!! But that also means I gotta provide some more info on the game here. This video should tie everyone over until development is complete…

Still want to know more?

Vitals:

  • Price: 240 MS Points
  • Release date: First week of December 2010
  • Platform: XBOX 360 (XBOX Live Indie Games)

What’s new in Soulcaster II?

  • Upgraded graphics engine
  • Four new tilesets
  • 30 new levels
  • All new soundtrack (including a new Merchant theme)
  • Four new monster types (including an exploding skeleton)
  • Exclusive upgrades for each of the three summons (which appear when you max out all other upgrades for that summon)
  • Better enemy AI
  • Improved performance, game can handle over 150 monsters on-screen now
  • New level mechanics, enabling new puzzles and level progressions

Preliminary feedback from playtesters on the Creator’s Club has been great so far!  Thanks to all my XNA peeps for your support and VERY helpful feedback.

Soulcaster II In Playtest

It’s nearly done!  At this stage there are balance issues and a few aesthetics, not to mention the final couple levels of the game.  Huge thanks to everyone who’s played the game so far.  If you’re a member of the Creator’s Club, please download it and post your comments on the forums.

This game is currently on track to become part of the Indie Games Winter Uprising.  Details forthcoming.

In the meantime, here are a couple teaser screenshots.

Soulcaster 2 Development Status

Yes, I’m still alive!  A lot has happened in the last couple months, and some of you may have wondered if Soulcaster 2 is still on track.  It absolutely is, but I think it’s going to miss its original “Summer 2010” release date.

Here’s an explanation.  It’s pretty embarassing for a professional programmer to admit to making this sort of mistake, but here goes.

Since the release of Soulcaster 1 I have been working on upgrading the game engine in a variety of ways.  There are a few new features like multi-layered backgrounds and more scripting possibilities.  A lot of changes were also under the hood–essentially, refactoring to make the code easier to extend for future games.  Another goal was to increase the performance.

Here’s the mistake.  I went over two months working exclusively in Windows without testing on target (360) until June.  For some reason, there were frame rate issues, meaning my new “optimized” code was bogging down the 360.  Aha, time to bust out the profiler!  (A profiler analyzes a program while it’s running and reports on various performance issues.)  I checked for memory leaks (garbage collection) and CPU bottlenecks.  Within a week I had the update and draw logic about 75% faster and things seemed fine.

Then I started testing out some of the old SC1 levels to see how they ran on the new engine.  To my horror, the two swarm levels (with over 100 mobs in the scene) completely chunked out on the 360.  We’re talking 5 FPS at some points.  Unacceptable.

I spent another two weeks scrambling to find the performance problem.  What had I changed that killed the performance?  The new features were costing a bit of extra draw time, but that wasn’t it.  I could call the draw function four times per frame and it wouldn’t change anything.  And according to the profiler, the update logic (calculating AI, creature positions, collision, etc.) was 40% faster in the new engine.  It was completely inexplicable and frustrating.  There was some architectural difference between the 360 and Windows, and my profiler just couldn’t track that down.

OK, my debugging was not working.  Time for deductive reasoning.  Let’s go into source control and keep rolling back until we find the version of the code that can’t run the swarm levels anymore, and see what’s been changed.  I rolled back to early July… then June… eventually found the problem to be in the first week of April, at revision 3.  Great!  Now it’s just a matter of finding what changed between revisions 2 and 3.

Another week passed and nothing came up.

Programmers in the audience may want to sit down at this point.  My next move was one of the most dreaded last resorts in software development:  I made a new copy of the Soulcaster 1 code base and put it in a new source control repository called “Soulcaster 2 New.”  Now I am in the process of adding all the features, bit by bit, by copying code from the broken Soulcaster 2 code base.  I’m paranoid enough to test my changes on the 360 several times a day, and so far things are good–much better in fact, since my torture tests can have about 150 monsters on the screen now with no issues (Soulcaster 1 could barely handle 100).

It’s not as bad as losing all my work, but it’s a lesson learned.

So where do we stand?  I have about 15 levels done, and four new tilesets complete.  The game is going to need all new music, but the sprites and sound effects are reused from SC1.  I figured I would post some screenshots to show what’s coming.