Gameplay Mechanics
Game Overview
Mobile Eggbert is a 2D side-scrolling platform game. The player controls Blupi through 78 levels organized into a tutorial plus 9 chapters. Each level is a 100×100-tile grid. The objective is to collect treasures and reach the goal exit.
Win Conditions
- Collect all treasures in the level
- Reach the goal exit marker
Lose Conditions
- Fall into lava
- Drowning (deep water with no swim power)
- Bomb explosion
- Run out of lives
Game Phase System
Def::Phase drives the top-level game mode. All phase transitions go through Game1::SetPhase(), which handles asset loading, InputPad reconfiguration, and fade animations.
| Phase | Description |
|---|---|
None | Initial / uninitialized state |
First | First frame after startup — triggers load sequence |
Wait | Loading progress screen with an artificial delay and a gauge bar |
Init | Main menu / gamer slot selection screen |
Play | Active gameplay — Decor is updated and rendered each frame |
Pause | Pause overlay — game logic frozen |
Lost | Level failure screen |
Win | Level completion screen |
Trial | Demo/trial paywall screen |
MainSetup | Settings opened from the main menu |
PlaySetup | Settings opened during gameplay (from pause) |
Resume | Checkpoint continuation prompt |
Ranking | High-score / ranking screen |
All 12 phases are handled in Game1::Update() and Game1::Draw(). Transitions use fade-out/fade-in animations managed by Game1.
Player Animation States
Blupi has 88 named animation states defined in BlupiAction. The active state drives sprite selection via the 2911-entry Tables animation table.
Basic Movement
| State | Description |
|---|---|
Stop | Standing still |
March | Walking |
Turn | Turning around |
StopMarch | Stopping from a walk |
Jump | Beginning of jump |
Air | In the air (mid-jump) |
StopJump | Landing from jump |
Vertigo | Edge vertigo ("whoops" at ledge) |
Teleporte | Teleporting animation |
Special Animations
| State | Description |
|---|---|
Win | Victory animation |
Mockery | Mockery/taunt animation |
Glu | Glued / trapped |
Electro | Electrocuted |
Balloon | Stung by wasp (swelling) |
Hide | Invisible (cloud power active) |
StopEcrase / MarchEcrase | Flattened state (standing / moving) |
Vehicles
Five vehicles can be entered by walking over them. Each has its own set of BlupiAction states and unique physics rules.
Power-Ups
Active power states are tracked in the SecretPower enum and corresponding Decor fields:
| Power-Up | SecretPower | Effect | Duration |
|---|---|---|---|
| Shield | Shield | Damage protection | 100-tick timer (m_blupiShield) |
| Lollipop | Power | Strength boost (push heavier objects, etc.) | Timer-based |
| Cloud | Cloud | Invisibility to enemies | Timer (m_blupiCloud) |
| Hidden | Hide | Hidden / invisible rendering state | Timer (m_blupiPhantom) |
| Drink | — | Special drinkable item effect | One-shot |
| Charge | — | Charging station interaction | One-shot |
| Dynamite | — | Explosive item (counter: m_blupiDynamite) | Count-based |
Enemies & Hazards
| ObjectType | ID | Behaviour |
|---|---|---|
BombeDown | 2 | Stationary floor bomb |
BombeUp | 3 | Hanging ceiling bomb |
BombeMove | 16 | Moving bomb along a path |
BombeFollow1/2 | 96–97 | Homing bomb that tracks the player |
Bulldozer | 4 | Ground enemy, pushes Blupi |
Oiseau | 20 | Bird, aerial patrol enemy |
Guepe | 44 | Wasp — stings Blupi, causing Balloon swelling |
Poisson | 17 | Fish, aquatic enemy |
Tentacule | 53 | Slime tentacle rising effect |
Creature | 54 | Moving slime creature |
Environmental Hazards (tile-based)
- Lava — instant kill tiles; detected by
Decor::IsLave() - Deep water — drowning if Blupi cannot swim;
Decor::IsDeepWater() - Electric zones —
Electroobject type +ElectricShakecamera action - Pollution / toxic zones —
Pollutionobject type
Collectibles
| ObjectType | ID | Description |
|---|---|---|
Tresor | 5 | Treasure — collect all to unlock the goal exit |
Egg | 6 | Egg — grants an extra life |
Goal | 7 | Level exit marker — active only after all treasures collected |
Keys & Doors
Three coloured keys unlock corresponding coloured doors. Key state is tracked as a 3-bit bitmask in DoorKeyFlags.
| Key ObjectType | ID | Colour | DoorKeyFlags bit |
|---|---|---|---|
Cle | 21 | Gold | General key (all doors?) |
Cle1 | 49 | Red | Key1 (bit 0) |
Cle2 | 50 | Green | Key2 (bit 1) |
Cle3 | 51 | Blue | Key3 (bit 2) |
Player Input
Input is handled by InputPad. On non-touch platforms, keyboard bindings replace the touch buttons. Input is represented as two values:
- Direction —
Direction::None,Left, orRight - KeyPressFlags — bitmask:
Jump(bit 0),Fire(bit 1),Down(bit 2)
Game Speed
The settings menu allows selecting a game speed multiplier via the GameSpeed enum:
| Setting | Multiplier |
|---|---|
Slow | 0.5× |
Normal | 1.0× (default) |
Fast | 2.0× |
Faster | 3.0× |
Fastest | 4.0× |
Camera & Shake
The camera follows Blupi with smooth scrolling. In-game events trigger camera shake via the DecorAction enum:
| DecorAction | Value | Trigger |
|---|---|---|
None | 0 | No shake |
SmallShake | 1 | Minor impact (crate landing, bonus collection) |
BigShake | 2 | Major impact (fan blade hit, large explosion) |
ElectricShake | 5 | Electric contact |