Thursday, 7 November 2013

ScooterBoy Global Launch

Modka Games is very proud to launch ScooterBoy:

ScooterBoy, free on the App Store, for iPhone, iPod touch and iPad

ScooterBoy HD screenshot (click for full res)


Gameplay First

ScooterBoy brings back the classic feel of the arcade, updated with one button touch controls.  Of course you can jump and dodge to avoid obstacles, but in ScooterBoy you also swipe to change lanes, drop-boost to go faster, and there's loads of power ups and pickups to collect too.


"Scooter Boy!"

If you want to climb the high score ladder, you'll need to learn the mushroom's secrets.  Or you can simply relax and explore ScooterBoy's amazing world at your own pace.


Upgrades

Marmot, jumping with the shark.

Upgrade your scooter, choose new characters, hats, wheels and more..

Buy a friend!




Need a little something extra?  Why not buy a Pet from the store?  These cute little helpers will fly along and collect coins and points to boost your score.  You can even flick your pet to reach up even higher.


PhotoBooth


Bizzer in the PhotoBooth with his dragonfly.


Meanwhile, in the PhotoBooth:

  1. Choose a background and a frame.
  2. Take a photo of your ScooterBoy.
  3. Share with your friends.
  4. Repeat!



Music

Download link for ScooterBoy
Did I mention the music?  ScooterBoy has nearly an hour of classic recordings from the 50s and 60s






Download, for free!

And the best part, ScooterBoy is free to download, and free to play!

So what are you waiting for?

Download ScooterBoy Now!


Saturday, 19 October 2013

Praise the Fire Fighter, Damn the Safety Inspector

There's a sickness eating our industry.  It's a culture of Macho Programming.  In it's simplest form, it's the idea that if we just push harder, longer, stronger, then we will win.  Yet time and time again, experience shows that the way to win is by working smarter.

Side-effects

I was once working on a particular AAA title.  The game was running late.  We were in crunch, and had been for a while.  There was no end in sight.  I came across the following code:(1)

bool DetectCollision(Vector3 location, float radius){
  ...
  radius * 1.2f;
  ...
}

So that line of code makes the collisions a bit fatter.  It's what we call a 'Fudge Factor' - we don't know why a problem is occurring, so we fudge the numbers a little until it works.

But take a closer look.  The statement as written has no side-effects.  It doesn't actually modify the value of radius.  When the programmer wrote:

  radius * 1.2f;

they intended to write:

  radius *= 1.2f;

Let's review the facts:

  • It's the wrong fix to begin with (fudge factors are generally a bad idea)
  • It doesn't actually change the behaviour of the running program
  • The programmer didn't verify that their "fix" worked

And we can safely assume that the programmer didn't verify the original bug in the first place.

Compound Fail

It gets worse.  In this late stage of crunch, there were so many easily avoidable bugs coming in to the code, that the production team mandated every changelist required a second programmer to sign off.

That's right, not one, but two programmers, working together, managed to convince each other that this placebo changelist actually improved the game.  Together, they marked the bug as fixed and sent it back to QA, fully confident they had made the game better.

What other trivial mistakes did those programmers make that night?

What a colossal waste of time and resources, simply because those two programmers had inadequate sleep.  The project would have been much better off if those two programmers had just gone home at 18:00.  Or 17:00.  Or even 14:00.

