Animations Are Evil, Performance Rules

While working at our upcoming game Momo, I am keeping a close eye on performance. It needs to run smoothly (60fps) on an iPhone 3GS, and that is a constant challenge.

While its great to develop for mobile platforms, it can get tricky when you don’t obey the Golden Performance Rules of Lukas. ;)

There are a some simple rules like:

  • Forget about pixellights, too expensive (although the new hardware is looking promising!)
  • Keep your drawcall count low as graphic state changes are cpu expensive
  • Mark objects that don’t move as static
  • If they move, try to keep ‘em below 300 vertices, it will then be dynamicly batched
  • Don’t instantiate or destroy objects in runtime as memory is slow and it will create hiccups
  • Don’t alpha reject pixels on iOS devices because its slow on tile based rendering, use alpha blend instead
  • Don’t talk about polygon count but vertex count
  • Don’t rely on the 3D modelings package for your total vertex count, use the 3D engine instead as a number of things can influence this number
  • Don’t non-uniform scale your objects in an animation as they won’t be batched

On this last one I have a good example, with some pictures. (yay pictures!)

So here we have a nice cracked rock

In the game it will crack and fall apart

But wait, 2 drawcalls?

The complete asset is only 176 vertices and it should batch! Well it is batched, partially. Lets investigate it. The rock consists of 6 pieces. All using the same material? Check. All under 300 vertices? Check. All scales are uniform? Check. Or is it? Well on start it is but in the animation one of the rocks is slightly scaled in the x and y axis.

Okay, so walk to the artist, I tell him, he frowns, I explain, he frowns, he fixes, all happy.

At the bottomline: performance isn’t only a programmers thing anymore. For mobile, a lot depends on how game assets are created, you can’t get away with sloppyness anymore.

Oh and by the way, if you are an artist and you want to go up a few levels, please please please read the book Creating 3D Game Art for the iPhone with Unity. It will make your and my life a lot easier. It has been written by and for the game artist but even I enjoyed reading it!

Jimmy Pataya: beyond the launch

As you know, recently the Paladin team built an iPhone game in two weeks. It includes fun gameplay, nice graphics, music, sound and character voice, and highscores that can be shared on Twitter. In this post, I want to look back on what happened after we submitted the game to Apple on Friday April 2nd.

Wait for it…

The long Easter weekend afterwards, we all took some time off to rest. We had been working hard to meet the deadline, and quite frankly, it was exhausting. Plus there wasn’t much to do anyway but wait for the game to be reviewed and approved. On Tuesday we sat down and discussed what to do next. It made sense to start marketing the game.

Our great artists Niels, Lars and Thomas made a sharp website, which coder Tijmen implemented. Check it out here. Derk wrote a press release, with a focus on the two week-development sprint. And Lukas and I made a big list of iPhone game review sites, which we started sending requests for reviews to.

It’s alive!

On Tuesday evening / Wednesday morning, Jimmy Pataya v1.0 was approved by Apple! Of course, we were very happy about this and many hands were shaken during that day. We quickly became addicted to checking sales numbers every five minutes, and quickly stumbled upon the cold hard truth about selling in the App Store: it’s pretty tough.

This is what our sales figures looked like in the first week:

On the Y axis, you see the number of units sold. The peak was 72 copies, which resulted in roughly  € 35 / $ 44. Even though we had spent only 2 weeks on development, you can imagine that those kinds of numbers won’t pay the bills. At all.

Spotlight

So while we were busy contacting even more review websites, something magical happened: I received a mail from Apple, notifying us that we would be featured in the ‘New and Noteworthy’ category in the US, Canadian and Mexican App Stores. Lo and behold! It actually happened the very same day! Effectively, it means that anyone in those countries checking out the Games section in iTunes will see Jimmy Pataya!

So, truth be told, the fact that Apple took our little game and put it up there for all  to see was pretty exciting already. But the real question was, of course: would this have any effect on sales? The simple answer: yes.

We, the People

Driven by this phenomenal boost, we decided this project wasn’t over yet. We’re on a roll now, and more importantly – in under two weeks, we suddenly gained over 2,600 customers. Jimmy Pataya is now a real product, and we better treat it that way!

The best thing about having customers (except maybe for earning money) is getting feedback. Fortunately, it’s mostly positive. Many love the game and seem to be playing it over and over again. A few quotes:

“Wicked game. Great for fans of doodlejump type games. Buy it.”

“This is one of those games I can play for hours on end. Gameplay is almost completely smooth on my iPhone 3G. Patayaaaaa!”

“Love it!!!!!! – Best game ever!!”

“Papayaaaaaaaaaaaaa!!!!!!! – Just frickin awesome dude it’s an adrenaline rush”

Of course, there were a few bad and ugly comments as well:

“It’s nothing special and it’s not worth the price. Unless you have money to spare, avoid it.”

“very DUMB game!!!!!!!!!!!!!!!!!!! – THIS GAME WAS FUN FOR ABOUT 3 MINUTES AND THAN I DELETED IT OFF MY PHONE TOTAL GARBAGE DO NOT BUY THIS JUNK WISH I COULD GET A REFUND THE CREATOR SHOULD BE ASHAMED TO SELL THIS FOR .99 SHOULD BE FREE AND EVEN THEN DONT GET IT”

As a team, we dealt with criticism before. Rather than be personally offended or hurt, we ask ourselves how we can improve the game so even more people will enjoy it. Three things came to mind immediately: OpenFeint, iPad and extended gameplay.

From here and beyond

I actually submitted update 1.1 to Apple just two hours ago. It includes full OpenFeint support, meaning Leaderboards and Achievements. Players will now be able to check global highscores and see how their friends are doing. Achievements such as Rookie, Spin Doctor and One More Time will add extra reasons for replaying the game.

