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

Angry Birds Seasons

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Angry Birds Seasons

Developer: Rovio
Publisher: Rovio
Platforms: Windows, Mac OS X, iOS, Android, Windows Phone, Symbian, webOS, Blackberry, Blackberry Tablet OS
Released internationally: October 21, 2010


CharacterIcon.png This game has unused playable characters.
SourceIcon.png This game has uncompiled source code.
DevMessageIcon.png This game has a hidden developer message.
GraphicsIcon.png This game has unused graphics.
SoundIcon.png This game has unused sounds.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.


PrereleaseIcon.png This game has a prerelease article

Hmmm...
To do:
  • Just like Classic, older versions can contain developer scripts, doc Android 6.6.2's.
  • Unused levels in the "Prototypes" folder and "pack71" zip file.
  • Additional CDN scripts for Android are uncompiled after decryption, possibly containing notes not seen in standalone releases.
    • Assets for version 5.3.0 exist on the staging server despite not having a retail build.

Originally known as Angry Birds Halloween, Angry Birds Seasons basically takes the formula of the original game but gives each of the chapters the theme of a particular holiday or, of course, season. The game was also included in Angry Birds Trilogy on consoles and the 3DS.

Sub-Pages

Read about prerelease information and/or media for this game.
Prerelease Info

Unused Graphics

Prototype Bubbles

An early version of Bubbles found in version 1.6.0. This version isn't too far off from his finalized design, albeit with more vivid orange feathers, ugly brownish-green dots all over his body, and a yellow belly. This design is also present in some versions of Angry Birds Trilogy.

Another early design was found in version 1.6.1, which gave him big eyebrows similar to Red's. The spots are still present in this design though they are in a lighter orange color instead of brownish-green.

1.6.0 1.6.1 Final
Angry Birds Seasons Prototype Bubbles.png AB Seasons 1.6.1 EarlyBubblesDesign.png Bubbles Final.png

Prototyping Episode

An icon for a prototyping episode, likely used to test levels before release.

Angry Birds Seasons Prototyping.png

Old Haunted Hogs Episode Card

Hmmm...
To do:
Compare with the finalized version used in the game.

The old version of the Haunted Hogs episode card had a dark blue background instead of purple.

Unused Haunted Hogs Episode Card.png

Early Moon Festival Water

Hmmm...
To do:
Compare with the finalized version used in the game.

An early version of the water seen in the background of the Moon Festival levels, which originally used less saturated colors compared to how it looks after the episode was added to the game.

Early Final
Beta Moon Festival Water.png THEME MOONCAKE PARALLAX 1 1.jpg

Moon Festival with Beta Water.png

Early Ham'o'ween Background

Found in version 1.6.1 of the game is an early parallax background for the episode Ham'o'ween. The color for the theme was originally going to be red, the finalized version settled on teal. There were also scarecrows that were replaced by trees, and mountains were added in the backdrop. The pumpkins, thorny vines, and spiked fences remain in the finalized version.

Early Final
HAM'O'WEEN BACKGROUND EARLY.png HAM'O'WEEN BACKGROUND FINAL.png

Early Cherry Blossom 3-Star Icon

The reward you earn for 3-starring all levels in the Cherry Blossom episode was originally a branch of flowers with stars in the center of each of them. The final version is reduced to just a single flower.

Early Final
Unused Cherry Blossom 3-Star Icon.png Final Cherry Blossom 3-Star Icon.png

Early Ham Dunk Background

Hmmm...
To do:
Compare with the finalized version used in the game.

An early background for the episode Ham Dunk found in version 3.3.0.

Prototype Ham Dunk Background.png

Eggs Files

Prior to when Invasion of the Egg Snatchers was released, there are files mentioning an early name for the episode, which is named Eggs Files.

Unused Text

1. Poached Eggs
2. Mighty Hoax
3. Danger Above
4. The Big Setup

Leftover text from Angry Birds.

Enable vibration?
Vibra: ON
Vibra: OFF
Vibra

Leftover text from the iOS and Android versions.

