If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
This article has a talk page!

Angry Birds (iOS)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Angry Birds

Developer: Rovio
Publishers: Clickgamer, Chillingo
Platform: iOS
Released in JP: December 11, 2009
Released in US: December 11, 2009
Released in EU: December 11, 2009


AreasIcon.png This game has unused areas.
GraphicsIcon.png This game has unused graphics.
Sgf2-unusedicon1.png This game has unused abilities.
MusicIcon.png This game has unused music.
SoundIcon.png This game has unused sounds.
DebugIcon.png This game has debugging material.


ProtoIcon.png This game has a prototype article
PrereleaseIcon.png This game has a prerelease article

Hmmm...
To do:
  • Discuss whether or not the Free versions and their unused content should be documented here. Free and HD Free contain leftover assets from Seasons.
  • Make a section for the scrapped Challenges Mode found in v2.0.0.
  • Multiple unused vehicles for the Egg Defender levels in Red's Mighty Feathers (should probably have its own sub-page).
  • Everything present in versions 4.1.0 and onwards.
    • Scrapped F2P/Adventure Mode content.
      • Unused "Hero" variants of the birds and their abilities showcased here.
    • Scrapped "Siege" game mode, which would've had similar mechanics to Angry Birds 2.
    • Scrapped level map layout.
    • Various unused levels found in the files.
    • Unused power-ups.
    • Unused "Flappy Bird" ability which first appeared in version 7.4.0.

Angry Birds is the once hugely popular iOS game with colorful graphics, fun game play, tons of merchandising to back it up and one of the most memorable theme songs ever. Let the birds fly, and may the pigs fallǃ The game has been taken off the App Store, but you can reinstall it if you had it before it was pulled.

A remake of the game, built from the ground up in the Unity engine, released in 2022. It is based on the 2012 version of the game, following the #BringBack2012 campaign from the community.

Sub-Pages

Read about prototype versions of this game that have been released or dumped.
Prototype Info
Read about prerelease information and/or media for this game.
Prerelease Info
AB iOS 1.0 HUD ICON NOTE.png
Unused Audio
The unsung squawks and squeals of bird & pig warfare.
AngryBirds iOS Unused VioletFeathers.png
Unused Graphics
Birds, blocks and backgrounds, oh my!
Blank.png
Unused Levels
Seems like even the pigs had to let some structures stay on the drawing board.
Bomb White Spot.png
Revisional Differences
Let's hope you like graphical changes.

Title theme changes

In version 3.3.0, the game's main theme was replaced with Angry Birds Trilogy's main theme to celebrate the release of the episode "Red's Mighty Feathers". Version 4.0.0 would later revert the main theme back to the original track.

Versions 3.3.0
(Angry Birds Trilogy theme)
All other versions
(Angry Birds theme)

Old Level and Game Complete

The sound used for when the player completes a level in the previous versions of Angry Birds. It was replaced with the ranking system from Angry Birds Rio, but the sound file still remains in the files of the current version as a leftover, it is only used when the player completes an episode.

The sound used on the oldest version when the player completes the game. This was replaced by a ranking system from Angry Birds Rio and like above, this song still remains in the files of the current version of the game. Interestingly, some parts of the track were used in a commercial for the Angry Birds Action board game.

Early Mighty Eagle

Before Mighty Eagle was added to the game in version 1.5.0, there was an early version of the Eagle that was found in versions 1.4.0-1.4.1 that was going to work a lot differently. This early version shows that the Eagle was originally going to fall straight down onto wherever the bait initially lands, whereas the finalized version has the Eagle swoop in.

Sprites

Bait

Version 1.4.0 features a much different sprite for the Eagle bait, where it was going to look like a mouse. In version 1.4.1, this was changed to early rendition of the sardine can that's slightly slanted.

1.4.0/1.4.1 HD 1.4.1 Final
AngryBirds iOS 1.4.0 BaitMouse.png AngryBirds iOS 1.4.1 EarlySardines.png AngryBirds iOS BaitSardines.png

Eagle

Unlike the Bait, Mighty Eagle himself didn't change all that much, design-wise. In version 1.4.0, his sprite is completely unobscured. In version 1.4.1, a blur effect similar to that of Chuck's ability sprite was applied to the Eagle's sprite. The finalized version seems to use a darkened version of 1.4.1's sprite.

1.4.0/1.4.1 HD 1.4.1 Final
AngryBirds iOS 1.4.0 EarlyMightyEagle.png AngryBirds iOS 1.4.1 EarlyMightyEagle.png AngryBirds iOS BirdMightyEagle.png

UI

