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!

Where's My Water? (iOS, Android)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Where's My Water?

Developer: Creature Feep
Publisher: Disney Mobile
Platforms: iOS, Android, Windows, Blackberry
Released internationally: September 22, 2011


AreasIcon.png This game has unused areas.
CodeIcon.png This game has unused code.
SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.
GraphicsIcon.png This game has unused graphics.
DebugIcon.png This game has debugging material.


Where's My Water? is a puzzler from Disney that makes use of water physics. Spinoffs based on Phineas and Ferb and Paul Rudish's Mickey Mouse came after.

Hmmm...
To do:
Prerelease footage:

Contents

Development Leftovers

Compiler Output

The Blackberry executable contains a section consisting of the output from GCC to build it.

-Wall
-Wno-switch
-Wno-parentheses
-Wno-unused
-I../../../../../WalaberEngine/mainline/Walaber/include
-I../../../../../WalaberEngine/mainline/Walaber/include/Achievements
-I../../../../../WalaberEngine/mainline/Walaber/include/Animation
-I../../../../../WalaberEngine/mainline/Walaber/include/Audio
-I../../../../../WalaberEngine/mainline/Walaber/include/Animation/SkeletalAnimation
-I../../../../../WalaberEngine/mainline/Walaber/include/Containers
-I../../../../../WalaberEngine/mainline/Walaber/include/Devices
-I../../../../../WalaberEngine/mainline/Walaber/include/Function
-I../../../../../WalaberEngine/mainline/Walaber/include/Graphics
-I../../../../../WalaberEngine/mainline/Walaber/include/Graphics/GUI
-I../../../../../WalaberEngine/mainline/Walaber/include/Graphics/GUI/Widgets
-I../../../../../WalaberEngine/mainline/Walaber/include/Graphics/OpenGL
-I../../../../../WalaberEngine/mainline/Walaber/include/Graphics/Particles
-I../../../../../WalaberEngine/mainline/Walaber/include/Graphics/Textures
-I../../../../../WalaberEngine/mainline/Walaber/include/IO
-I../../../../../WalaberEngine/mainline/Walaber/include/Math
-I../../../../../WalaberEngine/mainline/Walaber/include/Messaging
-I../../../../../WalaberEngine/mainline/Walaber/include/Replay
-I../../../../../WalaberEngine/mainline/Walaber/include/SceneGraph
-I../../../../../WalaberEngine/mainline/Walaber/include/ScreenManagement
-I../../../../../WalaberEngine/mainline/Walaber/include/ScreenManagement/Transitions
-I../../../../../WalaberEngine/mainline/Walaber/include/Text
-I../../../../../WalaberEngine/mainline/Walaber/include/Utilities
-I../../../../../WalaberEngine/mainline/Walaber/src/IO
-I../../../../../WalaberEngine/mainline/Dependencies/libxml2/include
-I../../../../../WalaberEngine/mainline/fmod_blackberry/inc
-I../../../../../WalaberEngine/mainline/_platform_projects/blackberry/src
-I../../../../../WheresMyWater-V2/Release_180/src
-I../../../../../WheresMyWater-V2/Release_180/src/Interactive
-I../../../../../WheresMyWater-V2/Release_180/src/Screens
-I../../../../../WheresMyWater-V2/Release_180/src/Transitions
-I../../../../../WheresMyWater-V2/Release_180/platforms/blackberry/src
-IC:/bbndk/target_10_0_9_1673/qnx6/../target-override/armle-v7/usr/include
-IC:/bbndk/target_10_0_9_1673/qnx6/../target-override/usr/include
-DUSE_SCORELOOP
-DHAVE_ERRNO_H
-DHIDE_FB_LIKE
-DOPENGLES
-DUSE_LEVEL_LIST
-D_FORTIFY_SOURCE=2
-O2
-march=armv7-a
-mfloat-abi=softfp
-mfpu=vfpv3-d16
-mthumb
-mlittle-endian
-nostdinc
-nostdinc++
-D__cplusplus
-D__QNX__
-D__QNXNTO__
-D__GNUC__=4
-D__GNUC_MINOR__=6
-D__GNUC_PATCHLEVEL__=3
-D__NO_INLINE__
-D__DEPRECATED
-D__EXCEPTIONS
-D__unix__
-D__unix
-D__ELF__
-D__ARM__
-D__arm__
-D__LITTLEENDIAN__
-D__ARMEL__
-U__ARMEB__
-fstack-protector-strong
-fPIE
-frecord-gcc-switches
-isystem C:/bbndk/target_10_0_9_1673/qnx6/usr/include
-isystem C:/bbndk/host_10_0_9_404/win32/x86/usr/lib/gcc/arm-unknown-nto-qnx8.0.0eabi/4.6.3/include
-isystem C:/bbndk/target_10_0_9_1673/qnx6/usr/include/cpp/c
-isystem C:/bbndk/target_10_0_9_1673/qnx6/usr/include/cpp
..\..\..\src\World.cpp
..\..\..\src\Transitions\CustomTransitionLoader.cpp
..\..\..\src\ShowerCurtain.cpp
..\..\..\src\SeaweedStrand.cpp
..\..\..\src\Screens\WaterDemoScreenLoader.cpp
..\..\..\src\Screens\Screen_WorldSelect.cpp
..\..\..\src\Screens\Screen_WaterTest.cpp
..\..\..\src\Screens\Screen_Upsell.cpp
..\..\..\src\Screens\Screen_SettingsReset.cpp
..\..\..\src\Screens\Screen_SettingsProfile.cpp
..\..\..\src\Screens\Screen_Settings.cpp
..\..\..\src\Screens\Screen_PuppetShow.cpp
..\..\..\src\Screens\Screen_Popup.cpp
..\..\..\src\Screens\Screen_PerryDemo.cpp
..\..\..\src\Screens\Screen_PerformanceTest.cpp
..\..\..\src\Screens\Screen_MysteryShow.cpp
..\..\..\src\Screens\Screen_MenuOverlay.cpp
..\..\..\src\Screens\Screen_MainMenu.cpp
..\..\..\src\Screens\Screen_LevelSelect.cpp
..\..\..\src\Screens\Screen_InAppPurchase.cpp
..\..\..\src\Screens\Screen_Hub.cpp
..\..\..\src\Screens\Screen_GraphicsContextRestore.cpp
..\..\..\src\Screens\Screen_GameTransition.cpp
..\..\..\src\Screens\Screen_Game.cpp
..\..\..\src\Screens\Screen_FullScreenAlert.cpp
..\..\..\src\Screens\Screen_FoodPyramid.cpp
..\..\..\src\Screens\Screen_EditorObjectSelect.cpp
..\..\..\src\Screens\Screen_EditorObjectEditor.cpp
..\..\..\src\Screens\Screen_Editor.cpp
..\..\..\src\Screens\Screen_Dialogue.cpp
..\..\..\src\Screens\Screen_Credits.cpp
..\..\..\src\Screens\Screen_ComicStrip.cpp
..\..\..\src\Screens\Screen_Collectibles.cpp
..\..\..\src\Screens\Screen_Challenges.cpp
..\..\..\src\Screens\Screen_AnimationTest.cpp
..\..\..\src\Screens\Screen_AchievementsTest.cpp
..\..\..\src\Screens\Screen_Achievements.cpp
..\..\..\src\Screens\ScreenLoader.cpp
..\..\..\src\Screens\NotificationSingleton.cpp
..\..\..\src\Screens\Notification.cpp
..\..\..\src\Screens\HDAssetsNotification.cpp
..\..\..\src\PurchaseHandler.cpp
..\..\..\src\PlayerDataSerializer.cpp
..\..\..\src\ParallaxPuppetShow.cpp
..\..\..\src\Interactive\YSwitch.cpp
..\..\..\src\Interactive\WaterBalloon.cpp
..\..\..\src\Interactive\Switch.cpp
..\..\..\src\Interactive\StarSeed.cpp
..\..\..\src\Interactive\Spout.cpp
..\..\..\src\Interactive\MysteryCave.cpp
..\..\..\src\Interactive\InteractiveObject.cpp
..\..\..\src\Interactive\IcyHot.cpp
..\..\..\src\Interactive\FluidConverter.cpp
..\..\..\src\Interactive\Floater.cpp
..\..\..\src\Interactive\Fan.cpp
..\..\..\src\Interactive\DirtyWall.cpp
..\..\..\src\Interactive\Collectible.cpp
..\..\..\src\Interactive\Bomb.cpp
..\..\..\src\Interactive\AlgaeHider.cpp
..\..\..\src\IndexGridPOT.cpp
..\..\..\src\IndexGridNative.cpp
..\..\..\src\Grid.cpp
..\..\..\src\Graphics.cpp
..\..\..\src\GameState.cpp
..\..\..\src\GameSettings.cpp
..\..\..\src\GameConstants.cpp
..\..\..\src\Fluids.cpp
-D__LANGUAGE_C
-D_LANGUAGE_C
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xpointer.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xpath.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlwriter.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlunicode.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlstring.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlschemastypes.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlschemas.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlsave.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlregexp.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlreader.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlmodule.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlmemory.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xmlIO.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xlink.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\xinclude.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\valid.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\uri.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\triostr.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\trionan.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\trio.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\tree.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\threads.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\schematron.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\relaxng.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\pattern.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\parserInternals.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\parser.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\nanohttp.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\nanoftp.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\list.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\legacy.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\hash.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\globals.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\error.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\entities.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\encoding.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\dict.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\debugXML.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\chvalid.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\catalog.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\c14n.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\SAX2.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\SAX.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\HTMLtree.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\HTMLparser.c
..\..\..\..\..\WalaberEngine\mainline\Dependencies\libxml2\src\DOCBparser.c
..\src\main.cpp
..\src\WheresMyWaterGame.cpp
..\src\ApplicationContext.cpp
-I../../../Walaber/include
-I../../../Walaber/include/Achievements
-I../../../Walaber/include/Animation
-I../../../Walaber/include/Audio
-I../../../Walaber/include/Animation/SkeletalAnimation
-I../../../Walaber/include/Containers
-I../../../Walaber/include/Devices
-I../../../Walaber/include/Function
-I../../../Walaber/include/Graphics
-I../../../Walaber/include/Graphics/GUI
-I../../../Walaber/include/Graphics/GUI/Widgets
-I../../../Walaber/include/Graphics/OpenGL
-I../../../Walaber/include/Graphics/Particles
-I../../../Walaber/include/Graphics/Textures
-I../../../Walaber/include/IO
-I../../../Walaber/include/Math
-I../../../Walaber/include/Messaging
-I../../../Walaber/include/Replay
-I../../../Walaber/include/SceneGraph
-I../../../Walaber/include/ScreenManagement
-I../../../Walaber/include/ScreenManagement/Transitions
-I../../../Walaber/include/Text
-I../../../Walaber/include/Utilities
-I../../../Walaber/src/IO
-I../../../_platform_projects/blackberry/src
-I../../../Dependencies/fmod_blackberry/inc
-I../../../Dependencies/libxml2/include
..\..\..\Walaber\src\Utilities\ValueTweaker.cpp
..\..\..\Walaber\src\Utilities\PropertyList.cpp
..\..\..\Walaber\src\Utilities\Property.cpp
..\..\..\Walaber\src\Utilities\ProfileTimer.cpp
..\..\..\Walaber\src\Utilities\Logger.cpp
..\..\..\Walaber\src\Text\TextManager.cpp
..\..\..\Walaber\src\Text\StringHelper.cpp
..\..\..\Walaber\src\ScreenManagement\Transitions\Transition.cpp
..\..\..\Walaber\src\ScreenManagement\TransitionLoader.cpp
..\..\..\Walaber\src\ScreenManagement\ScreenManager.cpp
..\..\..\Walaber\src\ScreenManagement\ComicStrip.cpp
..\..\..\Walaber\src\ScreenManagement\CameraController.cpp
..\..\..\Walaber\src\ScreenManagement\Camera.cpp
..\..\..\Walaber\src\SceneGraph\SceneGraph.cpp
..\..\..\Walaber\src\SceneGraph\PCSNode.cpp
..\..\..\Walaber\src\SceneGraph\Node.cpp
..\..\..\Walaber\src\SceneGraph\DrawableNode.cpp
..\..\..\Walaber\src\Messaging\BroadcastManager.cpp
..\..\..\Walaber\src\Math\VectorTools.cpp
..\..\..\Walaber\src\Math\Vector2.cpp
..\..\..\Walaber\src\Math\LinearCurve.cpp
..\..\..\Walaber\src\Math\CurveManager.cpp
..\..\..\Walaber\src\Math\Curve.cpp
..\..\..\Walaber\src\Math\BezierCurve.cpp
..\..\..\Walaber\src\Math\AABB.cpp
..\..\..\Walaber\src\IO\ZipArchiveUtilities.cpp
..\..\..\Walaber\src\IO\XML.cpp
..\..\..\Walaber\src\IO\FileManager.cpp
..\..\..\Walaber\src\IO\FileHelper.cpp
..\..\..\Walaber\src\Graphics\Textures\TextureManager.cpp
..\..\..\Walaber\src\Graphics\Textures\Texture2D.cpp
..\..\..\Walaber\src\Graphics\Textures\Subtexture.cpp
..\..\..\Walaber\src\Graphics\Textures\SOIL\SOIL.c
..\..\..\Walaber\src\Graphics\Textures\RenderTexture.cpp
..\..\..\Walaber\src\Graphics\SpriteBatch.cpp
..\..\..\Walaber\src\Graphics\Sprite.cpp
..\..\..\Walaber\src\Graphics\ScreenCoord.cpp
..\..\..\Walaber\src\Graphics\Rect.cpp
..\..\..\Walaber\src\Graphics\Particles\VerletIntegrator.cpp
..\..\..\Walaber\src\Graphics\Particles\ParticleSet.cpp
..\..\..\Walaber\src\Graphics\Particles\FluidParticleSet.cpp
..\..\..\Walaber\src\Graphics\OpenGL\GraphicsGL.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_Slider.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_ScrollableSet.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_ScrollableGroup.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_PushButton.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_ProgressBar.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_Label.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_IconList.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_Group.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_FingerCatcher.cpp
..\..\..\Walaber\src\Graphics\GUI\WidgetHelper.cpp
..\..\..\Walaber\src\Graphics\GUI\QuadHelper.cpp
..\..\..\Walaber\src\Graphics\GUI\GUI.cpp
..\..\..\Walaber\src\Graphics\GUI\FontManager.cpp
..\..\..\Walaber\src\Graphics\GUI\BitmapFont.cpp
..\..\..\Walaber\src\Graphics\Color.cpp
..\..\..\Walaber\src\Devices\PlatformManager.cpp
..\..\..\Walaber\src\DatabaseManager.cpp
..\..\..\Walaber\src\Audio\SoundManager.cpp
..\..\..\Walaber\src\Animation\SpriteAnimationTrack.cpp
..\..\..\Walaber\src\Animation\SkeletalAnimation\SkeletonActor.cpp
..\..\..\Walaber\src\Animation\SkeletalAnimation\Skeleton.cpp
..\..\..\Walaber\src\Animation\SkeletalAnimation\Bone.cpp
..\..\..\Walaber\src\Animation\NumericAnimationTrack.cpp
..\..\..\Walaber\src\Animation\NodeAnimationTrack.cpp
..\..\..\Walaber\src\Animation\AnimationManager.cpp
..\..\..\Walaber\src\Animation\AnimationCueAnimationTrack.cpp
..\..\..\Walaber\src\Animation\Animation.cpp
..\..\..\Walaber\src\Achievements\AchievementManager.cpp
..\src\ScoreController.cpp
..\src\Platform.cpp
..\src\PaymentController.cpp
..\src\Game.cpp
..\..\..\Walaber\src\Text\UTF8Helper.cpp
..\..\..\Walaber\src\ScreenManagement\Transitions\Transition_Wipe.cpp
..\..\..\Walaber\src\ScreenManagement\Transitions\Transition_Widget_Slide.cpp
..\..\..\Walaber\src\ScreenManagement\Transitions\Transition_Slide.cpp
..\..\..\Walaber\src\ScreenManagement\Transitions\Transition_Iris.cpp
..\..\..\Walaber\src\ScreenManagement\Transitions\Transition_Fade.cpp
..\..\..\Walaber\src\ScreenManagement\Transitions\Transition_Block.cpp
..\..\..\Walaber\src\Math\Tweens.cpp
..\..\..\Walaber\src\Math\TweenedLinearCurve.cpp
..\..\..\Walaber\src\Math\HermiteCurve.cpp
..\..\..\Walaber\src\IO\ZipArchive.cpp
..\..\..\Walaber\src\Graphics\Textures\SOIL\stb_image_aug.c
..\..\..\Walaber\src\Graphics\Textures\SOIL\image_DXT.c
..\..\..\Walaber\src\Graphics\Particles\ParticleEmitter.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_Toggle.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_TimedButton.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_Spinner.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_SlideWheel.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_MovingTextBox.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_ColorPicker.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_ClassicControls.cpp
..\..\..\Walaber\src\Graphics\GUI\Widgets\Widget_Canvas.cpp
..\..\..\Walaber\src\Graphics\GUI\CircleHelper.cpp
..\..\..\Walaber\src\IO\minizip\zip.c
..\..\..\Walaber\src\IO\minizip\unzip.c
..\..\..\Walaber\src\IO\minizip\ioapi.c