We actually have hires graphics for the iPad version ready too, but ran into an issue combining Unity, iPad and OpenFeint. Producing games is all about making tough choices and about making it work. There will be future updates, so for now, we’re not supporting iPad just yet.

And finally, we have lots of ideas for enhanced gameplay. Many of our testers and players came up with great additions too: power-ups, animations, time-trial, stunts… the list goes on. Tomorrow we’ll sit down and discuss what the next update will be. Jimmy is alive and kicking!

Japan plus Youtube is succes

Lets start with a little about me: I usually go to bed around 10.30 pm.

As some of you might know, Jimmy Pataya started out as a research project for us. Since it got a little bit out of hand and we became more serious about it we all had our own expectations. One thing we all had in common was that it would be cool if it was picked up massively. We even wrote down some optimistic numbers, I believe I said something like “Gimme 12.5k downloads!”. You could say those numbers were our definition of succes.  Succes can be defined in different ways actually. On the App Store is usually defined as: “Getting as high as posible gross profit” While that may be true, thats just the business side. 

I have a second definition of succes, this time its personal, not business. Succes for me, as a human, not a company, is seeing people enjoying your game. You can’t really measure this but I check a few things to get a feeling. I often just Google with “Jimmy Pataya” and check the results. Did you know it’s also some infamous tourist isle in Thailand? Another great source is Twitter, checking how much people Twitter about it or posting their scores.

The ultimate place for succes is Youtube! People playing your game and then take the effort of recording and uploading a movie of them playing it is just awesome. Well I am very proud to say: it happened! Even better, it happened all the way down in Japan! We don’t even have the game description translated into Japanese nor we contacted any Japanese review sites. They picked it up themself, wrote a review of it, took some screenshots, made a movie and actually gave it a good recommandation. FREAKIN’ AWESOME! 

I can’t hold it back any longer so here it is.
(and use this for a translated one)

And you know what, its 0.15 am right now and I am still awake because of it. That has got to say something :-)

iPhone game: deadline is closing in

When we decided that we would try to build an iPhone game in two weeks, we knew it would be tough. We knew it would involve doing a lot of technical research, creating a lot of designs and making a lot of tough decisions. Lukas already talked about a big cut we made, which resulted in a more focused game experience. Today we sat down to review our progress, painfully aware of the impending deadline in just two days.

The good news is that we are well on our way. The central gameplay mechanic, dodging blades by tilting the iDevice, works nicely. In fact, both our own team members and outside testers enjoy the thrill of falling down and dashing sideways to avoid serious injury. We’ve been experimenting with speed and blade spawning frequency. We’re testing all these different stages, and keep those that work best. The latest incarnations are actually quite demanding – average playtime is now 30 to 60 seconds, which is exactly what we’re aiming for.

Regarding visuals, the team is producing a lot of great assets. We are lucky to get a bit of outside help from Bang Phan, a veteran concept artist. He’s working on the background image and cloud textures.

We’re also gathering a small group of dedicated testers, which is fantastic. It’s so rewarding to get honest and constructive feedback. Personally I am looking forward to improving our quality assurance and user testing efforts in the upcoming months. It makes sense to have an external focus: we want to make games people want to play.

The not so good news is,  time is really running out. We have so many wonderful ideas but not enough manpower to get it in. While we have solid artwork,  implementation into the game takes longer than expected. For the past few days, we’ve been playing a promise. Even if we did manage to work more hours, every new feature and every new asset potentially introduces bugs. Adding new mechanics means we’ll have to test everything again from scratch, as we basically have a whole new game.

That’s why today has been about cutting stuff from an already lean design. It’s about making things work, dumping excess bagage where-ever possible. We won’t have power-ups, we’ll keep sounds to a minimum, we’ll have to be strict about animations.

On the other hand, we’re still definitely ambitious. We do want exciting gameplay, we do want Twitter support, we would love to give Jimmy a voice. With two days left on the clock, we’ll do whatever it takes to make our Friday deadline. And that’s not even the end of the road yet: we’ll have to submit the game to Apple, get it reviewed, and hopefully approved. If all goes well, we’ll have an iPhone game in the App Store sometime next week!

Use the right tools for the job

Let me start a with bold statement: Apple Macs suck. To be more precise, I don’t like OS X and I don’t care about cool window animations, fading etc. I’m the guy who likes Windows and still uses the classic theme.

Anyway, that’s not what I wanted to blog about today ;-)

As you probably know, we have forced our self to learn the iPhone platform in two weeks. To do so we had a great idea: “Hey, Paladin Studios is a game company, why not make a game?” If you want to achieve anything interesting in such a sort time, you need to use the right tools. Normally we use a lot of tools like Pivotaltracker, SVN, Paint .Net, Visual Studio, Max and Unity.

To put in another bold statement: Unity rocks! It’s a 3D engine which allows you to use C# for programming. To use their marketing one-liner: “Taking the pain out of game development” which means you can concentrate on the gameplay and not having to do all rendering, physics etc yourself. It does take (most) of the pain out of game development. As an example why we love Unity I’m going to show you the simple and speedy way we can create and test scenario’s.

A scenario is no more then a bunch of settings on our Obstacle Factory which has one job: spawn objects. The Unity editor allows us to play our game and change that bunch of settings while it keeps running. As pictures tell more then words…

Top: Scene editor Bottom: Playing game Left: All objects in scene and project files Right: Object settings editor

Zoomed in on the object settings for the Obstacle Factory. There are a bunch of scenes, some settings and a check to override the current scene and let it use the settings we tweak realtime. Spawn type Pathed is really cool btw.

To break it down, Unity is the tool for us. The iPhone version is Mac only, which makes sense.

Too bad I can’t use Paint .Net and Visual Studio anymore though…