The Road to 2.0: Net-Play

I know many of you are eagerly awaiting news about BombSquad 2.0, so I wanted to post an update on what I’m up to.

Back when I launched BombSquad 1.0, there was no net-play; it was local multiplayer only.  And in my opinion, having 6 or 8 players on a couch with controllers playing on a large TV remains the best way to play the game to this day.  However, the present reality is that the vast majority of players out there do not have access to this sort of setup; they are playing on mobile devices and net-play is their only realistic option for multiplayer.  And although BombSquad has supported net-play since version 1.4, it has always been a bit half-baked, lacking features such as matchmaking and not performing especially well in terms of lag and bandwidth.

With BombSquad 2.0 I want to change that.  I want to make net play work as smoothly as possible and want it to be just as fun as couch multiplayer (or at least as close as physically possible).  Reworking my net-play code to achieve this goal is going to be a major engineering effort, but I feel that now is the right time to do it.   It will provide a solid foundation on which I can build some really fun features in the future. (destructible terrain, cloud-based parties, matchmaking, PvP tournaments, etc.)

I have several other improvements planned for 2.0 beyond net-play, but I won’t get ahead of myself by mentioning them just yet.  I also can’t announce a specific release date for 2.0 other than to say I’m working as fast as I can.  And lastly I want to apologize once more to iOS & Steam users for making you wait this long for the game already, but I super-serial-pinkie-swear that I will launch on both platforms as soon as 2.0 is ready.

I’m breaking this process into several steps to keep it manageable. Below are some nitty-gritty tech details of my current plans in case anyone is interested.

  • BombSquad 1.4.136:  This is the current release, containing my old ‘V1’ net-play code.  In net-code V1, all local player input events (button presses, joystick moves, etc.) are sent to the server which then runs them through a python game script to generate game events (jump, punch, spawn-bomb, etc) which are then sent out to each client to be run in their local game simulations. One major downside here is that seeing the results of a button press requires a complete round-trip to the server and back, which can often be several hundred milliseconds, making the game feel laggy on a less-than-perfect connection (which unfortunately is almost always the case when wifi/cellular is involved).  Another downside is that the local simulation is not designed to be deterministic and often diverges from the server’s, requiring bandwidth-intensive physics re-sync packets to be sent down to all clients constantly (if you see game objects ‘snap’ back in place in a net-game you are seeing a physics re-sync)
  • BombSquad 1.4.137:  This release will contain significant internal cleanup and reorganization necessary for the upcoming improvements (and for maintaining my sanity), but should contain few, if any, outward facing changes.  This will act as a ‘stake in the ground’ to ensure existing functionality is not broken.  This should be ready soon.
  • BombSquad 1.5: This release will contain revamped ‘V2’ net-play code.  In V2, clients will no longer run game simulations themselves.  Instead, the server will send out lightweight ‘motion streams’ of game objects that clients can use to display the game exactly as if it were being simulated locally.  This should eliminate the expensive physics re-sync packets which constitute most of the game’s current bandwidth, and also will eliminate the visual pops associated with that re-syncing. As an added bonus, the game should be less demanding on devices during net-play since there will be much less local simulating happening, leading to better battery life and performance.  Lag will remain an issue, however, as player input will still have to make a round-trip to the server and back before its results are seen, but it may be improved slightly due to the reduced bandwidth requirements.  This release will hopefully allow me to spin up more public multiplayer servers since I am primarily limited there by bandwidth costs.
  • BombSquad 1.6: This release will contain ‘V3’ net-play code.  V3 will combine the lightweight streamed motion from V2 with the addition of client-prediction.  Client-prediction is a technique used by most modern action-oriented games to make gameplay feel responsive even on laggy connections.  It is the reason that your view rotates instantly when you move the mouse in a first-person-shooter, even though the server or other players may not see your player turning for a half a second.  It simply means that part of the game is being simulated immediately on your local device instead of waiting for the server to do it and send you the results. In BombSquad’s case it might mean that your own character gets simulated immediately locally while everything else is streamed from the server.  The tricky part will be combining the local simulation with the server’s motion-stream in a way that keeps everything looking reasonable visually.  For example: your local character simulation represents ‘now’ in game-time but the motion-stream from another player’s character could represent 300 milliseconds in the past (the time it takes their packets to reach you); so what happens when your character tries to pick up theirs?  This sort of interaction will be a tricky challenge and will require some experimentation.  The whole concept sort of short-circuits my brain like one of those trippy sci-fi time-travel-paradox movies.  Anyway I’ll try to post more nerdy info about this part it as I figure things out.  If all goes well, however, client prediction should allow net-play games to feel mostly indistinguishable from local ones in terms of responsiveness.  This in turn will unlock lots of good things such as the ability to run even single-player tournaments on my own servers without introducing lag so I can finally 100% prevent cheating.
  • BombSquad 2.0:  After the big net-play revamp will come BombSquad 2.0. I have a list of features I hope to include (some of which are done already), but I don’t want to go into details just yet since it is still a way off and subject to change.  The main focus will be steering the game more towards competitive online multiplayer using the improved net-play system as a base.  This will also let me launch on iOS/Steam without being weighed down by an inefficient/substandard network architecture.  I’m super-excited about all of this, but I don’t want to get ahead of myself. First things first; time to fix net-play.

