A faithful Flutter recreation of the classic 2003 Sega/McDonaldโs LCD Handheld games โ specifically a highly addictive custom Sonic Soccer edition!
Built entirely with pure Flutter frontend architecture, this project meticulously replicates the physical aesthetic, visual constraints, synthetic audio, and responsive gameplay of early 2000s promotional fast-food handhelds.
๐น๏ธ Play the Web Demo: sonic-soccer-lcd.vercel.app
The game renders a 3D-styled plastic console shell with a beautiful backlit glossy sticker background, matching physical hardware styles!
True LCD Rendering โ The LCD segments behave identically to real physical hardware:
BlendMode.srcIn).Defend against incoming soccer balls! Balls spawn at the top and drop vertically towards the bottom of the screen. Move Sonic horizontally to catch (save) the balls before they reach the goal line!
| Key(s) | Action |
|---|---|
โ ย /ย A |
Move Sonic left |
โ ย /ย D |
Move Sonic right |
1 |
Start / restart Game A (Max 3 balls, normal pace) |
2 |
Start / restart Game B (Max 4 balls, fast pace) |
Enter ย /ย Space |
Confirm โ start game from menu; return to menu |
Esc |
Menu โ abort current game and return to title |
| Button | Action |
|---|---|
โน โบ |
Move left/right (instant onTapDown triggered for mobile/mouse) |
| GAME A | Start Game A |
| GAME B | Start Game B |
| START | Start game or return to menu |
Every 50 points, the game enters a brief Super Sonic Boost State:
Inspired by the multi-colored McDonaldโs Happy Meal Sega line, you can dynamically hot-swap the color of your virtual device. Tap the circular swatches at the top of the interface:
Uses Web Audio API (via dart:js_interop) and Windows Kernel Beep API (kernel32.dll) to generate native retro frequency beeps dynamically on the device. No .mp3 files are used in this repository!
lib/
โโโ main.dart # App entry โ ChangeNotifierProvider root
โโโ src/
โ โโโ logic/
โ โ โโโ game_logic.dart # GameLogic (ChangeNotifier), spawn mechanics
โ โโโ ui/
โ โ โโโ sonic_soccer_screen.dart # Full UI, Shell styling, rendering stack
โ โโโ audio/
โ โโโ audio_service.dart # Conditional export bridge (Native vs Web)
โ โโโ audio_service_stub.dart # Web-compatible Audio Synthesizer (dart:js_interop)
โ โโโ audio_service_native.dart # Desktop-friendly kernel32.dll wrapper
โฅ 3.0If youโre looking to run this on Vercel with the build.sh script included in the codebase:
bash build.shbuild/webecho "skip").MIT โ see LICENSE for details.