We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

Angry Birds (Android)

From The Cutting Room Floor
Revision as of 23:21, 23 April 2021 by MajorOfftop (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Title Screen

Angry Birds

Developer: Rovio
Publisher: Rovio
Platform: Android
Released internationally: October 15, 2010


MusicIcon.png This game has unused music.
DebugIcon.png This game has debugging material.


So very stubbly.
This page is rather stubbly and could use some expansion.
Are you a bad enough dude to rescue this article?
Hmmm...
To do:
  • Old versions of the game may have internal developer tools, search others.
  • Install Chinese version of the game and spot regional differences.

Angry Birds is an award-winning strategy game for multiple platforms, but mostly known on iOS. This article pertains to the Android version, which makes more sense to use on a tablet/phone.

Debugging Functions

In the game's asset directories, there are Lua files for debugging the game, some debugging code is also present in pre-existing Lua scripts not titled as debugging features, these are shown by the game's build settings.

Build Settings

Hmmm...
To do:
Show the effects of these in-game.
  • releaseBuild: Retail, clean build, turning off makes the game act like debugging build, enabling debugging functions and some screens have debugging information like the credits, true is defaulted, disabling this setting allows the use of using all developer cheats on beta builds.
  • showEditor: Shows the level and particle editors at the main menu, false is defaulted.
  • cheatsEnabled: Allows use of built-in developer cheats, false is defaulted.
  • useDynamicAssets: Makes the game use assets from the dynamic script directory, true is defaulted.
  • isPremium: Makes the game acts like a "premium" version, ads are disabled, false is defaulted.
  • isKorea: Makes the game act like a Korean build, false is defaulted for non-Korean builds.
  • applyChinaRestictions: Makes the game act as a Chinese build, a timer is shown for game time left, false is defaulted for non-Chinese builds.
  • gameVersionNumber: Game version number shown in credits, changes after every update.
  • customerString: OEM based on how the game was acquired, commonly "googleplay".
  • svnRevisionNumber: Server revision number in last credits line, the number starting with RXXXXX.
  • isSeasonsAvailable: Makes the game advertise Angry Birds Seasons in menus? True is defaulted.
  • g_registrationEnabled: Toggles the game activation DRM setting, false is defaulted.
  • g_updateCheckEnabled: Toggles the game's autoupdater executable updater.exe setting, defaulted to false.
  • g_hasWebBrowser: Makes the game think you have a web browser to view ads (?), defaulted to true.
  • bingIsEnabled: Allows Bing usage in-game?
  • enableAssertions: Enables assertions?
  • disableShopButton: Hides the shop from the game, "false" is defaulted, try changing to "true"?
  • hasIaps: Allows IAPs to be made (?) off is defaulted.
  • g_is_free_version: Makes the game act like a free version, false is defaulted?
  • useScaling: Toggles scaling settings, defaulted to true.
  • timeMachineServer: What server is used (for time)? dev is defaulted.
  • gameId: Short identifier for the game when clicking ads that log it, defaulted to abc.
  • g_separate_powerup_highscore: Allows powerup based high scores separately to be kept along with plain gameplay scores in a highscores.lua, false is defaulted.
  • applyLocalisation: Applies a predetermined localisation.
  • isHDVersion: Makes the game act like an iOS HD build, maybe shows HD sprites and textures if on? False is defaulted.
  • g_use_mighty_league: Makes the game show Mighty League on the main menu, true is defaulted.
  • g_use_ingame_ads: Makes the game use in-game ads, defaulted to true.

Mighty League Levels in Level Select

If the build is not a release build and has developer cheats on, an episode called MightyLeague Test Levels will appear in the level select, the framerate is really choppy while here.

Debugging info in Credits

If the game is not a release build, the player account ID, game environment and customerString is shown in the credits.

Developer Cheats

If developer cheats are on, these can be used and are shown during gameplay (there are also key-based commands as well like computer versions but mobile devices lack that...):

Main Menu

QA button

Freezes the game if the settings.lua file is incorrectly created, like data made from a beta build but not release, otherwise shows a menu with a few options,

  • Display Force Update Popup: Displays the force update popup (big on small devices, use back or wait to escape).
  • Reset All Settings: Resets all status ASIDES from currency + power up amounts and Mighty League customizations + account ID.
  • Open All Levels: Unlocks all levels with no stars for a save.
  • Add 100 Gems: Adds 100 Gems to a save.

Debugging information like the device ID, AD watcher ID and Install Date are also shown.

Mighty League

QA button

Shows a menu with many developer cheats to trigger, including: Reset Tutorial (Resets tutorial progress), Skip Tutorial (Skips Tutorial), Fake Day End (Make the game act like the day ended for a tournament), I Cheat :) (Adds a lot of Shockwaves to your save), Add Stars (Adds 100 stars to your current balance.), Edit Avatar (Allows you to edit your player avatar, always fails to save if still in tutorial), Select Emblem (Select player emblem icons/customizations), Switch Server (Switch between: the Development and QA servers, you cannot go back to the Production server by using this.) Free Stuff! (Gives you 25x Power Potions, Birdquakes and Shockwaves) Clear Friend Cache (Clears friend cache), Post Score (Post your current scores for levels 1-6 in a tournament.), Migrate (Upgrade league or downgrade, cannot be done on the Production server.) and 100 Eggs! (???), a display for the tutorial step and the server type is also present on the lower right corner after access.

  • Debug log for connection error: Errors are in much more detail.

