Friday, March 19, 2010

So much to do with such constrained resources

Well, first things first, Crab Crawl 1.0 is now available in the iTunes app store!

 

So what next?  That brings me to my point.  I am just one person, with a full-time job which takes the bulk of my day.  But I have tons of ideas / desires, and not enough time to see them all through.

Aside from any ideas I have, I’ve got to make sure that I’m keeping my existing apps up-to-date.  That’s an issue I didn’t properly anticipate.  The more apps I create, the more maintenance I have to do.  From a business perspective, it doesn’t make sense to spend much effort updating apps unless they generate a significant amount of revenue, but I still feel compelled to continue to add cool stuff for the customers who support me.  (I had to try really hard to avoid sounding markety-businessy there.)

Beyond that, what should I do next?  Another iPhone game?  That’s my current plan.  But what about the iPad?  It’s had some impressive preorders already and it has a lot of potential.  I could create a game on it, sure, but there are other interesting applications I can envision.

And then, of course, there’s this little thing called the Windows Phone 7 Series.  My knee-jerk reaction is to stay far, far away from any Microsoft phone.  I bought one before, after all – a fancy HTC smartphone with features that put the iPhone to shame.  But Windows Mobile killed my soul.  It was every negative stereotype about Microsoft rolled into a single device.  Slow, cumbersome, annoying, with an OS that felt like it was ported from a desktop version. 

So now, finally, Windows Mobile 7 – er, wait, Windows Phone 7 Series – is on the horizon.  The developer tools are available.  It looks slick and streamlined; more like the Zune (which is good) than a desktop OS (which shouldn’t be on a phone).  But it’s Microsoft, and they know how to take a good thing and screw it up.  I don’t believe I have any unwarranted bias against Microsoft, though.  I want them to succeed, desperately, because I want to use their far superior development tools, and their less-closed platform.  I’ve even gotten over my troubles with the long, Microsoft-esque name: “Windows Phone 7 Series”.  I can write it off as foresight on MS’s part.  (Assuming all goes as planned, we’ll just be calling these things “Windows Phones” and we’ll just tack on a number / designation for whatever the latest version is.)

But it’s so risky to leap to the Windows Phone, and admittedly it’d be a bit soul crushing to come crawling back to Windows after I invested almost 2 years in the iPhone platform.  But if I had a magical guarantee that the Windows Phone was going to have identical marketshare as the iPhone, you better believe I’d jump on it.

Tuesday, March 16, 2010

GDC Notes Day 1 Part 2

SCRAP METAL: Pushing the Envelope With a Team of Two

Scrap Metal (top down 3D racing game with nice visuals / lighting / etc.) developer talked about his experiences working on scrap metal.  They attempted to write the game using C# / XNA but the performance was “terrible”, they claimed.  It’s a shame that they didn’t dive deeper into the causes of these perf issues.  I’d be really curious to know if managed code optimizations would have fixed this.  Anyway, they switched to C++.

They made a physics engine specific to the game and their general sentiment was that using a one-size-fits-all physics engine “took away the personality” of the game. 

They focused a lot on tools which verified game assets (and even behaviors) in real-time.  Changing AI behaviors, shaders, and even car physics and testing in real time.

They really stressed iteration, focusing on a basic mechanic and creating “vertical slices” and iterating on them.  They said that 80% of the art in the game was created in the last 3 months; it took a long time to get the game to “feel” right.

From Big Studio to Small Indie: Guerilla Tactics from Hello Games (Sean Murray):

(Sadly, my notes became exceptionally crappy as the day went on, so here’s my summary)

- They used an application called Procrastitracker which runs on your PC and tells you how much time you spend doing each activity on your computer, so you get a good idea about how much time is wasted.

- They were very data-driven… I have no idea what this means exactly but I just wrote “very data-driven”, so apparently their game was written in a data-driven way, following the theme of cutting the time needed to test changes.  I am personally horribly lazy, and will all-too-often gladly wait the long time necessary to test changes.

Ugh, worst blog entry ever.  I think I’ll just post highlights from talks I liked rather than pretending to offer full coverage of all the talks I attended.

Tuesday, March 9, 2010

GDC Day 1 (part 1)

