Design By Tweaking

As a game designer, sometimes you have an awesome idea, you manage to get the idea approved, someone creates a feature and it all works beautifully. But very often, the path to gameplay goodness can be more like Internet Dating – things usually don’t turn out how you expect, and you have to try a million different options before you get what you’re after.

"But when she said she liked bananas I thought...."

As developers, we like to feel as if we know what we’re doing, so we call this process of chaotic iteration “prototyping”. This is basically when you keep fiddling and tweaking your original idea until it eventually becomes totally awesome, or you run out of time and admit you were actually completely wrong. In an ideal world, prototyping happens at the beginning of a game’s development. This way you can get the basics of your game figured out before you start the scariness of proper development. But in reality, often a feature ends up being prototyped way down the line, almost mutating as the game itself starts to take shape.

In the early stages of Bulletstorm we had some ‘Bullet Time’ in the game. It was kind of cool since instead of it being an on/off toggle like in most games, it was instead linked to performing a move, like kicking or leashing a guy towards you. So you kicked a guy, the whole world went into stylish slow motion for a couple of seconds, and you had a moment to blow his head into spaghetti meatballs. Good stuff.

Have it!!!

But there were some niggles. If you were close to the end of your clip, you could end up having to reload your weapon during the slow motion, causing the reload to be twice as slow. This was not cool. So to counter this we tried having player continue at normal speed whilst the game was slowed down. Not only did this solve the reload issue it suddenly created some interesting side effects. Now you could slide into a guy to flip him into the air – launching him into slow motion – then you had enough time to run round the side of him to kick him sideways off a ledge to his doom. It allowed you to place enemies exactly where you wanted them for executing skillshots. Good stuff!

But like a poo in a swimming pool, something unexpected came and reared its ugly head. And that was multiplayer. What if one player kicks an enemy? Do all the other players have to go into slow motion? If we keep all the players the same speed then won’t it feel weird if you’re fighting in a different part of the map and suddenly the enemy who’s charging at you goes into slow motion for seemingly no reason? A solution needed to be found, and this is where our elite physics coder Tomek Mazurek came in.

Famous for stuffing entire donuts into his mouth and simulating a ragdoll by strapping bubble wrap to his chest and falling onto the floor, Tomek was not scared of a challenge (we actually have videos of both of these – leave a message in the comments if you want us to post them). Basically through some insane physics code he changed the way it worked completely.

Defying the laws of physics one donut at a time

What he came up with was technically ‘localized bullet time’. In simple terms, what this meant was instead of the whole world going into slow motion, only the enemy that you kick or leash would slow down. So whilst one enemy is gracefully drifting through the air towards a deadly man sized cactus, another enemy can be charging toward you at full pelt to thrust a rusty metal bar into your face. So because it was localised to just the enemy you attacked, it didn’t affect any of the other players.

Tomek explained that in order to get this working he actually had to create an entirely new world within the normal game world that ran at a significantly slower rate. So the moment the enemy goes into bullet time their entire physical representation is copied to this fake world where everything runs in slow motion. Their motion and collisions are then calculated in the slow world and at the moment the bullet time runs out they are copied back to the original game world. Insane is not the word.

The introduction of localized bullet time completely altered the feel of the combat. And it also made it bloody hard! You could no longer just kick someone then take your sweet time about what to do next. You had to think about what enemy to engage and you had to make sure there were no other enemies behind you whilst you tried to carefully place a bullet into a slowed-down enemy’s smell hole. Leash was no longer the one-stop solution to every problem, choosing when to use it was much more important than before. At first we were worried that the game was too hard, and we nearly abandoned the idea completely. But after a serious amount of tweaking and balancing it finally just fit.

It ended up bringing an intensity and flow to the combat that felt like no other game out there. Once we demoed the game, it was even nominated by Kotaku for “Best Gameplay Mechanic” of E3. So as much as I’d like to say that we’re totally awesome game designers here at People Can Fly, the truth is that often the best stuff comes from just fiddling around.


