Archive - Articles RSS Feed

Indie Royale Bonus Content Unlocked: Soulcaster Guest Remix Album

It’s official: Indie Royale has added some music content to bundle purchasers, including six never-before-heard Soulcaster remixes done by some talented friends of mine.

Back when we were setting up the bundle, the Royale crew asked about adding the Soulcaster OST’s to the bundle as bonus content.  I was fine with that, but knowing that they’re available for “name your price” on Bandcamp, I wanted to provide something special and exclusive for the bundle.

My concept: a remix album.  The only problem was that I didn’t have any time to work on it.  So I put the word out to some composer buddies, to see if there was anyone willing to do a track in just a few days.  I thought maybe one or two people would have time, but no… here are the six songs I got back.  Unreal!

Here are some bios on the contributors.  In the spirit of Valentine’s day I’ve tried to add my personal touch to them. (I’m listening to the To The Moon soundtrack right now, so if this starts getting really sentimental, just bear with me.)

 1. James McCawley – Neverglade 02:35

James is a long-time friend with origins going back to the Video Games Lounge on AOL.  He’s currently working as a sound designer & “occasional composer” at Treyarch, where he recently wrote some incidental music for Black Ops, including most of the BGM for Dead Ops Arcade.

 2. Kyle Johnson – Ruin the Remix 04:00

Kyle and I met through the Game Audio Network Guild back in 2005, when we first collaborated on some contract gigs for GBA and NDS audio. Since then we’ve become close friends, and I’ve known him through his tenure at Neversoft, where he did all kinds of stuff for the Guitar Hero franchise, notably (ha!) track design. He’s an all-terrain music guru with sharp composing skills, who just so happens to shred at the guitar. His latest project is a deep ambient collaboration with Tom Owen, We Spies.

3. Surasshu – All Souls Alliance (10,000% Remix) 04:35

Steven and I also met through the G.A.N.G. back in 2005, and he proved a valuable ally on the many game soundtracks we did. It’s rare to find someone who can cope with the limitations of Gameboy Advance and DS, but Steven just happens to be a master of authentic 8-bit and chiptune styles. Just don’t think he’s pigeonholed into that style though, because I’ve found him one of the more versatile composers I’ve worked with. His most recent endeavor is yogurtbox – Tree of Knowledge, what I can only describe as the soundtrack to a make-believe Japanese dating sim.

 4. Jake ‘virt’ Kaufman – Merchant of Beatdowns 04:08

How do I write a bio on virt? Everyone knows virt! Jake and I started doing game audio around the same time, about a decade ago, and in that time he has gone from mere mortal to unstoppable demigod. I could name drop (Bloodrayne: Betrayal and Retro City Rampage), but what I want to say most is that he came through for me on this face-crushing dubstep remix with zero advance notice from me. I think he went without sleep to help me promote Soulcaster’s PC debut and that just says a lot about the man’s character.

 5. DJ Bouche – Soulcaster II (Northern Lights Remix) 02:23

Andrew Lim (a.k.a. DJ Bouche) is a contact I made through this remix album, actually, when I asked Steven to see if he knew anyone interested in doing a track. Steven came through with DJ Bouche. He’s a remix, trance, soundtrack and chiptune virtuoso, who according to his Soundcloud profile, is looking for a break into the industry. Listen to the track, and listen to his Soundcloud reel… the man is ready.

6. madbrain – Storybook – Symphonic MIx 02:10

Hubert Lamontagne (a.k.a. madbrain) is another Surasshu comnection. He’s a mysterious fellow without much web presence, flying under the radar for now, no doubt waiting for the right time to make his move. In addition to music composition skills, he’s got some programming ability and is making a digital synthesizer based on physical modeling of wind instruments.

Cover illustration: James Walker

James and I first got in contact just a few months ago, when he dropped me a message about Escape Goat.  He’s a fellow jack-of-all-trades game developer, currently working on a master’s in statistical analysis of compiler optimization (OK, so he’s a few notches above me in the coding department).  When he’s not distracted by academics, he’s working on his next indie title, yet to be announced but looking very cool so far.

As of now, the only way to get these awesome tracks is to buy the bundle… your contributions will be put to good use, trust me! Help us shatter some records, and get some great games and music in the process.

Getting DPad Input from Thumbsticks in XNA – The Right Way

If you want to simulate 4-way DPad movement with the left or right analog thumbstick in XNA, my advice is to never use Buttons.LeftThumbStickUp, etc. This is because the default behavior doesn’t take into account the dead zone for the stick, which varies from controller to controller.  (The dead zone is the location near the center of the stick position, where it won’t send any movement value to the Xbox.)