67 thoughts on “The Road to 2.0: Net-Play”

    1. Unfortunately the OUYA store no longer seems to be accepting updates. I pushed 1.4.132 to the store back on Feb. 9th, but the submission never got accepted, so sadly it seems that BombSquad on OUYA will top out at 1.4.123..

      1. Hi Mr Froemling, i have played BombSquad for 2 years, and i never have this problem… When i go to the Tournament section, pop’s up a message that says something about the Root on my phone… I need to know how i can play tournaments again, i love this game soo much thanks for creating it 😉 Thank you Mr Froemling and i hope i can fix this little mistake…

      2. New 139 version’s page is not helpful…Why do we get Player’s name instead of player Account displaySrting?All my user data are accessed by account display String.(An Icon with name).
        Btw……Hope There’s a way to get player’s linked accounts.Makes easier for us to make shared user data.

        1. Its not a good idea to store player data based on their account display-string. If they have multiple logins linked to their account this will vary depending on which login they’re using. Also some account types allow changing the display name at any time. You should use the account id which will never change in any of these cases. Hope that helps.

  1. Could you please create a somewhat documented server Python API somewhere in-between those versions please, even some documentation of internal data structures would do? It would make it so much nicer to host and manage custom servers then.

  2. Yeah!!!, The Moments i am waiting for, This is what i expect, Im Very Excited to see the update!!!

  3. If BombSquad is going to have competitive matchmaking, then balancing some powerups is going to be hard and some would have to be outright banned. Joyride Modpack might have some ideas on how to do this, specifically Boxing Gloves.

  4. awesome this is excellent news

    i would love it if you would make xbox one version of this game 🙂

    1. I’m the lead developer of Joyride Modpack and I can give you some insight.

      The entire netcode isn’t really handled by Python. Python only handles game logic. What about inputs, netplay and physics? It’s all in the Internal engine, as I’d like to call it. You can’t really edit this, but it works under the hood, so the game works like it should.

      If Eric updates the Netplay to newer revisions, I can guarantee you the Python layer will be untouched, unless he wants to rebuild functions that talk to the Internal engine, like materials and node creation.

  5. *fan girl inhale* EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEK!!!

  6. Really nice to see bombsquad keeps evolving.

    How about:

    1. Taking more consideration on user-contributed-content? Like map editor, custom game logic and characters. Time or energy of you alone is limited, but those of users/players are not. I know we can mod bombsquad now with python script, but the documentation is still far from perfect…

    2. A little ‘Pause’ menu-option when playing? We can now only pause the game with the menu window popup, which covers the gaming scene… If we can pause the game without losing the sight of the game, we can achieve something like, easier to describe the game logic to newbie players at the start of game, or just pause the game to capture some happy funny moments 🙂

    1. Thanks for the feedback. I’ll keep it in mind as I’m working. In general I do want to make modding/user-generated-content easier. Hopefully when this networking stuff is in a better place I can focus more on that.

    2. 1. We already have a level editor for BombSquad. It’s called Blender! It’s a stretch, but that’s exactly what these 3D modelling software do. They create models for levels.

      2. There’s a workaround for this. Record a replay, slow it down insanely and take your screenshot.

  7. Hi Mr Froemling, i have played BombSquad for 2 years, and i never have this problem… When i go to the Tournament section, pop’s up a message that says something about the Root on my phone… I need to know how i can play tournaments again, i love this game soo much thanks for creating it 😉 Thank you Mr Froemling and i hope i can fix this little mistake…

  8. Dude your game should be brought to the switch. with a game as good as bomb squad, I believe it would be possible to port it over to the console with a little work. I believe this would rocket the games ratings to new heights.

  9. Hi Eric,
    Great work you are doing. I’m having some trouble with my servers crashing anytime someone picks a modpack player. How can I fix that? I’m also here to help you or the modpack creators in any way that I can.

  10. Hey Eric,

    Is there no way to purchase Bombsquad Pro Edition on Windows? I wanted to import over all my gamemodes from Ouya and would gladly purchase again but the option doesn’t seem to be working. Let me know if there’s another way I can access it!

  11. Sounds great.But as a Host I can’t modify voting system.That makes me can Never play for too long or I will get kicked(Some jealous players can’t endure anyone else but themselves to win).Can you add minimal voting number to bs.getConfigs?

    1. Yes I’m in the middle of ripping everything apart for 1.5. Just putting 1.4.139 out in the meantime to fix a few bugs and add a fun feature or two.. (account-ids/server-stats-pages)

      1. Please add a fuction to allow user to send their DisplayString so that would be much more easier instead of spending long time to fetch.
        Like ‘#GoogleGameIcon#Eric’,maybe use base64 to encode make it easier to trans.

  12. Hi Eric,
    I am a player from China. I have been playing this game for more than two years. I originally downloaded it because I can connect locally. I am very happy to play with my friends. This is the best game I have ever played. I won’t uninstall it, and Spaz is really cute. Thank you for developing Bombsquad. I am looking forward to version 2.0.

  13. If you make a switch release, i would pay 10 bucks. The switch is easy fo programme. Its perfect for local multiplayer. The game is PERFECT for the switch. Bomb Squad is already a mobile game. I have a switch and everytime i play bomb squad i ask myself: why cant i play it on the switch? Just add a bigger and better campign, add a few minigames, some new charakters, a way to get Tickets, a few new maps (DLC) and thats it!

    Lots of players would buy it. I would buy bombsquad(+) on the switch.

    1. Probably because of BombSquad has a Python environment,which leads to potential leaks.That’s why it’s hard to get premission in some platform with higher security standard.

  14. I agree with some of these newer comments, there should be a Nintendo Switch version.
    This game seems like the perfect fit for the console, and I would definitely pay money to buy the game, for the Switch.

    1. I think a lot of us agree that Bombsquad should be on the Switch and also iOS, and why not? even PS4 and XBox. The problem is that Eric is doing this basically on a solo trip. And that’s the secret and the beauty of the game.

      I would say enjoy the “MonaLisa” and let’s hope Master Froemling do his magic on the other devices, make lots of money and enjoy a long and healthy life. Keep up the work Eric!!!

    1. My plan is to release the iOS and Steam versions alongside the 2.0 update. I can’t give any dates yet though, aside from saying I’m working as fast as I can.

    1. brp files are simply streamed game data (its as if you’re connected to a server without playing).. which is fundamentally different from mp4 files which is compressed video. Perhaps someone could set up a server that would accept brp files and capture the replay into an mp4. I’d love to wire up screen capture to the game to do that on the fly, but am pretty slammed with the 2.0 update right now.

  15. So glad to see you’re continuing to support this amazing game. Unfortunately my Ouya was lost in our last move and while I do play some on mobile I think releasing the game on the Nintendo Switch e-shop would be absolutely perfect. Its almost as if this game was designed for the switch. The switch has 2 controllers with it at all times so spur of the moment multiplayer is a reality and party games and Indy games like this really shine on that platform. If its a monetary issue (not sure how all this works or how much it all costs) then I would be more than happy to contribute to a kickstarter campaign to make this happen.

  16. -Clans ou Gangs ou esquadrões
    -Ranked
    -Função de Criar sala
    -Skins na Loja para Luva, Bombas, etc.. (exceto Personagens)
    -Ganhar 10 Tickets ou 5 a equipe que ganhar “a Melhor de 4” dos Servers
    -Torneios
    -Mais personagens
    -Mais Powerups

    use translate

  17. do not give up eric, your game is amazing, my friends and I are eager to see the bombsquad 2.0. You had a good idea to create this great 3D bombs game, I know that the game will become popular. Thank you for the great game Truly. Greetings from Peru.:D

  18. Hi eric froemling, I would like to know if there is a way to adjust or rotate the bombsquad camera like the PC version but without a keyboard and it means a new option for the game

    PSDTA: my inglish not is best :”(

  19. Does anyone know why when playing a team game the points go to the first team even if they don’t have 1 kill?
    I’m trying to figure out how to fix it.

  20. Hi Eric,

    Is there any way to automatically close the ad when picking those 15 tickets? I noticed it happens only once in a while. Is that something you as developer have control of?

    Thanks!

  21. DEAR ERIC,
    You Are Launching Bombsquad 2.0 , Tell us What will Be Special About it? What’s Forward To Seeing That, Eric We’re TORNADIANS Players i Saw You There Our Pvt Server.
    THANKYOU
    TORNADOES PLAYER
    CHOWKI
    —————————

  22. hola a todos yo quiero decir que seria increíble que hubiera una versión de bombsquad para xbox 360 con posibilidad de 4 controles en una sola pantalla seria genial yo lo digo por que tengo una xbox y me gustaría tenerlo

    gracias por su atención

  23. Hi everyone, I want to say that it would be incredible that I would have a version of Bombsquad for Xbox 360 with the possibility of 4 controls on a single screen. It would be great. I say this because I have an Xbox and I would like to have it.

    Thanks for your attention

  24. Today i used version 151 for windows. But ps4 controller worked only in lokal mode against bots. In multi player mode only some buttons worked. Back to the last version and the evening was saved. 🙂

    1. Thanks for the info. The 1.5.x builds are very new with lots of under-the-hood changes so probably have some bugs; I’ll be clearing out bugs as fast as I can so please try them again soon and hopefully things will work better.
      Could you give me a bit more info about what didn’t work? Was this in a network game or simply a local game with multiple people playing? And which buttons in particular weren’t working?

      1. Lokal mode worked as usual. Problems only in network game. Only the jump button worked, even after redefining the buttons. Redfinining a new mapping was accepted in the settings but had no effect in network game.
        OS: Windows 10
        Controller: Sony PS4

        There were also some error messages in the console:

        EXC reading prev backup config: Expecting value: line 1 column 1 (char 0)
        >>> ERROR: exception in Python call:
        root call:
        context:
        real-time: 2909
        sim-time:
        base-time:
        Traceback (most recent call last):
        File “ba_data\python\ba\_app.py”, line 540, in on_app_launch
        configerror.ConfigErrorWindow()
        File “ba_data\python\bastd\ui\configerror.py”, line 41, in __init__
        ba.containerwidget(size=(width, 300), transition=’in_right’))
        RuntimeError: Precondition failed: g_ui->screen_root_widget() != nullptr
        get_news_show delay…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.