Without a doubt, this was a fun article to write. Not only was there much research done in order to understand the physics of the game (that is, how gravity worked in the game, how collisions were mimicked, and so on), but I also had to play it. A lot. Can you say that you claimed $0.99 on your taxes because buying the game needed to be offset against the income from the article? I thought not.
Anyway, on to the gist of the article. I cover three main topics: the parabolic flight of the red bird from the acceleration due to gravity, the stretching of the catapult’s elastic cord (and some major simplification of Hooke’s Law), and some basic collision physics, including Newton’s Law of the Conservation of Momentum. I won’t rehash it all here, but enjoin you to go read the article.
The real-world physics implemented in Angry Birds is pretty elementary, and I showed that the coding must have been fairly straightforward, but I’d have to admit that I hadn’t used or considered kinematics since those O-level Physics lessons at school, many, many years ago. Coincidentally, during my time at Microsoft, our team was working on a C# implementation of a game called “Battlebots” as a demo (no, I don’t know what happened to it, this was ten years ago) and we spent a long time futzing around with collision detection code trying to improve it. It was nasty.
(Erratum: I just noticed that the design editor changed the color of the ball in Figure 2 from my supplied diagram, but forgot to change the caption. Oh well.)
This article first appeared in issue 318, February 2012.
You can read the PDF here.
(I used to write a monthly column for PCPlus, a computer news-views-n-reviews magazine in the UK, which sadly is no longer published. The column was called Theory Workshop and appeared in the Make It section of the magazine. When I signed up, my editor and the magazine were gracious enough to allow me to reprint the articles here after say a year or so.)
Feel free to add a comment...
Leave a response
Note: some MarkDown is allowed, but HTML is not. Expand to show what's available.
* an item
1. an item
> Now is the time...
Preview of response