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

Ice Age Village (iOS, Android)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Ice Age Village

Developer: Gameloft
Publishers: Gameloft
Platforms: iOS, Android, Windows Phone, Blackberry Tablet OS
Released internationally: April 5, 2012


DevTextIcon.png This game has hidden development-related text.
DebugIcon.png This game has debugging material.


Being one of the first free-to-plays from Gameloft, Ice Age Village is a city-builder starring the cast of, what else, the Ice Age series.

"Isn't there anyone who cares about Sid the Sloth?"

This cactus is UNDER CONSTRUCTION
This article is a work in progress.
...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes.
Notes: Currently figuring out the proprietary texture format and slowly looking through related textures for anything fishy but we'll need the encryption key to view unused parameters.
  • More debug strings possibly.
  • Blackberry version has WAY more debug strings and possibly functions stripped from other releases.

Development Text

GS Error (Connection failed)
AndroidOrientationChanged
Lobby Error (
)
Room Error (
User Error (User Already logged In)
User Error (
Default Error (
Placeholder name
Placeholder description
[PLACEHOLDER]We will now attempt to retrieve
available save files from cloud servers.
[NOT LOCALISED]%s has left you a surprise in your inventory!
[NOT LOCALISED]%s has left you a surprise in your village!
[NOT LOCALISED]Congratulations, you got %s
[NOT LOCALISED]Placing this gift will give your friend %s and you will get %s!
[NOT LOCALISED]There isn't enough space at the moment in this village to place this gift.
[NOT LOCALISED]You collected %s gift ! You got %s

A portion of development text entries are mostly present in the executable however most entries were removed across many builds of the game.

Playtest Player IDs

1700329137__________
100001228334594_____
100001205931560_____
100001209620736_____
100001258344333_____
100001273943586_____
100001473189757_____
100001500039571_____
100001525839080_____
100001484379290_____
100001473039973_____
756073720___________

Error handler strings

Only constant texts allowed in referenced locale string arguments
ERROR VisualTiledBackground:getVisualTileAtCameraCenter : Camera is somehow outside of the map!
No type declared in getClass!!!
Pointer NULL WTFBBQ!
Can't find quest: 

Debug/Cheat Menu/Console strings

Cheat Menu
Level Up
Skip Tutorial
Unlock Full Store
Game Speed %dX
In-Game Menu
Reset Game
Please restart the AUT for the change to take effect.
Time has changed by %c hours.
Invalid input recieved:
Reset Seshat profile
REGION Device: 
REGION: 
Fake invite: 
MainSkipTut
MainLevelUp
DEBUG CONSOLE
MainUnlockFull
Game Speed x%d
Quest Cheat
Next Loading Screen Hint: %d
Quest Cheat x%d
Get Coins
and Acorns

+ 24 hours
Snow Pile x%d
Scrat x%d
+ 1 Hour
Debug
Enable Interstitials
Disable Interstitials
No
Home Tree

Home Tree:
%i / %i

Max Level
Home Tree

Skip
Level %i

JP: Animal
JP: Acorns
JP: Coins
Jackpot Off
Set 13th Birthday
Enter DLC ZIP Folder (Ex: 40507)
Enter Max DLC Pack To Download (Ex: 5)
FOLDER
PACK
ALL
unlockDlcQA
Bad or no command argument
You are at a higher level then %i
Setting level to 
Total EXP for level: 
Current Level: 
Current Exp:
Increased Exp by:

Debug ON
AVG_FPS: %.1f
STATUS: %s
ENVIRONMENT: %s
%s
Scenery flag = %d 0,0 = %d both = %d
COLLISION_PLAYER, 
COLLISION_ANIMAL, 
COLLISION_OBJECT, 
COLLISION_TEMPORAL, 
Current VIP Level prizecount = 
%d %s
No Mystery Box Prizes for current VIP Level
Prize Index exceeded the number of prizes for current VIP Level
Need to increase VIP level to access the mystery box
Getting Mystery Box Prize at Index 
invalid args
Increased holiday tokens owned by 
Error: No Active Holiday
Increased STC tokens owned by 
Increased tokens owned by 
Increased hearts owned by 
Increased acorns owned by 
Increased coins owned by 
ToogleCorruptCloudSave Trigger to: ON

Usage: GLC <GLCcommand> [OptionalParams]
Available commands:
ToogleCorruptCloudSave	- Toogle between On or Off for sumitting a corrupted Cloud Save
Quest command executed
Found quest: 
quest 
 activated
LiveOps
Tournament Unit Test Started
Not Enough Args
Invlaid Args
Too many people to fill leaderboard with, max is 200
Filling Leaderboard for Event Id %d
Tournament Event with ID %d Not Found
Creating Tournaments for Event Id %d
Unit Test Started
COIN
MainLiveOpsHeartIceAnimals_Title
Setting live ops path to new file: 
+
days
hours
minutes
Setting Main Score to 
Setting Extra Event Score to 
Holiday Unit Test Started
Holiday Unit 2 Test Started
Usage: CRM <CRMcommand> [OptionalParams]
Available commands:
Refresh	- force a fully refresh cicly
Reset	- invalidate all configs and then force refresh
Debug	- show/hide debug window
info		- refresh CRM debug info
Date		- get expiration Date
InternetLost - simulates an internet disconnection
hestia Expiry Date: 
offItems Expiry Date: 
not implemented yet
Not a cheat version

Probably a string to separate debug and retail versions and suggest debug features are removed in them.

Debug Console?

Hmmm...
To do:
Enable if possible.

The executable of the game mentions a debug console.

General

Command Description Switch
ADDHOUR Adds hours to game time? <int_value>
ALMOSTLEVELUP Almost levels up your village one level? None
TOLEVEL Sets your village level? Duplicate of TOLEVEL? Won't let you go over your current. <int_value>
DISCLAIMER Displays a disclaimer? None
SPECIALDISCLAIMER ? None
HIDEUI Hides the GUI? None
CHEATZOOM ? None
UNCHEATZOOM ? None
DISABLERANDOMLIMIT ? None
TEXT Displays text from a given Text ID. <text_id>
SETAGE Sets your age for COPPA? <int_value>
SETREGION Sets your region? <region_code>
RESETREGION Resets your region? None
SHOWREGION Draws a display for the region of the player. None
MONEY Probably allows currency to be added to the profile. money_type values to choose are coin, acorn, heart, token, stctoken, holiday and vipacorn <string - money_type> <int - amount>
help Sounds like it prints the list of debug commands. None
REGION ? None
QUEST Allows you to load a given quest. <quest_id>

Live Ops

These all start with LiveOps.

Switch /+ Command Description
help ?
[int] days ?
[int] hours ?
[int] minutes ?
ResetTime ?
UnitTest ?
SetSource [string - filename.xml] ?
ClearSave ?
CreateTournaments [int - UniqueId] ?
TournamentUnitTest ?
FillLeaderboard [int - UniqueId] [int - Number of people] [int - Base Score] [int - Score Interval] ?
HolidayUnitTest <holiday> Only valentine, easter, worldcup, back2school, halloween, xmas, flower can be chosen.
AwardPrize [int - prizeType] ?
ResetScore [int - prizeType] ?
SetScore [int - amount] main ?
SetScore [int - amount] second ?

Developer Text

	<!--  
		***** Tag model. *****
		Attribute id = "device_model". 
				You can get this attribute value by
				checking the log tag "ALPHA_CORRECTION"
				in the debugger.
				
		Also you can check it on the Gameloft DDMS Device info tab.
		The values are shown like:
				ro.product.manufacturer=samsung
				ro.product.model=GT-I9300
		
		Put them together separated by '_' on the 'id' attribute. 
			<model id="samsung_GT-I9300">
			</model>
			
		***** Tag firmware (optional) ****
		Some specific firmware versions may need alpha correction.
		
		You can get the firmware version by checking the log tag
		"ALPHA_CORRECTION" in the debugger.
		
		Also you can check it on the Gameloft DDMS Device info tab.
		The values are shown like:
			ro.build.version.release=4.2.2
			
			<firmware>2.3.6</firmware>
	 -->

<!--    [MANDATORY]   

EventType -
			event_increase_collection(only one available for update 11) 
			event_extra_resource(available for update 12) 
			event_stc_bonus(available for update 12)
			event_holiday(available for update 13)
			event_stc_extra_resource(available for update 13)
			event_quest_rewards(available for update 14)
			event_pile_bonus(available for update 14)
			event_community(available for update 15)
			
UniqueID - Must be unique for EACH event
		current UniqueID in use - 70. //Please change accordingly

StartDate -
EndDate -
			Format "year-MM-dd HH:mm:ss"
Target - 
	(For event_increase_collection)
		COINS,
		XP,
		REDUCEPRODUCTIONTIME 
		
	(For event_extra_resource)
		HEART,
		ACORN,
		HOLIDAY
		
Modifier - How much more?
		2 = 2%,
		3 = 3%,
		4 = 4%
HolidayType -
	(For event_extra_resource)
			For the diferrent Holidays
		NONE
		XMAS
		VALENTINE
		HALLOWEEN
		
IncludeClutters - 
	(For event_extra_resource)
			Make the extra resource appear on map piles (snow piles and leaves piles)
		1 - (NOTE: On)
		0 - (NOTE: Off)
		
ActivatePercent -
	(For event_extra_resource)
			% to spawn the resource.

AmountToGift - 
	(For event_extra_resource)
			Amount to Give of the extra resource.
			
ElementTemplateAffected - amount of element templates to apply the event 
	Example:  
			29 	(NOTE: If a number is given please list the elements that apply.)
			34	(NOTE: If a number is given please list the elements that apply.)
Categories that we support:			
			ALL
			ICE
			DINO
			FUN
			ANIMAL
If the target is XP	only suport (NOTE: Fun building give no exp)
			ICE
			DINO
			ANIMAL

-->

<!-- 
movieID list:
0 - Ice Age: Continental Drift Exclusive Movie Clip!
1 - Ice Age Trailer
2 - Ice Age Policy Trailer
3 - Alpenliebe
4 - McDonalds
5 - Life of Pi: Theatrical Trailer
6 - Ice Age Village – Behind the scenes trailer
7 - EPIC Battle for Moonhaven Trailer
8 - Ice Age Adventures - Launch Trailer
-->

Changes with Text

String ID Base Final Note
Ad_Minigame_WatchAd
Watch a video to play for free!
Watch an ad video to play for free!

Changed to "ad video". Same for Ad_Minigame_Timer except with the time.

MessageIAP_Popup_GetItNow
GET IT NOW!
NOT ENOUGH CURRENCY.

From an IAP beg to a typical message.

!MessageIAP_Popup_NeedAmount_Coins
You need %s\\[22] to get it now!
YOU NEED %s\\[22] MORE! YOU CAN PICK SOME UP AT THE SHOP.

Way more descriptive on the shop location.

!MessageIAP_Popup_NeedAmount_Acorns
You need %s\\[29] to get it now!
YOU NEED %s\\[29] MORE! YOU CAN PICK SOME UP AT THE SHOP.

Way more descriptive on the shop location.

MessageFindBabyVideo
Oh no! It looks like your baby ran away! Would you like to watch a video to get it back?
Oh no! It looks like your baby ran away! Would you like to watch an advertising video to get it back?

Changed to "advertising video".

MessageWatch_Video
Watch Video
Watch an ad

Changed to "an ad".

Ad_Video_GetFreeAcorns
Get \\[226]!
Watch an ad \\[226]!

More descriptive on watching an advert.

Ad_Quest_DoubleRewards
Double your rewards!
Watch an ad

More descriptive on watching an advert.

Ad_ADVISOR_NO_MORE_VIDEOS
Sorry, no more videos available to watch for now. Please come back later.
Sorry, no more ad videos are available to watch for now. Please come back later.

Another change to "ad videos".

Ad_Minigame_FreeAcorn
Watch a Video to Earn Rewards
Watch an ad video to earn rewards.

For whatever reason, some words were uncapitalized.

Ad_Free_Acorns_IAP
GET FREE \\[147]!
Watch an ad \\[147]!

More descriptive on watching an advert.

Development Leftovers

A few leftovers are present.

Compilation Logs

hdata:

Start of log

------------------------------
Table of Contents
------------------------------
----Calculate Size of TOC--------
--- Num of Packs: 1
--- Size = NB of packs * (Version(4 bytes) +
                            Type(4 bytes) +
                            Major(4 bytes) +
                            Minor(4 bytes) +
                            Build(4 bytes) +
                            Model(4 bytes) +
                            Availability (4 bytes) +
                            Description (64 bytes) +
                            StartAddress(8 bytes) +
                            EndAddress(8 bytes))


Size (4 Bytes) (size of TOC): 112

------------------------------
--- Start of TOC

------------------------------

------------------------------
TOC Listing for pack D:\IAVillage\trunk_clean\data\001
TOC Listing for pack 001
TOC Listing for pack 1

BYTES 4 - 7 :Pack 1 Version = 1

BYTES 8 - 11 :Pack 1 Type = 3

BYTES 12 - 15 :Pack 1 Major = 9

BYTES 16 - 19 :Pack 1 Minor = 9

BYTES 20 - 23 :Pack 1 Build = 9

BYTES 24 - 27 :Pack 1 Model = 2

BYTES 28 - 31 :Pack 1 Availability = 0

BYTES 32 - 95 :Pack 1 Description =  InitialGameContent
--- Type 3: CORE Resource Packs

BYTEs 96 - 103: Start address of Pack: 112
--- Num CORE Packs: 4 (4 bytes)
--- 3
--- Adding info for CORE Resource Pack 3
--- 4
--- Adding info for CORE Resource Pack 4
--- 5
--- Adding info for CORE Resource Pack 5
--- 6
--- Adding info for CORE Resource Pack 6
--- 3
--- Adding data for resource pack 3
--- 4
--- Adding data for resource pack 4
--- 5
--- Adding data for resource pack 5
--- 6
--- Adding data for resource pack 6

BYTES 104 - 111: End addressssss of Pack: 7456999

-------------------------------
 DONE READING FILES--------------

-------------------------------
 APPENDING  FILES--------------

ldata:

Start of log

------------------------------
Table of Contents
------------------------------
----Calculate Size of TOC--------
--- Num of Packs: 1
--- Size = NB of packs * (Version(4 bytes) +
                            Type(4 bytes) +
                            Major(4 bytes) +
                            Minor(4 bytes) +
                            Build(4 bytes) +
                            Model(4 bytes) +
                            Availability (4 bytes) +
                            Description (64 bytes) +
                            StartAddress(8 bytes) +
                            EndAddress(8 bytes))


Size (4 Bytes) (size of TOC): 112

------------------------------
--- Start of TOC

------------------------------

------------------------------
TOC Listing for pack D:\IAVillage\trunk_clean\data\001
TOC Listing for pack 001
TOC Listing for pack 1

BYTES 4 - 7 :Pack 1 Version = 1

BYTES 8 - 11 :Pack 1 Type = 3

BYTES 12 - 15 :Pack 1 Major = 9

BYTES 16 - 19 :Pack 1 Minor = 9

BYTES 20 - 23 :Pack 1 Build = 9

BYTES 24 - 27 :Pack 1 Model = 2

BYTES 28 - 31 :Pack 1 Availability = 0

BYTES 32 - 95 :Pack 1 Description =  InitialGameContent
--- Type 3: CORE Resource Packs

BYTEs 96 - 103: Start address of Pack: 112
--- Num CORE Packs: 4 (4 bytes)
--- 3
--- Adding info for CORE Resource Pack 3
--- 4
--- Adding info for CORE Resource Pack 4
--- 5
--- Adding info for CORE Resource Pack 5
--- 6
--- Adding info for CORE Resource Pack 6
--- 3
--- Adding data for resource pack 3
--- 4
--- Adding data for resource pack 4
--- 5
--- Adding data for resource pack 5
--- 6
--- Adding data for resource pack 6

BYTES 104 - 111: End addressssss of Pack: 4195204

-------------------------------
 DONE READING FILES--------------

-------------------------------
 APPENDING  FILES--------------

IADLC.zip.log is present in the Windows Phone version.

XCode Entitlement

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>keychain-access-groups</key>
	<array>
		<string>A4QBZ46HAP.com.gameloft.SingleSignonGames</string>
	</array>
</dict>
</plist>

Media Player Note

Contents:

MP_wrapper.mm, MP_wrapper.h - Objective-C wrapper for MediaPlayer framework.
MP_externdecl.h - extern "C" statements, to be included wherever you need them. Only for C++.
cMediaPlayer.cpp, cMediaPlayer.h - C++ wrapper for functions in MP_wrapper. Tested only on iPhone.
cMediaPlayer_defines.h - defines used in both wrappers

----------------------------------------------------------------------------------

Things to do to compile the files:

- add them to your project
- you might want to #undef WIN32 in Objective-C files.
- in MP_wrapper.mm, class cMP_Picker, method Display: the statement [[GLoftApp sharedInstance] GetWindow] must return a UIWindow. You must modify it to match the variable names in your project.

----------------------------------------------------------------------------------


How to use cMediaPlayer to play all songs in iPod:

cMediaPlayer::Initialize();
cMediaPlayer mp = NEW cMediaPlayer(MP_TYPE_APP, MP_QY_SONGS);
mp->Prepare();
mp->Play();
....
mp->Stop();
delete mp;
cMediaPlayer::Shutdown();


----------------------------------------------------------------------------------

How to add filters:

cMediaPlayer::Initialize();
cMediaPlayer mp = NEW cMediaPlayer(MP_TYPE_APP, MP_QY_SONGS);
HFilter f1 = mp->AddFilter(MP_FILTER_ARTIST, "Metallica", MP_FILTERCOMP_EQUALS);
HFilter f2 = mp->AddFilter(MP_FILTER_TITLE, "sO WHat", MP_FILTERCOMP_CONTAINS);
mp->Prepare();
mp->Play();
....
mp->Stop();
mp->RemoveFilter(f1);
mp->RemoveFilter(f2);
mp->Play(); 
....
mp->Stop();
delete mp;
cMediaPlayer::Shutdown();

You can add as many filters as you want (theoretically). 
You are responsible for managing filters.


----------------------------------------------------------------------------------


How to select an existing playlist:

cMediaPlayer::Initialize();
cMediaPlayer mp = NEW cMediaPlayer(MP_TYPE_APP, MP_QY_PLAYLISTS);
int nb = mp->GetNumberOfGroups();
char name[MAX_NAME_LENGTH];
for(int i = 0; i < nb; i++)
	mp->GetGroupName(i, name);		//will copy in name the playlist name
....
mp->Prepare(i);	// 0 <= i < nb;
...
mp->Play();
....
mp->Stop();
delete mp;
cMediaPlayer::Shutdown();



mp = NEW cMediaPlayer(MP_TYPE_APP, MP_QY_PLAYLISTS);	//creates a player which sorts items by playlist
If you create a player which sorts items by song title (MP_QY_SONGS), GetGroupName() will get the song name.

Use SetCustomPlaylist(int *indices, int len) to set a playlist containing the songs at indices.

----------------------------------------------------------------------------------


How to display a media picker to let the user create a playlist:

cMediaPlayer mp = NEW cMediaPlayer(MP_TYPE_APP, MP_QY_SONGS);
mp->ShowPlaylistDialog();


if(media->IsPlaylistSelected())		//assuming you call this in your main loop
{
	mp->SetSelectedPlaylist();
}
....
mp->Play();
...


----------------------------------------------------------------------------------

Other things you might want to change:
- #define MAX_NAME_LENGTH 256
- #define MAX_MP_OBJECTS 32
- the type on music player (MP_TYPE_xxx) or query (MP_QY_xxx)

cMediaPlayer.readme for an internal media player is present in v1.0.0 on iOS due to it didn't use external assets and Gameloft forgot to fully clean them.

Internal Project Name

The internal project name of the game is Ice Age, despite Gameloft already releasing an Ice Age title before being Ice Age: Scrat-Ventures, guess they forgot about it. Go figure.