[Edit: I just wanted to add, these are actually two really good programmers! I'd jump at the chance to have them on my team again.  The equation here is crunch + good programmers = too many careless mistakes.]

Praise The Fire Fighter ...

When you're deep in crunch, it's easy to see the heroic efforts, the mountains of caffeinated beverages, the change logs at 4am.  It's easy to point to the person who's working the hardest and say "We all need to be more like that guy."  Because when it's all falling apart, you need to do something.
(Hint: That something we need to do is to get more sleep.)

... Damn the Safety Inspector

And when you're at the beginning of the project, and the Safety Inspector is telling you that what you're building isn't up to code, that the schedules are unrealistic and will lead to crunch, slipped deadlines, hard-to-find bugs and adds unacceptable levels of risk to the project...  Well they're easy to dismiss "We're trying to build something here! Why are you trying to stop us?"
(Hint: The Safety Inspector is probably right.)

Macho Programming

As an industry, we should be working smarter than that. We should be rewarding measurable results and hard evidence, rather than effort and posturing.

To me, Macho Programming, is blundering onward in whichever way you possibly can, without regard to what's best for the project or the team, simply for the appearance of getting something done.

I think we can do better than that.  In the true Agile sense, as a team, we need to make the best decisions based on the best information we have, right now, and move forward in the best direction we can.

Who's with me?




(1) Some details have been changed to preserve anonymity.

Monday, 30 September 2013

ScooterBoy NZ Launch at Digital Nationz


ScooterBoy and Modka Games was lucky enough to be involved with the Homegrown exhibit at the Digital Nationz expo!

The ScooterBoy booth at Digital Nationz

Hands on

Our booth consisted of a large monitor hooked up to a laptop (Display Mirror), playing the actual game.  We had a second laptop with a slideshow, and then lots of glossy printouts of the logo, icon and artwork.

www.scooterboygame.com
We also had two iPads running the game, which we tried to get into the hands of as many players as possible, getting some awesome user feedback.

Oh, and a portable "QR" code with a direct download link for iPhone users!

Attract Mode


For the main screen, we cooked up a special build of ScooterBoy running in "Attract mode" - basically bouncing between the intro comic, level selection, and the game itself, choosing random levels, scooters, characters, pets, music, etc.

I hooked up Momma's AI to the player, so the game would merrily play itself with no human intervention required.

"Attract Mode" turned out to be a super useful feature, it meant we could talk to gamers 1 on 1, while the screen continued to play for the small crowd that gathered.

... in fact "Attract Mode" proved to be so useful, that on the second day of the expo, two other Indies had added the feature to their game!

Big Screen


ScooterBoy also got some time on this awesome 103" panel upstairs in the chill out zone.  It really shows off the amazing HD retina graphics in ScooterBoy!

Telecom Homegrown "BigScreen", running ScooterBoy

Thanks!

Thanks everyone for making an awesome #ScooterBoyGame weekend with @DIGITALNATIONZ

And a special shoutout of thanks to Telecom, Asus, @oldjackgrey, @BenTuhoeKenobi and @sknightly!!

Shameless Plug

And if you're in New Zealand, and own an iPhone, iPad or iPod touch, why not download ScooterBoy and give us a rating! ScooterBoy on NZ App Store

Thursday, 19 September 2013

Random

Lately, I've been tuning the "Drop-Rate" of pickups in Scooter Boy.  It's actually a lot like handing out candy at Halloween.

Allow me to use this handy diagram to explain:

Too little Candy
Too much Candy
Not enough candy to go 'round - some people walk away empty handed.Everyone is all full of sugary goodness, and they don't want any more.

But that's not actually what I wanted to talk about today.

I wanted to talk about Pigeons.

The Pigeon Food Dance

There was a famous set of experiments back in the '30s that revolved around withholding candyfood from pigeons.  In one of these experiments, the amount of time between successive drops was random. It turns out that each of the pigeons developed a (unique) ritualistic food dance. In happy pigeon land, it was the completion of the dance which caused the food to appear.

Now the curious thing was, the time it took for the pigeon to complete the dance was slightly longer than the average time between drops.

So when the pigeon completed the dance, there was a better than 50/50 chance of getting food.  And if not, well repeating the dance a second time would surely do it!

(Have you ever timed how long it takes to reboot your computer when you've got Tech Support on the phone?) 

Random Drop Rates

For most of Scooter Boy's development,  I've been using random drop rates.  Power ups would appear, seemingly at random.  Sometimes you'd get lots, and sometimes you'd go ages without seeing any.

Worse still, changing the drop rate, by changing the percentage of a drop, was very clumsy. You'd double or quadruple the drop rate, play the game, and the results would be... well ... random... There was no way to tell if your change was making the game better.

In short, random drops, just aren't fun!

A Drop Rate Schedule

I'm in the process of changing all those drop-rate percentages into times. 30±10 seconds between drops.  Or 120±60.  It's so much more measurable. And it turns out, it's a lot more fun too.  As a player, it feels like the powerups are rewarding your effort.

So down with Mathematical Randomness! Lets make the game match the player's expectations. Lets put the fun first!

Wednesday, 28 August 2013

Analytics

If you happen to live in a certain North European Country, in the wee hours of this morning, ScooterBoy went live!!

That's right, you can now download ScooterBoy, for free!!  (with certain geographical restrictions.)

"But why can't I download it??!" I hear you ask.

Well, you see, it works like this :

We want to make the best release possible in the largest market.

   The best way to do that is to use feedback from real live customers to improve the game.

 ➡  Where best to get those customers? Yes! From a certain Northern European Country!

Analytics

Now our analytics takes over.  How many downloads will we get? How long will players play? Which level and characters do they play the most? How quickly do they earn currency? What's their favorite IAP (In-App Purchase). What does our retention look like? Where does the game crash?

We can turn all these questions into metrics, then apply those metrics to our game.

We will compare our numbers to our expectations, and then see which numbers we want to improve.

What If?

The next step is to play the "What-if" game.  For example, suppose we make the decision we want to increase player retention:

  • What if we had more characters?
  • What if we had more levels?
  • What if the game were harder? easier?
  • What if we gave a bonus for playing every day?
  • What if we had daily challenges?
  • What if we highlight the leaderboard?

Soft Launch

Exciting times for ScooterBoy!  And lots of geek-out points writing queries in SQL to try and turn a mountain of data into usable information.

We can't wait to make ScooterBoy even bigger and release in more markets!

...watch this space...


Wednesday, 6 March 2013

Mr Lemon

Wow, we've been pretty busy with a whole bunch of things lately!

It's not quite ready for the big reveal yet, so in the interim, here's an unmodified screenshot from a real tablet to show some of the cool new stuff:

Click through for original size
You can see one of the new characters, Mr Lemon, pulling a wheelie, and wearing the always popular cowboy hat!

As this is the first (tutorial) level, there's also a swipe hint to the player.

And lastly, a debugging helper in the bottom left, 59 fps on the slowest iPad!!

Friday, 22 February 2013

The Squeeze

I've been adding a lot of content to ScooterBoy over the past week, and it's been causing some problems.

In particular, the size of the archive had grown to over 100MB.

Increasingly, I've come to realize that speed of iteration is one of the biggest factors in determining overall project success.

The large archive size was causing slow sync times with the tablet, and even longer upload times on my rural broadband connection.

Something had to be done.

Enter WebP


WebP is a relatively new graphics format (2010), published by Google, both patent-free and open-source.

It's like a super-JPEG and a super-PNG all rolled in to one. Oh, and it fully supports alpha!

Here's one I prepared earlier: (click through for full size images)

Original PNG, 540KB

WebP version, 23KB

(WebP version as lossless PNG, for comparison only)
In this particular example, that's a whopping 95.7% saving in space!!

Obviously results will vary, but I'm consistently seeing 75% - 90% save spacing over the equivalent PNG/JPG, for a reasonable reduction in quality for tablet devices.

I'm also finding that the compression artifacts are of a type that is less annoying than PNG or JPEG. (Apart from some YUV color noise at very low bitrates - hopefully google will fix this in an update)

And it was super easy to integrate into my codebase.

Want even more info? Go grab the source over at developers.google.com


And my archive size? Now down to a very manageable 22MB.


Wednesday, 30 January 2013

Pinata!

Any game of appreciable size needs a mini-game, and this one is ours!


We're calling it the "Treasure Mushroom".  Use the multi-touch to knock the piñata, then collect the treasures that are hidden inside!

It's a great way to give the player a random reward without resorting to a gambling metaphor like a roulette wheel or slot machine.

What makes a good mini-game?

I'm a big believer in the so called "Rational Game Design" approach.  In particular, the variety matrix. It suggests you can break down your game into a number of axes, such as time-pressure, activity, space modifier, etc.

It then provides a recipe for combining those axes into novel variations.  This aids the game designer's evaluation process and helps find the combinations which work the best.

Under this framework, the mini-game is part of "exotic gameplay".  It changes the pace of the game by  giving the player a new challenge, or a much needed break.

The mini-game must also be very easy to learn, and never punish the player, only reward.

Lastly, your mini-game must remain thematically similar to your main game.  In "ScooterBoy", both the main-game and the mini-game have 'collecting' as a central theme.

What's your favourite/least-favourite mini games? Why not let me know in the comments below?


Thursday, 24 January 2013

Easy Mode Unlocked

One of the hardest thing to do when making a game, is to balance the difficulty.

Of course, at the start, you want your game to be as accessible as possible.  Then, over time, as the player progresses, you smoothly ramp up the difficulty to keep the player engaged.

Today I wanted to focus on the beginning of that : Just how easy is easy?

Easy for Me

The natural instinct of the indie developer is to make the first level really easy for themselves.  It turns out that's not a fair test.  You've been playing the game for a while now and you know all the controls and every obstacle.  You need to look elsewhere, to someone who's never played the game before.

Easy for You

The next step is to focus test.  Find everyone you know, especially your friends, who don't play games that much.  And then make it easy for them.  As you go through this process you'll find your game becomes more and more accessible and the learning curve becomes more and more navigable.

Easy for Everyone

But can we do even better than that?

If you watch young kids playing games on a tablet, you'll know how engaging they can be.  And frustrating too, with the constant restarts, and the accidental taps on adverts and in-game consumables.

Zen Arcade

In keeping with this spirit, this morning I added a special "Zen Arcade" mode to my next game:

There's no enemies or time pressure.  There's no way to lose.  It's just a calming, peaceful experience that anyone can play and enjoy.

I even made the pause button a little smaller to avoid accidental clicks, and removed the options to use the power ups.

What tips and tricks do you use to increase accessibility of your game?  Why not let me know in the comments below!

Saturday, 19 January 2013

Level Design

Today it's all about levels!

(click through for larger version)

Thursday, 17 January 2013

Logo!

Wihoo! Our new project has a logo!




 (By now you can probably guess the name!)

Monday, 14 January 2013

Background Test

Here's a screengrab of the backgrounds from one of the first levels in the new game.  You can see some of the UI starting to take shape as well!




And a video capture too - click through for 720p!


Sunday, 13 January 2013

Terrain


I'm doing some more work on the terrain today.

It's another great mix of traditional and procedural artwork.

I've taken this screenshot from in the editor mode, and if you look closely, you'll notice the green circles which mark out the knots in the splines.

You can move the knots around by left click'n'drag with the mouse, or change the slope at that point with right click'n'drag.

I've even set up the physics so the player is actually riding over the splines directly without requiring a separate collision mesh.


This mix of hand drawn and procedural content is a great combo we're using throughout the game : The original artwork sets the overall tone, while the procedural content optimizes for your specific tablet.




Wednesday, 9 January 2013

FrameBaker

Marmot Recipes


Today I'm working on the "FrameBaker".  It's a tool we're using to put the characters and animations into the game.

You can see here a work-in-progress of the "Pink Marmot".  It's just one of the many characters you'll be able to unlock in the game as you progress.






FrameBaker

The FrameBaker starts with all the individual elements that make up the animation.

This is the Primary Animation, and makes the biggest emotional impact for the player.

You can see the familiar Squash and Stretch in the last four frames on the right.


Next we add in the Procedural Animation.  I'm using a technique called Inverse Kinematics to keep the arm locked onto the handlebars and the shoulder.

In a video game, it's the procedural animation which links the character to their environment.

In the screenshot, you can see the green tick marks which show the anchors and pivots for the inverse kinematics solver.




Lastly we mix in the Secondary Animation.  This is the spinning beany or the waving antenna.  It creates the believability and makes the character seem real without affecting their overall movement.



    ...and that's how you bake a Pink Marmot.

Saturday, 5 January 2013

Thursday, 3 January 2013

A new project?

Something pretty awesome is taking shape on my development computer at the moment.


These are the first public pics.


More updates coming soon!