Daily Rewards

  • Mock video watching: Watch ADS offline and take the reward while making the game treat the player like it did watch the advertisement.

Sling Scope Timer

  • Mock video watching: Watch ADS offline and take the reward while making the game treat the player like it did watch the advertisement.

In-Game

  • Mock video watching: Watch ADS offline and take the reward while making the game treat the player like it did watch the advertisement.
  • Instant win: Touching near the bottom left corner will make the game act like the level was completed and rigs approximately the amount for a 3-star score.

Anywhere

  • 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, the log scrolling bug crashing the game is also fixed unlike the PC version, but = symbols aren't visible when typed but entered. Using @ in your entry will close the debug console after it is entered.
  • Save file corruption alert: If a save file is corrupted on bootup, a popup by the name of QA Popup will show saying The file XXX.lua was corrupted.

Aside from manual usage, the Mighty Eagle randomly unlocks for the settings section of the save for a session if the save file is created via a beta build, due to corruption after reboot, the save gets recreated without it but retail settings sections support full save writing without corruption.

Level Editor

If the game value to show the Level Editor, is true, an "Editor" button will appear on the main menu, giving a menu with many options, the MuseumMode button freezes the game when tapped. Beating or attempting to exit a level will also freeze the game due to write access is not enabled by platform nature, also due to lack of touch screen support aside from testing levels (2-finger click) moving the camera (finger drag) and exiting the level (4-finger click), it's only useful for previewing levels, the camera is much more free, it's also very slow to load on low-end devices and only present in 7.1.0+ public releases...

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 lays there 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 was still in the current version files. Interestingly, some parts of the track were used in a commercial for the Angry Birds Action board game.

Developer Scripts

Pepperfish Lua Profiler

Hmmm...
To do:
Which specifically?

In one of the recent updates, a file called pepperfish.lua is present in the data/scripts/tools directory. There's also a README.txt, dating from likely March 17, 2011. Oddly ever since updates happen these files are still present and unchanged.

Original source http://lua-users.org/wiki/PepperfishProfiler (last update: 17 March 2011).

Modified to dump data in excel-compatible format (tabs instead of spaces).
Modified to log percentage of root call.

Integration:
1.	load the profiler code (1st line in gamelogic.lua)
	loadLuaFile(commonScriptPath .. "/../tools/pepperfish.lua", "")
2.	add the lua debug library (uncomment luaopen_debug around LuaState.cpp:41)
3.	start/stop the profiler using a key (update() function around gamelogic.lua:2279)
	if(keyHold["CONTROL"] and keyPressed["G"]) then
		if not g_profiler then
			g_profiler = newProfiler()
			g_profiler:start()
		else
			g_profiler:stop()
			local outfile = _G.io.open( "pepperfish.txt", "w+" )
			g_profiler:report( outfile )
			outfile:close()
			g_profiler = nil
		end
	end

Press Ctrl-G once to start the profiling session. Press Ctrl-G a second time to dump results to a pepperfish.txt.
The dump file will be in current working directory (game). It will be overwritten by subsequent dumps.
Hmmm...
To do:
Is it uncommented in any versions?

Unfortunately, a debug library in the one of the game's source code files has to be uncommented on line 41.

Encrypter Scripts

Versions 4.2.0-4.2.1 in both Free and HD releases have batch files in the data directory, unfortunately the tool isn't present...

Hmmm...
To do:
What is encrypter.exe? OpenSSL?

enc.bat

..\..\..\external\Fusion\tools\bin\encrypter.exe "USCaPQpA4TSNVxMI1v9SK9UC0yZuAnb2" %1 %2

Appears to encrypt a dropped Lua file.

dec.bat

..\..\..\external\Fusion\tools\bin\encrypter.exe -d "USCaPQpA4TSNVxMI1v9SK9UC0yZuAnb2" %1 %2

Almost the same as enc.bat but decrypts a dropped Lua file.