Categories
Game Development Marketing/Business Personal Development

The Third Ludum Dare October Challenge

Ludum Dare was originally a 48-hour game development competition. Given a theme, you have 48 hours to create an entire game using no pre-existing assets. In recent years it has grown into a huge phenomenon, expanding into a dual-event that occurs three times annually. There are also Mini LDs each month between the major events. And of course, there’s the awesome community that drives it that seems to get bigger and bigger.

Two years ago, PoV launched The October Challenge, which pushed developers to do more than simply create a game. Your task for this challenge was to take your game project, finish it, and put it on the market before the end of the month. Then, when you’ve earned your first dollar, you’ve completed the challenge.

The third October Challenge is here, and it’s a good opportunity for you to learn what it takes to “go pro” in game development.

When the first October Challenge was announced, it came at a perfect time for me. I had recently quit my day job to go full-time, but I had no real plan for how to proceed. I was thinking about how much time I should spend on any one game. Do I try to release lots of small games over the next year, or should I concentrate on making one or two really great games? I didn’t want to churn out crap, but I also didn’t want to put all of my eggs in one basket. After all, I only had so much savings, and the larger the game, the more time I would have to spend on it, which meant the more money I’d burn through. Where’s the optimal balance?

It was also immediately after August’s Ludum Dare #18. The theme was “Enemies as Weapons” and I had created my most ambitious LD48 game, “Stop That Hero!”

I really liked what I had come up with, even though it took me 72 hours to finish so I had to submit it to the LD Jam instead of the main compo, which meant less people played it. Still, the feedback was pretty good, and I was already thinking about polishing the game up and selling it as my first major commercial project. The question was how long I should spend on the updated/better version?

The October Challenge helped answer the question for me. I had a month to finish the game and get it out there.

Unfortunately, I made some major mistakes. I completely rewrote the game from scratch, attempting to learn how to create component-based game objects. I had never written a full-fledged game architecture before, and I was using up a big part of my month building an engine rather than a game. I was trying to make it as data-driven as possible, which made it difficult to settle on a solid vision for the game. And due to my lack of progress, I hit a real funk that I couldn’t shake for awhile. You can read more about what went right and wrong in the Stop That Hero! October Challenge post mortem.

I was determined to sell my first copy, but it clearly wasn’t happening that October. That month, 20 people submitted entries in which they earned their first dollar through pre-orders, ads, or sales. Over the next year, I continued to work on the game, and I sold my first pre-order and earned my first $1 on September 30th, 2011, one day before the next October. I’m still working on it, and you can try out (and purchase!) the current version of Stop That Hero! today.

It took a lot longer than I originally expected, but without this challenge, I don’t know how long I would have gone before figuring out my real strengths and weaknesses as a game developer. I clearly had a lot to learn, and I still do.

So if you’re interested in running your own indie game development business, I would highly recommend participating in this year’s October Challenge. There’s more to running a game development business than developing games, and this challenge is an excuse to find out what’s involved.

Are you participating?

Categories
Games Personal Development

Iowa Game Developer Meetup for October

It has been awhile, but I’ve scheduled another Midwest Mingle on October 11th.

If you’re planning on being in Des Moines, IA next week, come hang out with other game developers to play, demo, and talk games and their design.

Categories
Games Marketing/Business

Why Indies Rule: An FTL Purchase Mistake

Years ago, I had a girlfriend who loved The Sims. She had the original game, plus a bunch of expansions. It represented quite a financial investment at a few hundred dollars.

Then she got a Mac when her PC died. Fortunately, The Sims has a Mac port.

Unfortunately, EA didn’t do the Mac port, and she was told that she would have to repurchase the game and the expansions for the Mac if she wanted to be able to play on her new computer.

Suffice it to say, she decided not to go that route.

Another time, I purchased a copy of an Activision game through a used music store. When I got home, I found out that the game needed a key, and apparently my used copy didn’t have a key. Activision’s support said they couldn’t provide another, so I was apparently out of luck. Now, say what you want about whether or not buying the game used was a smart thing to do in the first place, but the point was that I bought a game and couldn’t play it.

Fast-forward to today. I’ve been seeing some great reports about the game FTL, a space-based roguelike by Subset Games. They had a successful Kickstarter campaign, did well in the IGF, and seem to have quite a fan-base. Jay Barnson mentioned FTL in his Innovation Spotlight series, and they’ve gotten quite a bit of press elsewhere, too.