You might test on a controller with a large dead zone and have no problem, then someone else will play your game with a very small dead zone, and they will find the control “sticking” in that direction.  I’ve had some controllers where the dead zone was so precise, I could have my thumb off the joystick and it would still be transmitting a tiny movement value.

I suggest adding a large dead zone, to make sure you only get simulated DPad input for large, deliberate movements of the analog stick.  Here’s some code that works for me, adjust as necessary to fit your control scheme:

static Buttons GetThumbstickDirection(PlayerIndex player, bool leftStick)
{
    float thumbstickTolerance = 0.35f;

    GamePadState gs = GamePad.GetState(player);
    Vector2 direction = (leftStick) ?
        gs.ThumbSticks.Left : gs.ThumbSticks.Right;

    float absX = Math.Abs(direction.X);
    float absY = Math.Abs(direction.Y);

    if (absX > absY && absX > thumbstickTolerance)
    {
        return (direction.X > 0) ? Buttons.DPadRight : Buttons.DPadLeft;
    }
    else if (absX < absY && absY > thumbstickTolerance)
    {
        return (direction.Y > 0) ? Buttons.DPadUp : Buttons.DPadDown;
    }
    return (Buttons)0;
}

Magic Seal Pelts Follow-up: First Week After Price Drop

One week ago, on December 13, I dropped the prices of my first two games, Soulcaster and Soulcaster II, to coincide with an article I wrote for IndieGamerChick (later picked up by Gamasutra).  The short story is that Escape Goat wasn’t selling as well as I hoped, and my hypothesis was that it was because it was priced at 240 MSP instead of 80 MSP.  The sales figures are finally in, so I can report what’s happened so far.

Bottom line: the price drop resulted in a staggering increase in revenue. Let’s take a closer look, starting with how things were selling in November to establish a baseline.

November 1-30 2011 Sales (30 days):

Game Trials Sales Conversion Daily Net
Soulcaster 115 39 34% $2.73
Soulcaster II 76 18 23% $1.26
Escape Goat* 2686 515 19% $37.29

*Escape Goat has much stronger numbers because November was its release month. Take a look at how the daily revenue has tapered off in its second month:

As you can see, the revenue from the Soulcaster games was barely covering my rent at the coffee shop.  So let’s see what happened in the week since the price drop:

December 13-19 2011 Sales (7 days):

Game Trials Sales Conversion Daily Net Net Change
Soulcaster 63 142 225% $14.20 +520%
Soulcaster II 80 86 107% $8.60 +680%
Escape Goat 117 52 44% $15.60 -237%

The numbers speak for themselves.  I also brought in some charts to give this post a bit more visual impact:

Escape Goat:

Soulcaster:

Soulcaster II:

The most shocking stat for me is the conversion rate.  For both games it jumped above 100%.  This means more people are buying the full version than are trying the demo first.  One explanation for this is that fans of one game buy the second one sight-unseen, perhaps through the new “related games” links.  The games are similar enough that if you like one, you’ll probably like the other.  But outside of those purchases, I think it really speaks to the power of the 80 MSP in terms of impulse buying.  Customers are grabbing the full version without trying it out first, because, “hey, it’s only 80 MSP.”

Edit: As pointed out to me by Ben Kane, Alex Macfarlane Smith, and Paul Thomas, the “over 100%” conversion might be from customers who had previously downloaded the trial, rather than trying the game on the purchase date.  Thanks guys for noting this.

I know, it’s early to call.  Just one week of data, and who knows, it could all collapse over the next couple weeks.  Maybe a chunk of these sales are the result of the publicity my price drop got.  To know for sure, we’ll just have to wait.

To summarize:

  1. After dropping the price, sales went up 12-fold, driving daily revenue up five-fold.
  2. I’m making nearly as much off Soulcaster, a game that’s been out over 20 months, as I am off Escape Goat, which is only in its second month and should be in its prime for sales.
  3. The dashboard update seemed to have little effect, since it went into effect a few days before the price drop.  And notice how it did not impact the sales or downloads of Escape Goat.

I’ll post another update after some more figures come in.  But so far, 80 MSP seems like the right price for these games.  It’s great to be making money with them again.  I can’t wait until February when I can drop the price on Escape Goat as well.

Tales from the Dev Side… and a Price Drop

Soulcaster and Soulcaster II are now 80 Microsoft Points!  Yup, just one US dollar.

This is part of a pricing experiment.

Read more in my guest editorial at IndieGamerChick, including juicy sales data!

How To Contact the Press About Your Indie Game