AngryBirds iOS 1.4.0 - 1.4.1 UI IngameButtonEagle.png AngryBirds iOS 1.4.0 - 1.4.1 UI ButtonEagle.png AngryBirds iOS 1.4.0 - 1.4.1 UI ButtonEagleLost.png

Early buttons for the Mighty Eagle.

AngryBirds iOS 1.4.0 - 1.4.1 UI EagleBadge.png

A badge of some kind, presumably intended for the Level Complete screen after using the Eagle.

Audio

Listen Sound Summary
Sounds used for the bait back when it was originally a mouse. Weirdly, while these sounds were removed in mobile versions after the Eagle was finalized, they remained in PC versions.
Two early sounds for the Mighty Eagle himself.
(Source: Original TCRF research)

Magic Places

Hmmm...
To do:
  • There's more assets for this in the files. Document them here.

Magic Places was a Geo-locational game mode which was only playable in China, but was planned to be added internationally. In it, you can collect free power-ups from places that are nearby your location in real life, of which are represented as golden feathers in-game.

Additionally, as part of a sponsership between Rovio and McDonald's in China at the time (of which also spawned a certain webgame that coincided with this game mode), you could also check where the nearest McDonald's is in this. Cause who'd want to check an actual map app for something like that, eh?

Since the international release of this game mode never came to be, multiple assets and scripts for Magic Places were leftover in the files of versions 2.3.0 - 3.0.0.

Sprites

AB HD 3.0.0 MagicPlaces EpisodeSelectionButton.png

The card for Magic Places that would be seen on the episode selection menu, found in the "MAGIC_PLACES_SHEET_1" sprite sheet. Note the "BETA" tag in the top left.

AB HD 3.0.0 MagicPlaces MainMenuButton.png

A button for Magic Places that would've appeared on the main menu.

AB HD 3.0.0 MagicPlaces FAQSprite1.png AB HD 3.0.0 MagicPlaces FAQSprite2.png AB HD 3.0.0 MagicPlaces FAQSprite3.png

Sprites used for an popup informing the player that Magic Places uses location data, as well as a link to FAQ page for Magic Places on Rovio's website.

Audio

Listen Sound Summary
An ambience track that'd most likely play while viewing the world map.
Sounds used for Red, who serves as a indicator for where the player is on the map. Two of these sounds are also present in the In-game Trailer and in the files of Angry Birds Arcade.
A notification sound. Weirdly, this is the only sound related to Magic Places that's located in the data folder, while the rest are placed in the main directory for the game.
A couple sounds presumably used for pop-up messages, according to the filenames.
A sound that'd play when earning a reward.
Another pop-up sound, presumably used for some kind of tutorial message according to the filename.

Development Leftovers

animations.lua

Hmmm...
To do:
  • Find a way to import this into the game.

Present in versions 1.0 - 1.6.3 is a completely unused file called "animations.lua", which seems to contain an early intro cutscene. Judging by the code in the introAnimation table, it seems it would've involved the birds getting angry at a pig who sneezed on one of them.

introAnimation = {
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_1"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_2"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_1"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_2"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_1"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_2"}},

    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_1", "BIRD_FLYING_1"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_2", "BIRD_FLYING_2"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_1", "BIRD_FLYING_3"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_2", "BIRD_FLYING_4"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_1", "BIRD_FLYING_5"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SLEEP_2", "BIRD_FLYING_6"}},

    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_OK", "BIRD_NORMAL_1"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZE_1", "BIRD_NORMAL_1"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZE_2", "BIRD_FLIP_1"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZE_2", "BIRD_FLIP_2"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZED_1", "BIRD_FLIP_3"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZED_1", "BIRD_FLIP_4"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZED_1", "BIRD_FLIP_5"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZED_1", "BIRD_GROUND"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZED_1", "BIRD_GROUND", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_1", "PIGLETTE_SNEEZED_1", "BIRD_NORMAL_2"}},

    {time = 0.33, sprites = { "BEGINNING_BG_2", "PIGLETTE_SNEEZED_2", "BIRD_NORMAL_3"}},
    {time = 0.33, sprites = { "BEGINNING_BG_3", "BIRD_NORMAL_4", "CUTSCENE_YELLOW_BIRD_2"}},

    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_1"}},

    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_GROUND_TALK", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_1"}, "SWEARING"},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_GROUND_TALK", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},

    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_TALK", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_TALK", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_TALK", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_TALK", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_TALK", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_TALK", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_TALK", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_TALK", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_TALK", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_TALK", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_TALK", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_TALK", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_TALK", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_TALK", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_TALK", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_TALK", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_TALK", "CUTSCENE_BLACK_BIRD_1", "CUTSCENE_RED_BIRD_TALK", "CUTSCENE_GREEN_BIRD_1", "SWEARING"}},
    {time = 0.33, sprites = { "BEGINNING_BG_4", "BIRD_NORMAL_5", "CUTSCENE_YELLOW_BIRD_1", "CUTSCENE_BLACK_BIRD_TALK", "CUTSCENE_RED_BIRD_1", "CUTSCENE_GREEN_BIRD_TALK", "SWEARING"}},
}