Today was spent divided between the Independent Games Summit and the new iPhone Games Summit.  I’m going to summarize my short notes from the talks today, though I’m pretty tired.  It’s rare for me to be tired at this hour, but it always happens when I’m on vacation and have to walk any significant amount.  I think this is what’s called “normal”.

Indies and Publishers: Fixing a System That Never Worked

Traditionally, when indies get money from publishers, publishers give much more than they need, and as a result expect more of the reward.  Back then, publishers controlled distribution as well, so there was an expectation that they were owed more.  But realistically, indies need less and can handle distribution on their own through various services like Steam, XBLA, Direct2Drive, etc.  As a result, something called The Indie Fund has been created to fund promising indie projects.  contact@indie-fund.com

Abusing Your Players Just For Fun

I thought this would be a tongue-in-cheek title, and assumed the talk would be about ways to present interesting challenges to the player.  But no, this talk was pretty much exactly as the title implied; no deeper meaning whatsoever.  The presenter just presented various Hollywood directors and game makers who make wacky, nonsensical movies, plus some he just thought were cool.  His slides were gratuitously seizure-inducing, with flashy backgrounds just for the heck of it, following his overall theme. 

He showed an example of a mercilessly punishing modded Super Mario Brothers level which essentially breaks all the game design lessons we learned over the past 20 years.  He unapologetically talked about the fun of punishing players and not caring about them, but rather just enjoying watching them suffer.

 

I’ll continue this later.  I need to sleep.

Monday, March 8, 2010

GDC 2010 so far

Well, I was a tiny bit sad to be arriving at GDC on the first day, after all the keynotes had finished, but my pass doesn’t include keynotes so it wouldn’t really matter anyway.

Then, come to find out, despite swearing I had seen GDC listed repeatedly on its website as spanning March 8-13, I suddenly saw listings of March 9-13 everywhere.  Apparently the conference does not in fact start on Monday, but Tuesday.  So I didn’t miss anything.  Though one annoyance was that registration, which I assumed would be open all day, didn’t start until 5pm, so I had to wait for that for an hour and a half.

Also, though I was certain that there were several keynotes, the “Keynotes” link at the GDC 2010 home page only leads to a single keynote, by Sid Meier, on Friday (the day I leave).  So… somehow, despite my intense diligence, I was completely wrong about everything.  It’s like elementary school all over again.

So now I’m in my hotel room, unsure if there’s any sort of party or anything going on that I should attend.  I certainly didn’t hear or read about any.

GDC 2010, here I come

I’m at the airport, waiting for my flight to San Francisco and GDC 2010.  I always plan on blogging / photographing everything and it never works out, so I won’t make any promises this time, but I’d at least like to highlight the stuff I care about.

I’ve only been to GDC once before, in ‘07, and my company footed the bill then.  This time I’m paying for it all myself, which is quite a commitment but it’s sort of my way of telling myself that I’m committed.

Sunday, March 7, 2010

I don’t like to admit that I like to say “I told you so”, but…

http://www.creature24.com/2010/03/well-that-was-a-trip/

There’s no easy way to say this but we’ve come to the realization as a team that we need more time to implement all the content that we have for this title, as you can see from the screenshots down below we did set ourselves a quite a tough challenge on this project, however we do want to stress the game will be finished and finished soon.

Monday, March 1, 2010

24 hours from iPhone game idea to submission to the app store?

Creature24
An iPhone/iPod touch game made by 3 guys in just 24 hours!

Yes, you read that right! 3 guys… 24 hours.

Starting with just a skeleton idea; the three of us will implement a complete game from nothing, to full submission to the AppStore within 24 hours.

The fun begins on Saturday, March 6th at 9:00am EST.

Okay, I’m all for game jams, and I like to be encouraging of people’s creative ideas, but this is stretching it.  It takes an hour at least to just prepare your app for submission.  I’d hate to see the type of game that can realistically be completed in 24 hours.  And somehow they’re going to make time to blog their experiences?

We’ll see.

Sunday, January 31, 2010

Reflections from Global Game Jam 2010

I posted a characteristically long blog entry via my account at globalgamejam.org, which I will repost here:


I've survived the Global Game Jam, and my team created something resembling a game. To say that I'm happy with it or proud of it would be untrue, unfortunately. It's hard not to look back at all the things that could have been but weren't, or imagine what could have been added if only we had slightly more time.

In the end, we created an espresso stand themed mini-game, essentially. Was it innovative? Not really. Was it fun? Not in its 48-hour state, but there was potential at least. Was it the game I dreamed of making during the months preceding the Jam? No. Why? What went wrong? I will try to address these questions in a way that won't spiral into hopeless negativity.

My first blog entry listed the lessons I learned from my last Game Jam. I want to revisit them to see how well I did, and then see what new lessons I learned from this one:

* Find a team you mesh well with.

My teammates were cool people, but it was clear that we had very different goals and very different sets of experience. Dwelling on this will only sound like blaming, but suffice it to say I didn't do a good job here.

* Use source control.

We had an SVN server up and running pretty quickly, and this saved us. I don't even want to think about the challenges we would have faced otherwise.

* Scale scale scale

Our overall game idea was indeed very straightforward, but we aimed for far too many embellishments than we should have for a 48-hour game. Probably half of the time was spent creating/working with content in some form, rather than coding actual essential gameplay logic. Because of this, we ultimately had to cut key features of the game.

* Throw solid coding practices to the wayside

I feel we reached a really good balance here. Our code was structured in a fairly logical way but with some corners cut for the sake of time (for example, avoiding unnecessary future-proofness by hardcoding logic which assumes two players).

The lessons I learned from this Jam were mostly rehashes/reinforcements of the previous lessons:

