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.

31 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. 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.

    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.


  4. 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.

  5. 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…

  6. 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.

  7. 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.

  8. 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!

  9. 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)

  10. 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.

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.