Possibly Uncompiled Curve Sub-Directories

The game uses a binary curve file in the root of the Content/Curves directory. In v1.0.0 for iOS, 45 extra folders are present in that directory which would probably have the uncompiled source files for each sub-category, but all of them are empty. According to GameCurves.bin, the same directories are mentioned which would support this theory.

Java Sources Archive

Version 1.2.0 for Android has a com directory, in the directory there's a subdirectory named disney, with a Zip archive named WMW-JavaSources, containing source files for the game's Java classes, dated from November 3rd of 2011, which the app was compiled on November 22nd of 2011.

Download.png Download Where's My Water? (Android v1.2.0 Java source files)
File: WMW-JavaSources.zip (30 KB) (info)


Texture Packing Script

#!/bin/bash
packToWebp(){
	if [[ $1 = "" ]]; then
		return
	fi
	arr=`find $1 -name "*.webp"`
	for i in ${arr[@]}; do
		texture="${i%webp}png"
		dwebp $i -o $texture
		rm $i
	done
}

packToWebp Textures

A script named pack.sh likely for packing the game's textures is present in the Chukong version.

Leftover Where's My Perry? Assets

There's a portion of assets from that game leftover in the game files.

Debugging Content

Many files mention such debugging functions, they include in-game language changing, IAP simulations, changing texture quality (Android) and showing the version on main menu (in v1's menu).

Achievement Viewer

Hmmm...
To do:
  • Find the screen ID as of v2's menu.
  • Add the rest of the level editor images.

The file SM_MainMenu in the Data directory, mentions a button named Achieve Test to press to load it, it allows viewing and earning of any achievement present in the game files, v2 of the main menu in the full game has it stripped it out, but the game still has the file to describe it existing, changing the position will make it visible on page 2, the ID is unknown and not noted in the file, making it impossible to load the screen using the button unless it is found.

Animation Viewer

The file SM_MainMenu in the Data directory, mentions an ID of 5, going by WN_ANIMATION_TEST and a button named Animations to press to load it, it allows testing and viewing of any animation present in the game files, it doesn't work in the final Free version and will crash the game while loading, the V2 version of the main menu in the full game has it but under an ID of 99999, despite the ID change, the function still works fine if position adjustments were made to show it or at least one special level is completed to allow scrolling after making the function button visible. It's wise to not click Play Animation when an animation isn't visible as doing so will crash the game. Choosing actor 3 (Mystery Duck) removes the window texture.

WheresMyWater AnimViewer.png

Level Select Unlock Buttons

The level select menus have hidden buttons that, based off their text, unlocked levels. These buttons don't do anything when tapped, unfortunately.

Wheres My Water level select unlock buttons.png

Level Editor

Images are present to prove one exists and the level select mentions it with an ID of 99 as WN_EditorToggle, given by the name it would load the editor.

WMW Level Editor Add.png WMW Level Editor Add Point.png WMW Level Editor Add Shape.png WMW Level Editor Cave Particle Spawner.png

WMW Level Editor Delete.png WMW Level Editor Ducks Both.png WMW Level Editor Ducks Normal.png WMW Level Editor Ducks Platinum.png

WMW Level Editor Ghost.png WMW Level Editor Group.png WMW Level Editor Hand On.png WMW Level Editor Hand Off.png

WMW Level Editor Layer Bottom.png WMW Level Editor Layer Top.png WMW Level Editor Link.png WMW Level Editor Next Shape.png

WMW Level Editor Object Edit.png WMW Level Editor Paste.png WMW Level Editor Play Button.png WMW Level Editor Pause Button.png

WMW Level Editor Port.png WMW Level Editor P Type Both.png WMW Level Editor P Type Normal.png WMW Level Editor P Type Platinum.png

WMW Level Editor P Type Note.png WMW Level Editor Refresh.png WMW Level Editor Remove Point.png WMW Level Editor Remove Shape.png

WMW Level Editor Rotation Lock On.png WMW Level Editor Rotation Lock Off.png WMW Level Editor Save.png WMW Level Editor Select All.png

WMW Level Editor Snap On.png WMW Level Editor Snap Off.png WMW Level Editor Track.png WMW Level Editor Target.png

Development Leftovers

Level Documentation

The Levels directory has a text document from the developers of the game called _level_properties_doc.txt, on creating levels for the game, this is still present as of the final Free version and final paid version.

================================================================================================
================================================================================================
Quick and dirty list of properties and values you can use when editing Water levels
================================================================================================
================================================================================================



================================================================================================
BASIC INTERACTIVE OBJECT SETTINGS
================================================================================================

>> "Interactive" (0 or 1)
	When enabled, this object can receive touch events from the player's finger(s).  Usually you
	don't need to change this in a level, it's authored already for you in the object file.
	
>> "VelDamping" (float, default 0.99)
	Changes how much "drag" this object has when it falls due to gravity.  lower numbers mean more drag.
	generally you'll want to leave this alone.
	
>> "OmegaDamping" (float, default 0.99(
	Changes how much an object's "spin" dampens over time.  similar to VelDamping.

>> "Draggable" (0 or 1)
	When enabled, this lets the object be dragged around by the player's finger.
	
>> "GravityScale" (float, default 0)
	Set this to 1.0 if you want the object to fall because of gravity.  Default is to NOT fall at 
	all (static).
≠
>> "Parent" (string)
	Set this to the name of another object in the scene to make this object a "child" of the other object.
	This will cause this object to be "locked" to it's parent, and move along with it whenever the parent moves.
	

///// PIN CONSTRAINT

>> "PinOffset" (Vector2 in GRID SPACES from the center of the object)
	Sets where on the object it will be "pinned" to the world, making a hinge.
	If this property exists, the pin will be created.

>> "PinMinAngle" (float)
	Set this to the minimum angle (relative to the start at the beginning of the level)
	that you want the hinge to rotate.  if it's unset, there is no limit at all.

>> "PinMaxAngle" (float)
	Same as min, but for max (other side).


///// PATH CONSTRAINT

>> "PathPosX" (replace "X" with numbers, starting from 0 and counting up, such as
				"PathPos0", "PathPos1", etc)
	Defines points in the path that will constrain the object.  position values are represented
	in GRID UNIT space, by default RELATIVE to the object's position (as in the object's position is 0,0).
	If you want to define a path in WORLD space, use "PathIsGlobal" setting below)

>> "PathIsClosed" (0 or 1)
	When enabled, the path will become a closed loop, automatically connecting the last and first points.

>> "PathIsGlobal" (0 or 1)
	Enable to signify that the path is in GLOBAL GRID spaces, not relative to the object's center 
	(which is the default).
	

////// MOTORS (MOVEMENT)

Motors allow objects to move along their path contraint.  Objects can optionally pause at vertices along 
the path.

>> "MotorMoveSpeed" or "MotorMoveSpeedX" (float, default 1.0)
	Sets how fast the object will move along the path.  "MotorMoveSpeed" by itself sets the speed for the 
	entire path	at once… "MotorMoveSpeedX" (replace "X" with a number starting with 0) sets the speed for 
	a specific section of the path, with the first section being 0, and counting up from there.

>> "MotorWaitTime" or "MotorWaitTimeX" (float, default 0.0)
	Sets how long the object should pause at vertices in the path.  "MotorWaitTime" by itself sets the 
	same value for each	vertice, the numbered versions set the wait time for that specific section of the path.

>> "MotorTurnSpeed" or "MotorTurnSpeedX" (float, default 0.0)
	Sets how fast the object should spin (in DEGREES/SECOND) as it moves along the path.  Again, the 
	version with no number sets a global value for all sections, and the numbered versions set values 
	for that specific section of path.

>> "MotorWaitTurn" or "MotorWaitTurnX" (float, default 0.0)
	Sets how many DEGREES the object should turn during the "wait" at each vertex in the path.  globals 
	and specific settings follow same convention as above settings.
	
>> "MotorOn" (0 or 1, default 0)i
	Set to 1 to have the object animating from the beginning of the level… otherwise it will only animate 
	if connected to a switch.
	
>> "MotorPingPong" (0 or 1, default 0)
	Set to 1 to cause the object to "ping pong" back and forth along the path, reversing its direction 
	when it reaches the end of the path.

================================================================================================
SPOUT SETTINGS
================================================================================================

>> "SpoutType" (string, default "OpenSpout")
	Possible values (NORMALLY YOU DON'T NEED TO SET THIS YOURSELF, IT'S SET FOR YOU AUTOMATICALLY):
		"OpenSpout" - spout that creates fluid normally
		"TouchSpout" - spout that creates fluid when touched by the player's finger
		"Drain" - acts as a drain
		"DrainSpout" - acts as both a drain and a spout (?!?)

>> "FluidType" (string, default "Water")
	Sets what type of fluid this spout will create.  Possible values are:
	"Water"
	"ContaminatedWater"
	"Lava" (ooze)

>> "ExpulsionAngle" (float, default 0.0)
	Sets the angle that the fluid will shoot out of the spout.  NORMALLY you don't need to adjust this.

>> "ExpulsionAngleVariation" (float in DEGREES, default 0.0f)
	Sets how much variation (in DEGREES) that the spout will have in the angle that fluid shoots out at.

>> "ParticleSpeed" (float)
	How fast should the particles shoot out?

>> "OffsetToMouth" (Vector2 in GRID UNITS)
	Sets where the fluid will be created, relative to the center of the object.  You shouldn't need to change
	this in a level, it's set in the object file.
	
>> "OffsetVariation" (float)
	Sets how much variation in the spawn point for fluid there can be.  larger numbers mean a larger area at
	which the fluid can be spawned.

>> "NumberParticles" (integer)
	How many particles this spout should create.  set to -1 for infinite.

>> "TimerX" (2 numbers, integer and float --  first # 1 or 0, second number is float)
	Sets a timer on the spout (starting with "Timer0" and counting up.  Each timer sets the spout to either 
	ON (1) or OFF (0), and sets how long that status should remain.  Commands loop once the last timer has
	expired.  For example, to make a spout that shoots fluid for 3 seconds, then stops for 2 seconds, and then 
	repeats, you would have this:
		<Property name="Timer0" value="1 3.0" />
		<Property name="Timer1" value="0 2.0" />

>> "ParticlesPerSecond" (float)
	Sets how frequently particles are created.

>> "Limit" (int)
	Sets the maximum number of particles that this DRAIN will allow to pass through.
	

================================================================================================
BOMB SETTINGS
================================================================================================

>> "BlastRadius" (float in GRID CELL units)
	How big is the blast radius?

>> "BlastPower" (float, default 4000)
	How powerful is the explosion (how forcefully will fluids be pushed away from the bomb
	when it explodes?

================================================================================================
SWITCH SETTINGS
================================================================================================

>> "SwitchType" (string, default "Flip")
	Sets switch type:
	"Flip" -> standard switch, water touches it and it is now ON for good.
	"Momentary" -> temporary switch, only ON WHILE water is touching it.. water stops touching, it turns OFF.



LevelEditor.psd

Located in the Levels folder is a psd file called LevelEditor.psd. It contains guides to which colours mean what for creating levels.

WMW LevelEditor.psd.png

Hidden on the Background layer is an early version of this file, which contains materials that aren't in the final file or are unused, those being Ice, Dirty Ice, Magma Rock (is used but not in the final file and goes by a different color), Seed (green), Seed (orange), Star Seed, Bomb, Spout Drain, Dirty Water (became Poison), and Lava (likely became Ooze due to them using the same color). The 2 Seeds and Star Seed are apparently drownable. Some of these materials such as Ice and Lava later made it into the game spin-off Where's My Perry.

WMW LevelEditor.psd Background Layer.png

Unused Objects

Steam Duck

An unused duck type that would've taken steam to collect, similar to Allie's ducks. This is possibly an early version of Allie's ducks, as they both have a similar beak color and similar hair.

Wheres my water steam duck uncollected.png Wheres my water steam duck.png Wheres my water steam duck uncollected hud.png

Bunny Duck

An invisible duck that takes 1 water drop to collect. This duck can be found in the unused level _seb_test_3_mystery

Dry Mud Converter

An unused type of converter that would've turned water into dry mud.

Wheres my water Dry Mud converter.png

Unused/Early Levels

Hmmm...
To do:
  • Get images of all the levels.
  • There's apparently more.

There exists some unused or early versions of object layouts in the game files. The early object layouts are leftover .bak files of level .xml files, which are what controls where objects are located.

Swampy

TEST

A level simply named "TEST". There is no way to beat it, as you can't get the water into the pipe.

Wheres my water TEST.jpg

first_mud

It's the level "First Dig" but with a hole filled with mud at the bottom, hence the name. This level was likely meant to be the first level of Out to Dry, as the first level of that (Let it Dry!) is internally named FIRST_MUD_ALSO.

Wheres my water first mud.jpg

first_mud_3

An edit of the previous level, where the mud is at the top and the water is to the side. The way you beat the level is by digging a path for the mud to go through, letting it settle, and then making the water go across the newly formed dirt.

Wheres my water first mud 3.jpg

algae_tunnel

An unused Swampy level that would've had to do with algae. The level has no ducks and is unbeatable.

Wheres my water algae tunnel.jpg

beware_the_bombs/Let's Play Dodge-bomb

A level with a main focus of bombs. There are 2 groups of 3 bombs that are moving side to side, and you have to time your cuts so that the water doesn't hit them. This level is actually a removed level from the free version of the game called "Let's Play Dodge-bomb".

Wheres my water beware the bombs.jpg

orbital_landing

An orbital landing styled level, where a bunch of mud is being blown into a ball by fans, and you need to turn off the red fan when its about to turn into dirt. It's very hard to tri-duck this level, as the mud will kill the top duck quickly if nothing is done.

Wheres my water orbital landing.jpg

mi_amore_2

A scrapped sequel to the secret level Mi Amore. The level has you putting mud into a heart outline made out of freely moveable platforms. Even then this doesn't help since the stone in the middle blocks the water from passing through. There are no ducks in this level.

Wheres my water mi amore 2.jpg

Cranky

Early Aqua Tool (C2-19)

An early version of C2-19, being named aqua_tool instead of CR_aqua_tool.

Early Crossing Paths (C4-8) Object Layout

There exists an early version of C4-8's object layout, having a differently shaped pipe and the duck above the pipe being lower. This seems to be based off an earlier version of the terrain layout, as part of the pipe is clipping through the ground.

WMW Early C4-8 Layout.jpg

Closing Timer (C4-13)

An early version of C4-12, which has the same terrain as C4-12, but has a different object layout.

Master Mold (C4-17)

A duplicate of C4-18 which has the number of 17.

Early Where's My Poison? (C4-19) Object Layout

Allie

pachinko/Game of Chance

An unused pachinko themed Allie level. In the text, it's called "Game of Chance".

Wheres my water pachinko.jpg

inlet

An unused Allie level that has you turning water into poison which then gets turned into steam. This level is actually an early version of A2-11.

Wheres my water inlet.jpg

Feeling Steamy (Early A1-1)

An early version of Up We Go, which has the same object layout but some of the stone in the middle are different, along with the stone in the bottom left corner being gone. There is also some differences with stone shading at the top.

Crossroads (Early A1-3)

An early version of Pathfinder. This level also has the same object data as the final, though theres more stone near the red gate.

Fire The Furnace (Early A1-4)

An early version of Boiler Room. The differences are that some of the water is moved and the dirt and stone near the second duck is different.

Burning Hot Coals (Early A1-5)

An early version of Down is Up. The only difference is the stone at the top.

Ice to Steam You (Early A1-6)

An early version of Precipitation. It has some dirt missing near the top, and the icicles are moved over slightly.

Chimney (Early A1-7)

An early version of Swimmin' Holes. The only difference is some missing stone.

Icing Down (Early A1-8)

An early version of Series of Tubes. Some holes in the wall to the left are patched up, the room with the spout is different, and the dirt at the top has been replaced with stone.

Steam Guidance (Early A1-10)

An early version of Ride the Winds. Some stone is shaped differently, and some pipes are in different spots.

Fan Forced (Early A1-11)

An early version of Turn it Up. The stone in the middle is skinnier, there are holes for where the fans are, the top of the level is entirely stone, and Allie is to the right instead of the left.

Waterfall (Early A1-12)

Ice Cavern (Early A1-13)

Total Conversion (Early A1-16)

Ice Clusters (Early A1-17)

All Together Now (Early A1-18)

Fan Tastic (Early A1-19)

Steam Blast (Early A1-20)

Purification (Early A2-2)

An early version of Steam Cleaning, being completely different from the final.

Early A2-3

Tunnel of Steam
Steam Trooper

Steamy Dodger (Early A2-4)

Slide Puzzle (Early A2-5)

Early A2-6

Connect Em Up
Slamtilt
Slam Tilt

Clearing The Way (Early A2-7)

Switch And Move (Early A2-8)

Early A2-9

Louvres
Water Cycle

Early A2-10

Keep It Together
Steam Tree
Not Just Digging It

Early A2-11

Order Up

An early version of A2-11 and A2-12, as it is an early version of an early version of A2-12.

Inlet

Early A2-12

Spouting Off
Order Up

Early A2-13

Hydraulic Lift
Wet Floor

Early A2-14

Wet Floor
Spouting Off

Hydraulic Lift (Early A2-15)

Early A2-16

Growing Protection
Connect Em Up

Early A2-17

Growing Protection
Inlet

Early A2-19

Pendulum
Sliding Guardian
Growing Protection

Steam and Crosses (Early A2-20)

Bonus Levels

MudProtector

An unused bonus level where you use mud to make dirt and guide the water to the ducks.

Wheres my water MudProtector.jpg

MudProtector2/Muddied Up

A sequel to the previous unused level, having a similar concept. In the games text its called "Muddied Up".

Wheres my water MudProtector2.jpg

Other

_seb_test_3_mystery

This level consists of a floating tap head that shoots out water at the start of the level, 3 stone terrains and a hole near the bottom of the level. The level has a gradient effect where the outer edges of the screen are darker. The audio playing is an unused eerie sewer ambiance sound. Getting the water to the hole near the bottom collects an invisible duck (which is actually an unused bunny duck), ending the level. The level complete theme has an echo to it.

WMW seb test 3 mystery.jpg

Early Level Numbers

There exists .editordata files for early level numbers of certain levels.

  • 13_MASTER_MOLD (became C4-18)
  • 14_TEAR_DOWN_THE_WALLS (became C4-13)
  • 18_WIND_BUCKET (became C4-14)
  • B2_HIDE_AND_SEEK (became Cranky Challenge 7)

Level Codenames

Each level file has a name for the level, either being the final name or an early name.

Swampy

Meet Swampy

Name Level Number Codename
First Dig 1-1 first_dig
A Rock is a Hard Place 1-2 rock_is_a_hard_place
Choose Wisely 1-3 yellow_brick_road
Do a Sweet Jump 1-4 jump_on_it
It'll Grow On You 1-5 itll_grow_on_you
Deep Dig 1-6 deep_dig
Drain It First 1-7 dran_it_first
Clear the Way 1-8 dirty_water_and_algae
Mixing Bowl 1-9 make_more_dirty_water
Split Decision 1-10 split_decision_numero_dos
Divert 1-11 divert
Divide and Conquer 1-12 first_switch
Order of Operations 1-13 switch_fall
Loop the Loop 1-14 loop_redux
Conveyor Belt 1-15 motor_test
Three Scoops 1-16 flinging_horseshoes
Off Track 1-17 off_track
Flip the Switches 1-18 switch_off_the_grass
Seesaw 1-19 seesaw
Drawbridge 1-20 tarred_and_feathered

Internal Project Name

The game is internally called Water Concept[1][2][3] or Swampy Game[4], with or without spaces. There is also a mention for Walaber[5], which is probably referencing the lead designer of the game, but that name would probably be used for the game engine as whole instead as it's also present in the other titles.

References

  1. Data/water.db
  2. WaterConcept namespace and filepaths
  3. Script/WC.txt, a shortened form
  4. App signature (com.disney.SwampyGame) and executable name on iOS (SwampyGame)
  5. Game executable namespace