And then on Google+, I’ve seen a few screenshots, and so I decided to get it myself.

I saw that they offer a few ways to purchase the game. You could buy it on the site directly, through Steam, or through GOG.com.

As Steam isn’t available for Linux yet, I opted to buy through GOG, as I have a bit of a library on that site, and I liked the idea that I could download it anytime I wanted.

Unfortunately, as soon as I submitted my purchase, I realized my mistake. While FTL is available for Windows, Mac, and Linux, GOG only provides the Windows version.

Nooooooooooooooooo! And I wasn’t the only one who made that mistake, based on this thread on the GOG forums: Request for GOG: Linux+Mac versions as extra

So what could I do?

Well, rather than cancel my purchase, I emailed the developers directly. I explained that I made a mistake and wondered if I would be able to get access to the Linux version. I thought that the worst that could happen is that I’d have to cancel my purchase through GOG and repurchase through the FTL site, but maybe there wouldn’t be a need for such ceremony.

The next morning, I woke up to find an email from one of the developers, who provided a link to get the Linux version.

w00t! Indies rule!

This is the kind of simple yet great service that indies can easily provide.

And so this first FTL death is dedicated to Subset Games:

My First FTL Game Over

Thanks!

Do you have any stories about great service from indie game developers?

Categories
Geek / Technical

Why Is It So Difficult to Submit Games to Linux Gaming Sites?

On Monday, I posted the official announcement that the next version of “Stop That Hero!”, aka the Sound Update, has been released.

Existing customers received an email with a link to their copy a couple of weeks ago. There’s a demo available this time, and I’m looking forward to getting feedback about this new version.

I wanted to submit the news to a few Linux-focused sites, but it’s been a bit of a pain to do so. For some reason, many sites don’t seem to handle form data correctly.

When I went to submit a news item to LXer.com, I had some difficulty with a difference between what I submitted and what came back when I previewed the item. It did get published, but the headline was changed by someone to “Announcing the Sound Update”, which makes sense on a site about the game, but isn’t so attention-grabbing on a site that publishes many posts each day.

I learned that The Linux Game Tome updated their forums this past summer, and now submitting or updating entries in their game database is broken. Since no new submissions have arrived since June, according to their main page, I’m going to assume that other people haven’t been able to do so either. I sent an email to the staff and am waiting to hear back.

SubmitANewsItem

And LinuxGames.com needs you to use HTML to format your entry, but if you click Preview, the page reloads and your text is gone. If you click submit, it looks like the same result, only it takes a lot longer to load, so hopefully it got through? You’d have no idea because the site doesn’t indicate that you’ve submitted anything.

And these sites aren’t the only ones with problematic submission forms. In some cases, I have no obvious way to contact the site owners, so I can’t even email someone to say, “Hey, I think I’m having trouble using your site.”

What gives?

It’s 2012. Haven’t best practices for HTML form validation been around for long enough? Why do your users need to be aware of HTML markup to correctly use your website? Why does it feel like there is some trick to it? It’s too bad because I really like these sites, but contributing to them is always awkward and confusing.

What has your experience been when it comes to submitting news of your game to enthusiast sites?

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD24: Development Timelapse, or The Evolution of My Game #LD48

48 hours of game development has been condensed into a little over a minute and a half of video.

It looks as if a lot of the creating parts happened in small bursts of a few seconds, done around IRC and eating. B-)

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD24: FINISHED! #LD48

It is done.

It doesn’t have nearly as much as I wanted. I had design notes for different enemies with different movement patterns, weapon types, power-ups evolutionary upgrades, and bosses.

What I do have is a basic enemy that gets more and more health and moves faster and faster in each wave. You have three lives. And each killed enemy gives you 10 points.

It has some basic sound effects.

Evolution Game

And you can get the files here:

Windows .zip 5.2 MB
Linux tar.gz 4.7 MB
Source .zip 4.0 MB

And now, I will celebrate with a peanut butter covered chocolate chip cookie.

Peanut butter covered chocolate chip cookie

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD24: Bug-killing Game Play #LD48

I managed to get a lot accomplished in a couple of hours.

– get the player’s character in the game
– make it controllable
– add obstacles (most likely boulders)
– make collisions between the player and obstacles deadly
– make collisions between bullets and boulders result in bullets disappearing
– add an enemy
– make collisions between bullets and enemies result in damaged enemies
– make collisions between player and enemies result in killed player
– create a wave of enemies
– create a way to modify the wave of enemies so each enemy evolves in some way