Angry Birds Seasons HD Free
Angry Birds Seasons HD
Angry Birds Seasons Free

Leftover text from the iOS versions.

Edit

Remnants of an internal level editor?

Unused Birds

BomBom

An unused bird from version 1.6.0. This birds ability is similar to the Blues, splitting into 3 when used, however they explode when touching an object. BomBom uses sounds from the Blues as a placeholder.

Angry Birds Seasons BomBom sprites.png

Future Eagle

An unused variant of the Mighty Eagle found in version 2.1.0. Upon launching the bait from the slingshot, the screen will go dark and lightning will strike every pig and block in the level. The Eagle would then come in from the left of the screen and jump through the structure.

The video below uses placeholder sprites and sounds for this bird, since none of the assets for it are present in any version of the game.

This bird would later be reworked into the Mighty Dragon in the Year of the Dragon episode.

(Source: Hidden Birds Twitter account)

Debugging Functions

Just like past Angry Birds games built with Lua, debugging functions are mentioned in certain Lua scripts and some are named that way.

Debugging Info in Credits

Like almost any Angry Birds game built with Lua, the credits page often shows debugging info: the Cloud data URL is shown as well as the customerString.

Developer Cheats

Hmmm...
To do:
Test the cheat keys on PC.

If developer cheats are on in build settings, it will be possible to use developer cheats, there's also key-based cheats and this game has a LOT:

Main Menu:

  • Cheat FTE!: Cheats first time experience, FTE means First Time Experience.
  • Facebook Login Details: Shows whether you are logged or not and what account name if so with Logged in as: XXX X. (full first name and first letter of last) as a sample, in the top right corner.

Powerup Shop:

  • Empty buttons: Gives the user the purchase without actual payment, this appears on Special Offers, Shockwave+Telebird page, Powerup page in the corners and Mighty Eagle page in the middle.
  • Downgrade: Allows the user to downgrade Shockwave or Telebird by one level.

Hats:

  • Empty button: Gives the user all hats for each bird for the collection for the session, can toggle back to legal ownership by current save data.

Challenges:

  • Empty buttons: Grants the user the challenge to be successful without any proper actions.

Progress:

  • Empty buttons: Grants the user the episode challenge to be successful without any proper actions.

Coin Shop:

  • Empty button 1: Grants the user 5000 coins (top left corner of popup and removes ADS?).
  • Empty button 2: Grants the user the opportunity to get the free Sling Scope for 10 min by watching an AD (bottom middle), a popup for the offer of activating the Sling Scope for 10 minutes for an AD watched is called and clicking ACTIVATE! displays a message going by: No videos available!!! Since this is a cheat build, will enable Sling Scope offer anyways. if no ads are present, otherwise forces an AD to be watched for one.

In-game:

  • Instant Win: Touching the bottom left corner (even if the powerup icon is overtop) multiple times will instantly beat the level with approximately the amount for a 3-star score.

Elsewhere:

  • AD watch simulation: Allows the user to simulate watching ADs offline or when none are present while not actually watching one and immediately getting the rewards.
  • All levels unlocked (no golden eggs): Unlocks all levels on every boot, for a session, not a save.
  • Call debug console: If the game is responding, it's possible to call the debug console. Touching near the bottom right corner two times will call it, scrolling is still buggy like the PC version and scrolling to an empty area will crash the game.

Cheat keys

Hmmm...
To do:
There is in gamelogic.lua and debugUtils.lua file located only scripts or scripts_common folders? add them.

In-game:

  • C = Simulates a three star completion, ignoring the current score and using a predetermined score, the same way for using it on mobile releases (Left corner multi click) is also a method to load on the PC version.
  • PgUp = Previous level.
  • PgDown = Next level, ignores level lock restrictions.

