A modern, retro-styled Bomberman game built with Flutter and Flame engine, featuring both single-player and real-time multiplayer modes.
- Single Player: Battle against AI bots (2-4 players total)
- Multiplayer: Real-time online multiplayer with SignalR backend
- Host-based room creation
- Room code system for easy joining
- Real-time synchronization of all game elements
- Automatic host migration when host leaves
- Classic Bomberman Mechanics: Place bombs, destroy blocks, eliminate opponents
- Powerups System:
- 💚 Extra Life - Gain additional health
- 💣 Extra Bomb - Increase simultaneous bomb capacity
- 🔥 Explosion Range - Extend bomb blast radius
- AI Bots: Smart bot opponents in single-player mode
- Multiple Characters: Choose from 4 different character skins
- Grid-Based Movement: Classic 17×15 tile grid (15×13 playable area)
- Retro Game Boy Aesthetic: Green color palette with pixel-style UI
- Real-time player movement synchronization
- Synchronized bomb placement and explosions
- Shared powerup spawning and collection
- Winner determination and broadcast
- Character selection synchronization
- Spectator mode when eliminated
- 2-4 players per room
- Retro Game Boy-inspired color scheme
- Pixel grid background
- Explosion effects
- Character customization
- Responsive UI design
- Game Boy-style borders and buttons
- Frontend: Flutter
- Game Engine: Flame
- Backend: C# + ASP.NET Core
-
Clone the repository
git clone https://github.com/ISNEXIS/isnexisApp.git cd isnexisApp -
Install dependencies
flutter pub get
-
Run the application
# For web (Chrome) flutter run -d chrome # For Windows flutter run -d windows # For Android flutter run -d android # For iOS flutter run -d ios
To enable multiplayer mode, you need a SignalR backend server running with the following endpoints:
/gamehub- Main game hub for real-time communication- Game events:
JoinRoom,LeaveRoom,SendPlayerMovement,SendBombPlaced,SendExplosion,SendPlayerDeath,SendItemCollected,SendGameStart,SendGameEnd
- Arrow Keys / WASD: Move player
- Space: Place bomb
- Virtual Joystick: Touch controls (mobile)
- Select "START GAME" from main menu
- Choose number of players (2-4)
- Select your character (Player 1 is always human)
- Other players will be AI bots
- Survive and eliminate all opponents to win!
- Select "MULTIPLAYER" from main menu
- Create Room: Enter your name and backend URL
- Join Room: Enter room code, name, and backend URL
- Wait for host to start the game
- Battle against real players in real-time!
- 💣 Bombs explode after ~3 seconds
- 🧱 Destroy destructible blocks to find powerups
- ⚡ Powerups give +1 bonus to stats
- 🎯 Strategic placement is key to victory
- 🛡️ 2 seconds of invincibility after taking damage
lib/
├── main.dart # App entry point
├── game/
│ ├── bomb_game.dart # Core game engine
│ ├── components/
│ │ ├── bomb.dart # Bomb entity
│ │ ├── bot_player.dart # AI bot logic
│ │ ├── explosion_effect.dart # Explosion visuals
│ │ ├── map_tile.dart # Grid tile component
│ │ ├── player.dart # Player entity
│ │ ├── player_character.dart # Character definitions
│ │ ├── powerup.dart # Powerup items
│ │ ├── remote_player.dart # Multiplayer player
│ │ └── tile_type.dart # Tile type enum
│ └── widgets/
│ ├── controls_panel.dart # Game controls UI
│ ├── stats_sidebar.dart # Player stats display
│ └── virtual_joystick.dart # Touch controls
├── screens/
│ ├── main_menu.dart # Main menu screen
│ ├── game_screen.dart # Game container
│ ├── game_over_screen.dart # Game over overlay
│ ├── winning_screen.dart # Victory overlay
│ ├── player_selection_screen.dart # Character selection
│ ├── multiplayer_setup_screen.dart # MP room creation
│ └── multiplayer_lobby_screen.dart # MP waiting room
├── services/
│ └── game_hub_client.dart # SignalR client
└── models/
└── player_selection_data.dart # Player data model
- Objective: Be the last player standing
- Bomb Mechanics:
- Place bombs to destroy blocks and opponents
- Bombs explode in 4 directions (up, down, left, right)
- Explosion stops at walls and destructible blocks
- Powerups:
- Spawn with 20% chance when destroying blocks
- Each powerup gives +1 bonus
- Maximum 1 powerup per bomb explosion
- Health System:
- Start with 1 health (can increase with powerups)
- 2 seconds invincibility after damage
- Victory Conditions:
- Single Player: Eliminate all bots or player dies
- Multiplayer: Last player alive wins
Modify in bomb_game.dart:
late int gridWidth; // Currently: 17
late int gridHeight; // Currently: 15Adjust in bomb_game.dart:
if (shouldSpawnPowerups && _random.nextDouble() < 0.20) // 20% chance- Multiplayer requires active backend server connection
- Browser cache may require clearing after updates
- Hot reload may not work for all changes (use hot restart)
- Single player mode requires minimum 2 players (1 human + 1 bot)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is private and not published to pub.dev.
- ISNEXIS - GitHub
- Inspired by classic Bomberman games
- Built with Flutter and Flame engine
- Retro Game Boy aesthetic
- SignalR for real-time multiplayer
For issues and questions, please open an issue on the GitHub repository.
Enjoy the game! 💣💥