Roblox Super Bomberman-Style Architecture

A visual architecture map for your Roblox PvP game, including lobby, queue, room flow, match systems, classic 2.5D camera, monetization, VIP, custom admin tools, audio, shop, revive, and bomb skin cosmetics.

Server-authoritative gameplay
2.5D fixed competitive camera
Lobby → Queue → Room → Match → Results
Developer Products: Revive + Coin Packs
Passes: VIP + Private Room Host

Game Flow

LobbySpawn, shop, VIP area, practice zone, queue access.
QueueJoin public queue, matchmaking, player count check.
RoomReady up, map/rule voting, countdown.
MatchBombs, powerups, curses, shrinking arena, deaths.
SpectateDead players watch active survivors.
ResultsWinner, rewards, stats, rematch or return.
BackReturn to lobby flow.

Architecture Layers

Shared

  • Config, constants, types, utilities
  • RemoteEvents / RemoteFunctions
  • Reusable models and assets

Server

  • Lobby, room, match orchestration
  • Grid, arena, bombs, explosions
  • Powerups, curses, shrink, revive

Client

  • Camera, audio, FX, HUD
  • Lobby UI, shop UI, admin UI
  • Mobile controls and spectate

Monetization

  • VIP passes and entitlements
  • Coin packs and revive processing
  • Bomb skin inventory and shop

ReplicatedStorage

ReplicatedStorage ├── Shared │ ├── Config │ │ ├── GameConfig.lua │ │ ├── ArenaConfig.lua │ │ ├── CameraConfig.lua │ │ ├── BombConfig.lua │ │ ├── PowerupConfig.lua │ │ ├── CurseConfig.lua │ │ ├── AudioConfig.lua │ │ ├── UIConfig.lua │ │ ├── MonetizationConfig.lua │ │ ├── ShopConfig.lua │ │ ├── BombSkinConfig.lua │ │ ├── VIPConfig.lua │ │ └── AdminConfig.lua │ ├── Constants │ │ ├── TileTypes.lua │ │ ├── MatchStates.lua │ │ ├── RoomStates.lua │ │ ├── LobbyStates.lua │ │ ├── CameraStates.lua │ │ ├── PowerupTypes.lua │ │ ├── CurseTypes.lua │ │ ├── AudioStates.lua │ │ ├── CurrencyTypes.lua │ │ ├── ProductTypes.lua │ │ ├── CosmeticTypes.lua │ │ ├── EntitlementTypes.lua │ │ ├── AdminRoles.lua │ │ ├── AdminCommandTypes.lua │ │ └── CollisionLayers.lua │ ├── Types │ ├── Utils │ └── Remotes │ ├── Lobby │ ├── Match │ ├── Audio │ ├── FX │ ├── Commerce │ ├── Admin │ └── Profile ├── Assets │ ├── BombModels │ ├── TileModels │ ├── PowerupModels │ ├── ExplosionVFX │ ├── CurseVFX │ ├── Audio │ ├── UI │ └── CameraAnchors └── Packages

ServerScriptService

ServerScriptService ├── Bootstrap.server.lua ├── Server │ ├── Controllers │ │ ├── GameLoopController.lua │ │ ├── LobbyController.lua │ │ ├── MatchController.lua │ │ ├── AudioController.server.lua │ │ ├── CommerceController.lua │ │ └── AdminController.lua │ ├── Services │ │ ├── LobbyService.lua │ │ ├── QueueService.lua │ │ ├── RoomService.lua │ │ ├── MatchService.lua │ │ ├── ArenaService.lua │ │ ├── GridService.lua │ │ ├── SpawnService.lua │ │ ├── PlayerStateService.lua │ │ ├── BombService.lua │ │ ├── ExplosionService.lua │ │ ├── PowerupService.lua │ │ ├── CurseService.lua │ │ ├── ShrinkService.lua │ │ ├── SpectatorService.lua │ │ ├── MusicService.lua │ │ ├── SFXService.lua │ │ ├── ProfileService.lua │ │ ├── CurrencyService.lua │ │ ├── InventoryService.lua │ │ ├── ShopService.lua │ │ ├── CosmeticService.lua │ │ ├── MonetizationService.lua │ │ ├── ReviveService.lua │ │ ├── VIPService.lua │ │ ├── EntitlementService.lua │ │ ├── AdminService.lua │ │ ├── PermissionService.lua │ │ ├── CommandService.lua │ │ ├── AuditLogService.lua │ │ └── StatsService.lua │ ├── Networking │ │ └── RemoteRouter.lua │ ├── Commerce │ │ └── ReceiptProcessor.server.lua │ ├── Admin │ │ ├── CommandRegistry.lua │ │ └── CommandHandlers │ └── Data └── Admin

Client

StarterPlayer └── StarterPlayerScripts ├── ClientBootstrap.client.lua └── Client ├── Controllers │ ├── InputController.lua │ ├── CameraController.lua │ ├── AudioController.lua │ ├── FXController.lua │ ├── LobbyUIController.lua │ ├── MatchUIController.lua │ ├── ShopUIController.lua │ ├── SpectatorController.lua │ ├── ProfileController.lua │ ├── VIPController.lua │ ├── AdminPanelController.lua │ └── MobileControlsController.lua ├── Components │ ├── CharacterMotorAdapter.lua │ ├── CameraRigAdapter.lua │ ├── BombVisualController.lua │ ├── ArenaVisualController.lua │ ├── PowerupVisualController.lua │ ├── CurseVisualController.lua │ ├── ShopItemCardBinder.lua │ ├── AdminCommandBinder.lua │ └── VIPPerkCardBinder.lua └── State ├── ClientStore.lua ├── UIState.lua ├── MatchState.lua ├── ProfileState.lua ├── ShopState.lua └── AdminState.lua

GUI + Workspace

StarterGui └── GameUI ├── Screens │ ├── MainLobbyScreen │ ├── QueueScreen │ ├── RoomScreen │ ├── MatchHUD │ ├── RoundResultScreen │ ├── SpectateScreen │ ├── ShopScreen │ ├── RevivePromptScreen │ ├── VIPPanelScreen │ ├── AdminPanelScreen │ └── SettingsScreen ├── Widgets └── Mobile Workspace ├── Lobby │ ├── SpawnLocation │ ├── QueuePads │ ├── VIPArea │ ├── ShopZone │ ├── PracticeZone │ ├── AdminTerminal │ └── Decorations ├── Arenas │ ├── ActiveArena │ └── ArenaTemplates ├── Runtime │ ├── Bombs │ ├── Powerups │ ├── Effects │ ├── AudioEmitters │ └── TemporaryObjects └── Cameras ├── LobbyCameraAnchor ├── QueueCameraAnchor ├── ResultsCameraAnchor ├── SpectateCameraAnchor └── PracticeZoneCameraAnchor
Important architecture rule: keep combat logic server-authoritative and separate from monetization, VIP, and admin tools. Bombs, explosions, powerups, and deaths should only read validated player state; they should never directly process purchases or UI behavior.