If you enjoyed reading this, you may also like:

  1. Nobody Knows Anything
  2. Captured Motion
  3. Monkeys help make better videogames
  4. We killed the clowns
  5. Echo Mode – It’s your fault

20 Responses to “Design By Tweaking”

  1. Ralph Hunter January 28, 2011 at 12:48 pm #

    I wanna see a guy covered in bubble wrap, fall over. I’m sure people would pay good money for that sort of entertainment. so that’s a yes for me, on both counts.

  2. Chandan Singh January 28, 2011 at 12:51 pm #

    yes the videos please!

  3. Ed January 28, 2011 at 1:37 pm #

    Be careful what you ask for, it might just come true :)

    • Arcade January 28, 2011 at 1:46 pm #

      Damn right! I love those vids!

  4. Urbanmelon January 28, 2011 at 2:01 pm #

    I want to see the videos and I also like monkeys !!!

  5. JB January 28, 2011 at 2:39 pm #

    Still, no jump ? Can you develop the process happening to this decision ? (We had the same problem, and resulted in the same decision in our game). I’m curious here :)

    Thanks :)

    (Ho, and of course you have to post theses vidz :p)

    • cocolapin January 29, 2011 at 2:29 pm #

      Please just stop talking about “jump”, bulletstorm is a freaking funny game which gameplay must absolutely not have jump !
      It’s not a PK-like ! If there was jump (and bunny hopping in Bulletstorm), gameplay and fun would be totally destroyed.

  6. David January 28, 2011 at 2:41 pm #

    > (we actually have videos of both of these – leave a message in the comments if you want us to post them)
    Do want!

  7. cyryl January 28, 2011 at 2:52 pm #

    WHOA, I smell some serious code optimization to make this world-inside-the-world simulations to be possible
    and yes, give us the videos ;)

  8. Valeriu January 28, 2011 at 5:10 pm #

    Yes.Please post those videos. :)

  9. woytaz January 28, 2011 at 5:33 pm #

    Videos! Yes, please!

  10. Skeletor (AutoPsychotic) January 28, 2011 at 6:24 pm #

    World in the world? Inceptstorm, anyone?

  11. Bulletstormtrooper January 28, 2011 at 7:55 pm #

    Viedeos! Videos! Videos!

  12. Chris January 29, 2011 at 2:08 am #

    Ps3 version has no god beams but the 360 does. come on guys, im tired of paying full price for an inferior product.

  13. The Future of Games January 29, 2011 at 3:02 am #

    I LOVE YOU. IN FIVE YEARS, WHEN i HAVE MY SHIT TOGETHER, I WOULD LIKE TO WORK FOR YOU.

  14. Bulletstormtrooper January 29, 2011 at 12:19 pm #

    Chris I was wathing comparision and X360 version has no screen saying that demo don’t represent full product and PS3 has this info, so maybe in full version god beams will be present in PS3 vesrion.

  15. Random January 29, 2011 at 2:05 pm #

    i want to come true i want VIDEOS!!!

Trackbacks/Pingbacks:

  1. Tweets that mention Design By Tweaking | People Can Fly | Blog -- Topsy.com - January 29, 2011

    [...] This post was mentioned on Twitter by Christian Arca, Adrian Chmielarz. Adrian Chmielarz said: We share secrets of Bulletstorm design, but all that the commenters want is a fail video of our programmer: http://bit.ly/gu4mN9 [...]

  2. Real Life Ragdoll [Request] | People Can Fly | Blog - February 14, 2011

    [...] asked for this! Previously you asked us for videos showing our Elite  physics Programmer Tomasz putting himself in the role [...]

  3. In-game PhysX integration | Bogumił Wiatrowski: Blog - March 25, 2011

    [...] use “at least”, because there are some situations when additional physics instance is required to create special effects. But – in my opinion [...]

Leave a Reply:

Gravatar Image

*