* Find a team that you mesh well with, part 2: I had been excitedly anticipating this event for months in advance, and all my friends knew because I talked about it constantly. Naturally I arrived early, brought tons of supplies/food/drinks with me, set up my laptop with source control, etc. ahead of time. I should have immediately seeked out other developers who shared the same passion. And remember, you are inevitably going to have to compromise on a design idea. So find people who have design goals as close as possible to yours (e.g. don't group with someone who is passionate about Myth-esque puzzle games if you really want to make a retro shooter)

Speaking of design, I might get flak for saying this, but for a 48-hour game, a designer with little or no programming experience is dead space unless they're also an artist. Everyone is a designer. Everyone has ideas. Yes, there are good designers and there are horrible designers. But even a great designer who does nothing but design is not worth it on a 48-hour game. More likely than not, a dedicated designer will only increase the scope of the game by dreaming up infeasible features, causing friction with the developers who actually have to [dare I say] do the work.

If you're lucky, you'll find a programmer who is already good-enough at art. The artistic bar is not exactly high for a 48 hour game, so "good-enough" is all you need. A dedicated, exceptional artist is a great asset as well though, because it's often the aesthetics that really boost the appeal of games of this scope.

I didn't mention sound designers, because again, the scope of the game is so small that sound is often an afterthought, but they can be a great addition if you can afford the opportunity cost.

* Scale scale scale, part 2: Your design should be iterative even for a 48 hour game, but a crucial point is that this design should start extremely simple. Find a core mechanic, keep the mechanic DEAD SIMPLE, and if you have time, iterate on it. Here's a counter-example of what I mean:

For our espresso game, "Cheap Shots", the original plan was to have players create different drinks by pressing buttons in a particular sequence on an Xbox controller. So, one drink might be A, B, B, X and another might be X, Y, A, B (the buttons were supposedly associated with different ingredients). Before we had even completed implementing this basic mechanic, we began dreaming up new ways to add ingredients; for example, holding the trigger and releasing it at a particular time might be associated with steaming milk, or turning the thumbstick on the controller might be associated with stirring the drink. This was a mistake from the start. I ended up spending precious amounts of coding time trying to implement these special case scenarios (keep in mind they all required additional UI assets as well), while core gameplay mechanics were being neglected (score board, game timer, essential UI elements, etc.)

Further, we spent what felt like half of our time dealing with mountains of sound assets that were completely non-essential to the gameplay. These were the types of niceties that could be added after the fact, when the core gameplay was done.

So, in short, it's not just the game that needs to be simple; the core mechanic needs to start dead-simple and optionally build from there after you have a complete gameplay experience.

Here are some additional lessons I learned, though some are minor:

* Make sure that your working environment is comfortable.

DigiPen was great. There was an active work environment with plenty of space. But when you're working for 48 hours almost nonstop, even the minor things can become major annoyances. I was foolish enough to position myself in the middle of a long table, separated enough from my team that any time they called me over, I needed to practically climb over my table or else squeeze by several people to get to them. After the 25th time having to do this, I was ready to relocate.

Also, make sure you have the best setup you can get; a large monitor, comfortable mouse, etc.

As soon as you sense an annoyance, fix it, or it'll be a thorn in your side for the next 48 hours.

* Time is precious; don't waste it.

Yes, I know, this is obvious. My point isn't about goofing off excessively or being lazy. If you're inclined to do that at a game jam, you're probably not passionate enough for it to begin with. I'm talking about other time wasters. For example, you don't need to notify your team about every single change that doesn't affect them, show them every cool thing you added, or ask them questions that you can easily find the answer to yourself (i.e. "Where is X defined in the code?"; there's a search function for that). Remember, assuming you picked a good team, their time is every bit as valuable as yours. Every time you interrupt them in the middle of coding, you break their concentration. You force a "context switch", and it takes them time to regain their focus. Don't have needless conversations in which you explain at length how you intend to implement something; just do it. And similarly, don't explain at length how someone elsemight possibly implement something, unless they are requesting your help or are working on a shared component. They could be using that time to actually implement rather than discussing it.

In the off chance that anyone actually read through this in its entirety, I hope it provides some value.

Sunday, January 17, 2010

Indie game developer YouTube/Vimeo channels

I think that blog posts would be a horrible place to store reference material if not for the indexing power of search engines.  So with that, I am going to compile a list of independent game development teams who post videos of their progress on YouTube or Vimeo.

(Last updated: 1/23/2010)

Adventures In Game Development / Elysian Shadows

Fireravens Unlimited

JForce Games

phantasqProductions

Amateur Game Development

I find these really interesting.  The team members vary in age from early teen to around college-aged and slightly beyond (which admittedly makes me feel old), and I love seeing the process they go through, the lessons learned, etc.  You’ll see a lot of common themes: over-confidence and optimism initially, drama amongst team members, loss of motivation, major design changes / scaleback, and other issues typical of any software development team.

Monday, January 11, 2010

The State of Middle Brain Software

Admittedly, it’s been a long time since our last update.  I will try to be brief regarding our status:

The Bad

  • As you can tell, our first project, an XNA Game Studio game, made a slight amount of progress and then, like so many others, died.  We have no plans to resurrect it, and even if we did, it would likely be on a different platform.
  • Our second project, the iPhone game, also failed to get far off the ground.  I blame myself for taking on a project that was too challenging for someone just beginning with iPhone development.

The Good

  • I continued to train myself in iPhone development over the past year, and Dave and I actually released a cartoon-photo-editing app called PhotoToons

It’s a fun app that I’m excited to continue updating with new stamps and features.  Most of the stamps were created by your favorite artist and mine, Dave Johnson.  You can look forward to continued releases in the coming months.

  • We also released an iPhone app for Dave’s podcast (The Dave and Steve Show), called Dave and Steve’s Droppings.  It was remarkable how much faster the development process went compared to PhotoToons thanks to the learning hurdles I had since overcome.

63d0711453425042.jpg Dave and Steves Droppings (entertainment)


The Present and Future

Oddly enough, my previous post discussed the necessity of me learning OpenGL ES in order to create a game with reasonable performance.  Well, over a year later, I’ve become far more competent with the technology, and have surrounded myself with resources (both text-based and meat-based) that have become invaluable in the past couple months.  More importantly, I’m making a conscious effort to ween myself of the “it’s too difficult, don’t bother” mindset. 

Given this, I’ve been hard at work on a 2D game and engine.  I want to start with something feasible and simple as a learning project.  One potential application Dave and I have discussed is a mini-game incorporated into the Dave and Steve’s Droppings app.

Stay tuned to see what becomes of our efforts!  If nothing else, you can laugh if the next post arrives a year from now.