birdAnimations = {
    blueBird = {
        time = 0.5,
        delayToNextAnimation = 4,
        frames = {},
    },
}filename="animations.lua"

Strangely, while this script was eventually removed in version 2.0.0, it would someone manage to make its way into the files of later entries to the franchise, such as Seasons, Rio, and Space.

Leftover "kingOfTheHill" and "train" Text

The init function for OverlayPage in 1.6.3's gamelogic contains some leftover text for "kingOfTheHill" and "train", which were two unused minigames that were found in Angry Birds Rio's code.

function OverlayPage:init()
    self:insertItem("shade", RectItem:new({alpha = 0.0}))
    self:insertItem("kingText", TextItem:new({default = "Pigs popped: ", text = "Pigs popped: ", x = screenWidth / 2, y = screenHeight / 2, visible = false}))
    self:insertItem("trainText", TextItem:new({default = "Carts wrecked: ", text = "Carts Wrecked: ", x = screenWidth / 2, y = screenHeight / 2, visible = false}))
    self:insertItem("again", TextItem:new({text = "Try again", x = screenWidth / 2, y = (screenHeight / 2) + (50 / 320) * screenHeight, visible = false,
										   action = {[function(x) sm:changeScene(x) end] = "kingOfTheHill"}}))
    self:insertItem("quit", TextItem:new({text = "Quit", x = screenWidth / 2, y = (screenHeight / 2) + (80 / 320) * screenHeight, visible = false,
										   action = {[function(x) sm:changeScene(x) end] = "mainMenu"}}))
end

"prototyping" Scripts

Hmmm...
To do:
  • The following scripts still either need footage or proper documentation, if possible:
    • ChuckSpeed
    • Demolisher
    • KnockBox
    • Mud
    • Raycast
    • TNTBird
    • WheelOfFortune
    • Wind

Since version 4.1.0, a folder called "prototyping" has been present in the scripts/subsystems directory in the files. This folder contains multiple scripts for what appear to be different minigames and test mechanics, each with its own unique functionality.

BubblesAndBalloons

A short minigame where you control a deflating Bubbles in the air, while Pigs and blocks attached to balloons descend from the top of the screen. Due to being unfinished, the game crashes once Bubbles has fully deflated.

ChuckSpeed

A variant of Chuck's ability which would make him move in a straight line while leaving a long particle trail behind, instead of simply increasing his velocity.

Demolisher

A minigame set in the levels of the episode "Mine and Dine", where you place 5 TNT blocks in a level. After the player finishes placing the TNT blocks, they explode.

LevelTransition

A strange-looking transition between Mine and Dine levels which has the blocks flying offscreen and back. This script was most likely intended for testing purposes.

PigFeeder

Another minigame where you control a Minion Pig trying to collect food and avoid TNT blocks. The game crashes if the pig touches either one of the objects.

Raycast

An strange script which only contains a call to add an update function called raycastUpdate. When this function is triggered, the cursor becomes an amber or ruby particle. It's unknown what this would've been intended for.

StellaRescue

Hmmm...
To do:
Add footage for this, if possible.

Yet another short minigame, this time centered around Stella. According to the code, this minigame would've had you trying to save birds that fly across the screen by trapping them in bubbles, while also trying to avoid pigs that fly across the screen as well. If you tap a pig, you'll lose a life (lives are represented by one of Shockwave Bomb's sprites, which is most likely a placeholder).

Wind

A duplicate of the PigFeeder script with the only notable difference being a call for a native function named _G.native.UniformBSplineManager.drawWind in the function startWind(). It's possible that this could've been intended as a harder difficulty to PigFeeder.

(Source: Original TCRF research)

Oddities

Blues and Matilda's Swapped Ability Sounds

For some reason, the ability sounds for The Blues and Matilda are swapped in-game. "special egg.wav" is used for The Blues' ability, while "special group.wav" is used for Matilda's ability.

Red's Blinking and Flying Sprites

Curiously, Red used the same sprite for his blinking and flying sprites, despite the other birds using two separate sprites for their blinking and flying state.

Debugging Utilities

Just like past Angry Birds games built with Lua, debugging functions are mentioned in some Lua scripts.