Elsewhere

  • Backspace-Q/W/E/R/T/Y/U = Crashes the game, attempts to call powerup bundles while PC version doesn't enable them or have the files.
  • Ctrl-Alt-# = "#" can be 1 (English), 2 (French), 3 (Italian), 4 (German), 5 (Spanish), 6 (Chinese), 7 (Taiwanese), 8 (Japanese), 9 (Portuguese) or 0 (Polish). Attempts to change the text locale, setting an unexisting locale other than Japanese or English crashes the game...
  • S = Toggle sounds on or off.
  • Ctrl-F5 = Attempts to create an Lua file containing the layout of a screen, crashes due to the folder layouts in the game data directory does not exist, manually creating it fixes the function to make a plaintext file.
  • Shift-F12: Toggles mouse cursor visibility.
  • Shift-C: Enables IAPs (doesn't work).
  • Shift-Z: Powerup bundle reward (Crashes due to power-up is disabled).
  • Shift-X: Powerup slot machine (Crashes due to power-up is disabled).
  • F: Toggles visibility of the FPS and memory display.

Unused Sounds

Wilhelm_scream_echo_02

The "Wilhelm Scream", with an echo.

Version Differences

  • Logs from mobile and 2.2.0-4.1.0 version are not included

Version 1.5.1

Unknown release of PC version as Nokia (Known image were cropped as HD splashes).

Version 2.0.0

This official build was released by Rovio after the Coming Soon! sign was removed.

Version 2.1.0

Improved quality of sounds and music.

Level Editor

There's a call for loading the level editor (1.1.0-1.2.1 still loads non-empty levels after encrypted and/or compiled lua but 2.5.0 and 4.1.0 still work), but 1.3.0-2.4.1 levels was empty after encrypted and/or compiled lua, the original files aren't present on public releases of v2.5.0+.

Developer Leftovers

Pig Days Pack JSON Revisions

Present in version 5.0.0 on the CDN are three SVN revisions of a JSON file related to the Pig Days episode that were somehow uploaded as raw files, est 2015-01-17 at 3:15 AM. What these were used for is unknown but likely related to generation of downloadable asset packages like this one.

{
    "depedencies": {
        "packs": [
            "theme35",
            "theme19",
            "theme18",
            "theme24",
            "theme34",
            "theme37",
            "theme16",
            "theme22",
            "theme23",
            "theme20",
            "theme21",
            "theme30",
            "theme33",
            "theme25",
            "theme28",
            "theme29",
            "theme38",
            "theme27"
        ]
    },
    "include": {
        "audioClips": [
            "ambience_pigs_day_01"
        ],
        "gameData": [
            "levels/PigsDay\\Level_PigsDay140720.lua",
            "levels/PigsDay\\Level_PigsDay140724.lua",
            "levels/PigsDay\\Level_PigsDay140728.lua",
            "levels/PigsDay\\Level_PigsDay140809.lua",
            "levels/PigsDay\\Level_PigsDay140813.lua",
            "levels/PigsDay\\Level_PigsDay140819.lua",
            "levels/PigsDay\\Level_PigsDay140830.lua",
            "levels/PigsDay\\Level_PigsDay140906.lua",
            "levels/PigsDay\\Level_PigsDay140909.lua",
            "levels/PigsDay\\Level_PigsDay140912.lua",
            "levels/PigsDay\\Level_PigsDay140919.lua",
            "levels/PigsDay\\Level_PigsDay140922.lua",
            "levels/PigsDay\\Level_PigsDay140929.lua",
            "levels/PigsDay\\Level_PigsDay141010.lua",
            "levels/PigsDay\\Level_PigsDay141013.lua",
            "levels/PigsDay\\Level_PigsDayCodingDay.lua",
            "levels/PigsDay\\Level_PigsDayHalloweenZombieApocalypse.lua",
            "levels/PigsDay\\Level_PigsDayHalloweenMadDoc.lua",
            "levels/PigsDay\\Level_PigsDayDiaDeMuertos.lua",
            "levels/PigsDay\\Level_PigsDayFawkes.lua",
            "levels/PigsDay\\Level_PigsDayAhtisaari.lua",
            "levels/PigsDay\\Level_PigsDayWilliamTell.lua",
            "levels/PigsDay\\Level_PigsDayHotAirBalloon.lua",
            "levels/PigsDay\\Level_PigsDayThanksgiving.lua",
            "levels/PigsDay\\Level_PigsDayBirdDay.lua",
            "levels/PigsDay\\Level_PigsDayNYE2015.lua",
            "levels/PigsDay\\Level_PigsDayScifi.lua",
            "levels/PigsDay\\Level_PigsDayRubberduck.lua",
            "levels/PigsDay\\Level_PigsDayPopcorn.lua",
            "levels/PigsDay\\Level_PigsDayDataPrivacy.lua",
            "levels/PigsDay\\Level_PigsDayWindmill.lua",
            "levels/PigsDay\\Level_PigsDayValentine2015.lua",
            "levels/PigsDay\\Level_PigsDayChineseNewYear.lua",
            "levels/PigsDay\\Level_PigsDayChineseNewYear.lua",
            "levels/PigsDay\\Level_PigsDayPolarbear.lua",
            "levels/PigsDay\\Level_PigsDayNASA100.lua",
            "levels/PigsDay\\Level_PigsDayGoldrush.lua",
            "levels/PigsDay\\Level_PigsDaySubmarineDay.lua",
            "levels/PigsDay\\Level_PigsDayHanami.lua",
            "levels/PigsDay\\Level_PigsDayEasterNightmare.lua",
            "levels/PigsDay\\Level_PigsDayYuriGagarin.lua",
            "levels/PigsDay\\Level_PigsDayEarthDay.lua",
            {
                "source": "config\\episodes\\gen\\cloud\\episodePigDays.json",
                "target": "config\\episodes\\episodePigDays.json"
            }
        ],
        "graphicsSheets": []
    },
    "subType": "episode",
    "type": "pack"
}

Level_PigsDayChineseNewYear was duplicated and no texture sheets were referenced yet.

{
    "depedencies": {
        "packs": [
            "theme35",
            "theme19",
            "theme18",
            "theme24",
            "theme34",
            "theme37",
            "theme16",
            "theme22",
            "theme23",
            "theme20",
            "theme21",
            "theme30",
            "theme33",
            "theme25",
            "theme28",
            "theme29",
            "theme38",
            "theme27"
        ]
    },
    "include": {
        "audioClips": [
            "ambience_pigs_day_01"
        ],
        "gameData": [
            "levels/PigsDay\\Level_PigsDay140720.lua",
            "levels/PigsDay\\Level_PigsDay140724.lua",
            "levels/PigsDay\\Level_PigsDay140728.lua",
            "levels/PigsDay\\Level_PigsDay140809.lua",
            "levels/PigsDay\\Level_PigsDay140813.lua",
            "levels/PigsDay\\Level_PigsDay140819.lua",
            "levels/PigsDay\\Level_PigsDay140830.lua",
            "levels/PigsDay\\Level_PigsDay140906.lua",
            "levels/PigsDay\\Level_PigsDay140909.lua",
            "levels/PigsDay\\Level_PigsDay140912.lua",
            "levels/PigsDay\\Level_PigsDay140919.lua",
            "levels/PigsDay\\Level_PigsDay140922.lua",
            "levels/PigsDay\\Level_PigsDay140929.lua",
            "levels/PigsDay\\Level_PigsDay141010.lua",
            "levels/PigsDay\\Level_PigsDay141013.lua",
            "levels/PigsDay\\Level_PigsDayCodingDay.lua",
            "levels/PigsDay\\Level_PigsDayHalloweenZombieApocalypse.lua",
            "levels/PigsDay\\Level_PigsDayHalloweenMadDoc.lua",
            "levels/PigsDay\\Level_PigsDayDiaDeMuertos.lua",
            "levels/PigsDay\\Level_PigsDayFawkes.lua",
            "levels/PigsDay\\Level_PigsDayAhtisaari.lua",
            "levels/PigsDay\\Level_PigsDayWilliamTell.lua",
            "levels/PigsDay\\Level_PigsDayHotAirBalloon.lua",
            "levels/PigsDay\\Level_PigsDayThanksgiving.lua",
            "levels/PigsDay\\Level_PigsDayBirdDay.lua",
            "levels/PigsDay\\Level_PigsDayNYE2015.lua",
            "levels/PigsDay\\Level_PigsDayScifi.lua",
            "levels/PigsDay\\Level_PigsDayRubberduck.lua",
            "levels/PigsDay\\Level_PigsDayPopcorn.lua",
            "levels/PigsDay\\Level_PigsDayDataPrivacy.lua",
            "levels/PigsDay\\Level_PigsDayWindmill.lua",
            "levels/PigsDay\\Level_PigsDayValentine2015.lua",
            "levels/PigsDay\\Level_PigsDayTennisTournament.lua",
            "levels/PigsDay\\Level_PigsDayChineseNewYear.lua",
            "levels/PigsDay\\Level_PigsDayPolarbear.lua",
            "levels/PigsDay\\Level_PigsDayNASA100.lua",
            "levels/PigsDay\\Level_PigsDayGoldrush.lua",
            "levels/PigsDay\\Level_PigsDaySubmarineDay.lua",
            "levels/PigsDay\\Level_PigsDayHanami.lua",
            "levels/PigsDay\\Level_PigsDayEasterNightmare.lua",
            "levels/PigsDay\\Level_PigsDayYuriGagarin.lua",
            "levels/PigsDay\\Level_PigsDayEarthDay.lua",
            {
                "source": "config\\episodes\\gen\\cloud\\episodePigDays.json",
                "target": "config\\episodes\\episodePigDays.json"
            }
        ],
        "graphicsSheets": [
            "LS_CELEBRATION_ICONS",
            "LS_CELEBRATION"
        ]
    },
    "subType": "episode",
    "type": "pack"
}

Level_PigsDayTennisTournament replaced the duplicate and texture sheets for level selection celebrations were added.

The .mine file is roughly identical to r17095 except double backslashes are replaced with single forward slashes.

SVN Paths

While not actually a mistake, the cloud manifest and file catalog JSONs from the CDN contain the SVN branch path and revision of the said version.

https://svn.rovio.com/AngryBirdsSeasons/branches/*
svn+ssh://svn.rovio.com/AngryBirdsSeasons/branches/*

Uncompiled Backup Scripts

Hmmm...
To do:
Should this go in the Lua namespace?

Six backup scripts of gamelogic.lua are present in 1.4.0 specifically for the iPad release with a .bak* extension for each revision, free of encryption. Unlike the original script, these ones are completely uncompiled, providing comments you wouldn't see in the original. The first three and fifth are identical while the 4th and 6th are different to the before but identical to each other.


(Source: AB Modding Hub: It's Going To Be About Pirate#7201)

Unknown JSON File

The file, config.json is present in v3.1.1 for Android and automatically "cooked" for the game but the file has no references. Unlike the file in Classic, it has build information, most likely from a internal build tool.

{
    "additionalPermissions": [], 
    "appName": "Angry Birds", 
    "archs": [
        "arm", 
        "armv7", 
        "x32"
    ], 
    "buildDate": "2012-12-07", 
    "buildStartedBy": "", 
    "compatibleScreens": [], 
    "compileLua": true, 
    "compressLua": true, 
    "copyAssets": [
        [
            "game/config.lua", 
            ""
        ], 
        [
            "game/data_src/levels", 
            "data"
        ], 
        [
            "game/data_src/localization", 
            "data"
        ], 
        [
            "game/data_src/localization_android", 
            "data"
        ], 
        [
            "game/data_src/scripts", 
            "data"
        ], 
        [
            "common/scripts/game/**", 
            "data/scripts_common"
        ], 
        [
            "game/data_src/images/320x240_android", 
            "data/images"
        ], 
        [
            "game/data_src/images/480x320_android", 
            "data/images"
        ], 
        [
            "game/data_src/images/864x480", 
            "data/images"
        ], 
        [
            "game/data_src/images/960x640_android", 
            "data/images"
        ], 
        [
            "game/data_src/fonts/320x240", 
            "data/fonts"
        ], 
        [
            "game/data_src/fonts/480x320", 
            "data/fonts"
        ], 
        [
            "game/data_src/fonts/864x480", 
            "data/fonts"
        ], 
        [
            "game/data_src/audio/16000hz-16bit-mono-mp3/**", 
            "data/audio"
        ], 
        [
            "external/Fusion/data/shaders/gles2", 
            "data"
        ]
    ], 
    "copyExcludes": [
        "game/data_src/levels/packLite", 
        "game/data_src/levels/roku", 
        "game/data_src/levels/pack1[89]", 
        "game/data_src/levels/pack[2-9][0-9]"
    ], 
    "copyPatterns": [
        [
            "build/android/res/**", 
            "res"
        ]
    ], 
    "copyTo": "p:/RovioMobile/AngryBirds Seasons/Software/Android/2012-12-07_3.1.1_(8934)_androidmarket", 
    "customLuaOptions": {
        "gamelua.applyChinaRestictions": false, 
        "gamelua.bingIsEnabled": false, 
        "gamelua.cheatsEnabled": false, 
        "gamelua.customerString": "'androidmarket'", 
        "gamelua.disableShopButton": false, 
        "gamelua.enableAssertions": false, 
        "gamelua.g_hasWebBrowser": true, 
        "gamelua.g_is_free_version": false, 
        "gamelua.g_registrationEnabled": false, 
        "gamelua.g_updateCheckEnabled": false, 
        "gamelua.gameId": "'abs'", 
        "gamelua.gameVersionNumber": "'3.1.1'", 
        "gamelua.isKorea": false, 
        "gamelua.isPremium": false, 
        "gamelua.releaseBuild": true, 
        "gamelua.showEditor": false, 
        "gamelua.svnRevisionNumber": "'8934'", 
        "gamelua.timeMachineServer": "'dev'", 
        "gamelua.useDynamicAssets": true
    }, 
    "customScripts": {
        "assetFilter": "update_level_filenames.py"
    }, 
    "customer": "androidmarket", 
    "debug": false, 
    "defines": [
        "CRYPTED_LUA_FILES", 
        "ZIPPED_LUA_FILES", 
        "USE_PRODUCTION_ADS"
    ], 
    "dirSuffix": "", 
    "encryptLua": true, 
    "encryptionKey": "__SECRET__", 
    "externalModules": [], 
    "failOnConfigurationWarnings": true, 
    "fusionDefines": [], 
    "includeDirs": [
        "../../source", 
        "../../external/Fusion/include", 
        "../../common/dependencies/box2d/Box2D", 
        "../../common/source/"
    ], 
    "jobs": 8, 
    "keyAlias": "__SECRET__", 
    "keyAliasPassword": "__SECRET__", 
    "keyStore": "__SECRET__", 
    "keyStorePassword": "__SECRET__", 
    "luaOptionsFile": "data/scripts/options.lua", 
    "minSdkVersion": "8", 
    "modules": [
        "flurry", 
        "framework", 
        "grgles1", 
        "grgles2", 
        "game", 
        "gr", 
        "hgr", 
        "img", 
        "io", 
        "lua", 
        "net", 
        "pf", 
        "util", 
        "audio", 
        "math", 
        "lang", 
        "ads"
    ], 
    "obfuscate": true, 
    "outputName": "AngryBirdsSeasons_3.1.1_androidmarket_DISTRIBUTION", 
    "packageName": "angrybirdsseasons", 
    "platform": "android", 
    "projectName": "AngryBirdsSeasons", 
    "releasePackage": true, 
    "sourceExcludes": [
        "../../common/source/AppUpWrapper*", 
        "../../common/source/Nook*", 
        "../../common/source/RovioAccount*", 
        "../../common/source/AdMob*", 
        "../../common/source/Cloud*", 
        "../../common/source/GamerServ*"
    ], 
    "sourceFiles": [
        "../../source/**.cpp", 
        "../../common/source/*.cpp"
    ], 
    "subDir": "gen", 
    "svnRevision": "8934", 
    "targetPrefix": "android-", 
    "targetSdkVersion": "13", 
    "verbosity": 1, 
    "versionCode": "3101", 
    "versionString": "3.1.1"
}

Java Source Backup

v1.1.0 for Android left a file called MySurfaceView.java.bak in com/rovio/ka3d, a leftover folder at the root. It seems it's from a proprietary version of the Ka3D engine. App compilation dates suggest it's around December 12 of 2010.

package com.rovio.ka3d;

import android.content.Context;
import android.util.Log;
import android.view.MotionEvent;

public class MySurfaceView extends GLSurfaceView
{
    public MySurfaceView(Context context)
    {
    	super(context);
    	setEGLConfigChooser( false );
    	m_renderer = new MyRenderer(context);
    	setRenderer(m_renderer);
    	
    	try
        {
    		// Create multi-touch input if supported
    		m_inputDelegator = new MultiTouchInputDelegator(m_renderer);
        }
        catch(Throwable e)
        {
        	// Create single-touch input if supported
        	m_inputDelegator = new SingleTouchInputDelegator(m_renderer);
        } 
    }
    
    public boolean onTouchEvent(final MotionEvent event)
    {	
    	return m_inputDelegator.onTouchEvent(event);
    }
    
    public InputDelegator	m_inputDelegator;
    public MyRenderer		m_renderer;
}

Quest Scripts

Version 5.3.1 left two scripts from internal development, they try to call a external Python tool. A .sh for the same purpose was added in 5.3.2, likely for extra developers on Linux. The batch script was updated since version 6.0.0.

Old revision:

..\..\..\..\external\Fusion\buildtool\tools\python-2.6.6-win-x86\python ..\..\..\..\tools\CloudAssetPacker\bin\quests.py refreshSeekAndDestroyLevels
pause

New:

python ..\..\..\..\tools\pythontools\quests.py refreshSeekAndDestroyLevels
pause
python ../../../../tools/pythontools/quests.py refreshSeekAndDestroyLevels

Placeholder Customer String

In Amazon 3.3.0's native code, the customer string forgot to be defined and uses the below string. While usually defined through scripts/options.lua, the fact that it's defined internally provides a bit of insight on how they are set before building.

GAME_CUSTOMER

Anti-Hacking String

The native function GameLua::unlockRequestChecksum uses the below string, possibly to flame reverse engineers looking at the function. Interestingly it remained in all future builds of the game, regardless of the platform and even had a sequel.

ShameOnYouHacker

Red's Mighty Feathers Vehicle Path Reference

As of v3.3.0-v4.1.0, the GameLua::GameLua function defined a path to the vehicles directory, which only existed in Classic. Perhaps the existence was a leftover from part of the Angry Birds codebase.

/vehicles/

Windows Exclusive Native Code

Hmmm...
To do:
Rough decompilations of the code.

The following native classes are dummied on other platforms but on Windows builds of the game, the logic for them is present. Only ones related to development will be mentioned.

GameLua::createDirectory

This function creates a directory specified in dataPath.

GameLua::getDirectoryFileList

This function gets the file list of the directory passed to it.

GameLua::removeParticleFile

This function was added in 4.0.1 and removes the particle file name in the below directory of the application root.

data_src\\particles\\*.lua

GameLua::checkDirectory

This function simply checks if the directory passed to it exists, returns true if valid.

Internal Project Name

The internal name of the game is Linnut Halloween, Linnut is roughly translated to Birds while Halloween is self-explanatory (with or without Rovio and/or Angry), according to the build path of older releases of the game. [1] [2]

  1. /Users/miika/Documents/Rovio_Linnut_Halloween/build/iphone/build/Rovio_Linnut.build (1.0.0 iPhone)
  2. /Users/bserve/Applications/Hudson/home/jobs/AngryBirdsSeasonsFree-iphone/workspace/Rovio_AngryBirdsSeasons/build/iphone/build/Rovio_Linnut.build/Distribution-iphoneos/Rovio_Linnut_Halloween_Lite.build (1.4.0 iPhone Free)