My favorite talk from IndieCade last week was Sue Bohle’s PR Clinic.  I could hardly take notes fast enough.  When I mentioned this talk on Twitter, I got some interest from people who couldn’t attend and wanted to know the basics.  So here’s my distillation of Sue’s PR principles.

This is all based on the notes I took, some of which became illegible scrawls, with missing pieces filled in from memory.  My apologies to Sue if I end up misrepresenting anything she said.  I think this is pretty close though.

How to Get The Press Interested

  1. Describe what is unique and distinctive about your game. What stands out about its production, team, concept, to create an interesting story?
  2. A fun event such as a contest related to your game could generate interest
  3. Always respond to emails from editors promptly, and assume their time is very precious
  4. Don’t use attachments!  Put the press release in the body of the email, and use links to your screenshots.  (Would you open an email with an attachment from someone you don’t know?)
  5. Gather 12 great screenshots.  Pick 3 sites you want to get coverage on more than the others, and send them two exclusive screenshots apiece.  Send the others to the remaining sites as non-exclusive.
  6. Two movies are better than one… but one is essential.  Make a trailer.  Need an idea for a second movie?  Behind the scenes, developer interview, stuff like that.
  7. Look at the recipient’s website before you blindly send a PR… would they even be interested?

Elements of a Press Release

  1. Header (and email subject) should be a grabber.  This may be your only chance to get the writer interested in your game.
  2. First paragraph: Location & Date (like a news story), then answer who-what-when-where about your game in 35-50 words.  Imagine you have ten seconds to describe your game.
  3. Second paragraph: What amazing, interesting and unique features does your game have? Use a bullet point list. Not too many items, maybe 4-8.
  4. Third paragraph: quote from the developer (you) “in quotes.”  This is the personal touch.  Interview yourself.
  5. End with a call to action. Do you want them to check out your review copy? Set up an interview? Figure out what the whole point of the email was.
  6. Write the whole thing like a journalist would. A well-crafted press release could be copy-pasted verbatim and look like a news story.
I found this talk extremely informative, since I definitely violated many of these principles in the past.  I hope you find it useful as well.
Have anything to add?  Please comment!

Holding the Line with Scope Creep

Dave Voyles recently posted 0 to Indie in 5 Easy Steps on ArmlessOctopus, a distillation of a panel at PAX 2011.  My favorite advice bit from the five was “manage your scope.”  This is such an important step to take, though for me, not an easy one.

In the last few weeks, Escape Goat has really come together, and everyone who’s played it so far has liked it.  I’m very proud of that.  Yet a lot of play testers also have a few features they’d like to see… and really, how long would they take to add?  I’ll explain the specifics after the game’s out and I do my multi-part postmortem on the process, but for now, even the smallest extra features have got to wait until the sequel.  I’m holding the line.

I’m in a situation I reach frequently when composing music.  I’ve got a pretty good sounding song, but I think that with some more time it’ll get better.  Sometimes it does, and sometimes it gets worse.  Refining can easily become tinkering.  Then, there’s nothing to show for your lost time.  That’s kind of where I’m at with this project: I don’t want to tinker much more, because something might be spoiled.

What if I miss some great opportunity?  There’s always the sequel.

 

Staging Code Tasks on Notepad

I’ve tried dozens of organization apps and software, and Notepad is still my favorite.  Its biggest drawback used to be accessibility–having to keep the text files with you if you work on more than one computer.  DropBox fixed that.

I tend to keep a text file of tasks so I know where to pick up tomorrow.  It’s vital that one of those tasks is immediately accessible and not too abstract.

  • OK: “Fix overlapping blocks collision bug.”  
  • Better: “Reproduce overlapping blocks bug by building a test room.”

Today was one of those coding days where every fix reveals yet another fix that’s needed.  My initial task list was about 15 items but I probably checked in over 40 changes today.  It’s frustrating to have done so much more work than I thought was needed, and still not be where I thought I would be today.  But, I’m still generally on track, and things had moved forward a lot.  It could be worse, I could have attempted a major refactoring and broken things so badly that I had no choice but to revert to the last update in source control.  It’s happened, but not today.  Today was just a steady unraveling of long-dormant bugs and tiny features that insisted on their existence at the last minute.

Notepad kept me sane.  Minor bugs kept cropping up, and I would just jot them into the text file.  As I fixed them, I would cut them out and paste them into the source control check-in log.  I’m down to about 3 right now, nothing major, and if I weren’t superstitious about this sort of thing I would say I’ve totally got it handled tomorrow.

 

Page 1 of 3123»