Right now, you can shoot enemies as they approach, and when they die, they become harmless and visibly destroyed. If you crash into an enemy that is still alive, you both die.

Evolution Game Play

Enemies are mindless right now. They simply move forward in a straight line to the left. While I have a bunch of random enemies that looks like a wave, I don’t really have waves as a concept in the game. And with less than four hours left, I don’t think I’ll be adding lots of visibly different enemies and power-ups. We’ll see.

Oh, and my wife was nice enough to bring me something to snack on.

Got any gwapes?

Grapes

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD24: Sub Sandwich and Enemies #LD48

I woke up with a sore back. I was lying down on the floor with my legs up on the ottoman since that’s supposed to help your muscles relax if you do it for about 30 minutes. Then I went back to bed, and I didn’t wake up for a few hours. Then it was time to go to church with my wife, and we had lunch:

Planet Veggie Sub sandwich

That’s a Planet Veggie from Planet Sub. It has provolone, cheddar, fresh red peppers, artichoke hearts, sun-dried tomatoes, and a tangy olive spread. I washed it down with lemonade.

I wish I can say I’ve made progress, but sitting at the computer has been incredibly uncomfortable. But lying on the floor seemed to have helped, so I’ll be back at this project today.

A reminder of what I’m doing:
– get the player’s character in the game
– make it controllable
– add obstacles (most likely boulders)
– make collisions between the player and obstacles deadly
– make collisions between bullets and boulders result in bullets disappearing
– add an enemy
– create a wave of enemies
– create a way to modify the wave of enemies so each enemy evolves in some way

There’s a little over 6 hours left in the compo. I can do this.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD24: Deadly Boulders #LD48

The player can control the tank, including firing bullets. I’ve also added boulders.

They are randomly placed in the environment, and when the player passes them, they are removed from the game. If there are no boulders left, more are generated.

Collision between the player and a boulder is deadly, as demonstrated by the randomly controlled tank in this video:

I had some difficulty with handling bullet collisions with the boulders. Right now, they shoot right through them. I want them to disappear. Boulders are not affected by bullets. I have plans for boulders interacting with enemies and explosives, though. If an enemy hits a boulder, I think it would make for an interesting mechanic if the boulder starts to move towards the player. Explosives should be the only thing that destroys boulders.

My current plan:
– get the player’s character in the game
– make it controllable
– add obstacles (most likely boulders)
– make collisions between the player and obstacles deadly
– make collisions between bullets and boulders result in bullets disappearing
– add an enemy
– create a wave of enemies
– create a way to modify the wave of enemies so each enemy evolves in some way

One thing I was hoping to use was my component system, but so far I’ve represented bullets and boulders as positions, along with constants representing their collision radius. It’s working well enough.

Once I get bullets working right (I’ll need that collision detection working for the enemies anyway), I can finally start working on the first enemy so I can get around to doing some evolving.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD24: A Second Dinner Today? #LD48

So while the pasta was ok, apparently I was still hungry.

Cheeseless pizza

As for the game, I realized that my code that wraps libSDL and allows the rest of the code to be easily unit tested has a problem. It only knows if a key is currently being pressed or is currently released. It has no easy way to tell if the key has just been pressed or released.


case SDL_KEYDOWN:
{
m_keyboardState.setKeyDown(event.key.keysym.sym);
}
break;
case SDL_KEYUP:
{
m_keyboardState.setKeyUp(event.key.keysym.sym);
}
break;

Typically you would check SDL_KEYDOWN/SDL_KEYUP events in the event pump, and if those events occurred, you could handle them directly. Since I wanted my code to be unit tested, I created a HardwareLayer that wraps all of this functionality, and I used a KeyboardState class (that’s m_keyboardState) to track key status. Then, in my game, I can check the keyboard state for individual keys to see if anything is being pressed.

What this means in practice is that SDL is already creating an event for a key press/release, but then I ignore the existence of the event, tracking only the status. If I want to know if a key has been pressed this update, I essentially have to write code to track the state of the key and do a few if statements to know if I’ve already processed it or not.

But why do that when SDL has already done the work for me?

So I’m modifying my keyboard state to track not only the status of a key, but to also track the fact that it has been pressed or released this update. Then my game can check for this list of events, do whatever it needs, and at the end of the update, the keyboard state will clear out the list.

And this is why LD is fun.