A real-time multiplayer drawing and guessing game built with Flutter and Firebase Realtime Database.
- Real-Time Multiplayer: Seamless room creation and joining via a 6-character room code. Fully synced game phases (Lobby, Choosing Word, Drawing, Score Reveal, and Podium).
-
Normalized Canvas: Brush strokes are sent to Firebase as normalized percentages (
$0.0 - 1.0$ ) and scaled locally, ensuring perfect rendering across all device screen sizes. - Typo-Tolerant Chat: Utilizes Levenshtein Distance to detect close guesses (within 2 characters). It privately notifies the guesser they are "Close!" without leaking the answer to others.
- Dynamic Scoring: Correct guessers are scored based on elapsed time (up to 150 pts) with active streak multipliers. The drawer is scored proportionally to the number of successful guessers.
-
Procedural Avatars: Built-in visual editor using
CustomPainterto procedurally render player avatars (18 colors, 10 eye types, 10 mouth shapes). - Bot Simulation: Simulates automated guesses and preset drawing coordinates for solo practice sessions.
- Frontend: Flutter (Dart SDK
^3.12.0) - Database: Firebase Realtime Database
- Typography: Google Fonts (Fredoka)
- Enable Realtime Database in the Firebase Console.
- Set the Realtime Database Rules to:
{ "rules": { ".read": true, ".write": true } } - Run
flutterfire configureto generatelib/firebase_options.dart.
# Fetch dependencies
flutter pub get
# Run on connected device
flutter runflutter test