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.
MusicIcon.png This game has unused music.
SoundIcon.png This game has unused sounds.
DebugIcon.png This game has debugging material.


PrereleaseIcon.png This game has a prerelease article

Hmmm...
To do:
  • Leftovers from Angry Birds Magic and unused graphics.
  • Document prototype builds found in archived TestFlight CDNs. There's early assets for the King Pig Mode in one of them.
  • 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 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.

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 appiled 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.

Sounds

Sounds used for the bait back when it was originally a mouse.

Two early sounds for the Mighty Eagle.

(Source: Original TCRF research)

Unused Scripts

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 = {}
  }
}

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.

"prototyping" Scripts

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

Version 4.3.5 contains multiple scripts for what seem to be different minigames and test mechanics inside of a folder called "prototyping", 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.

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 could possible that this was 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.