ballistica icon indicating copy to clipboard operation
ballistica copied to clipboard

1.7 development discussion

Open YSPQR opened this issue 2 years ago • 15 comments

I just wanted to check in on how BombSquad development is going, I was gone for months to Europe and I wasn't checking BombSquad updates so I wonder what's going on today.

YSPQR avatar Oct 02 '21 17:10 YSPQR

yeah man I was wondering too

schooluser123uheuf avatar Oct 06 '21 16:10 schooluser123uheuf

Hey folks, I've been hard at work on 1.7 back-end stuff recently. If you look at the ballistica commit history you'll see lots of random things like 'Messaging' and 'DataclassIO' which probably don't sound very interesting but are some important foundational parts of the BombSquad 2.0 roadmap. Basically I'm working on what I'm calling 'v2 accounts' to replace the old system that's been running for the last 10 years (v1 accounts). The transition will hopefully be pretty transparent to the average player but will enable some nice features that weren't available before such as:

  • v2 accounts can do real time two-way communication with the master server, which will allow things like party invite pop-ups and chat messages when not in a game and instant tournament result notifications. V1 accounts don't have 'push' capabilities; they rely on polling the master-server every 30 seconds or so which means these sorts of things would be very delayed if I implemented them on the existing system.
  • 1.7's new asset dependency/download system is built on v2 accounts.
  • BombSquad 2.0's party system will be built on top of v2 accounts.
  • v2 accounts will have one single globally-unique name, selectable by the player. They will be required to be short and only use simple characters so unicode trickery can't be used to spoof someone else's name, and login names such as Google Play Games IDs, GameCenter IDs, etc. won't ever be shown so there won't be any ambiguous name overlaps. I want people to be able to build reputations for their names without worrying about copycats creating confusion.
  • I'm working on a 'workspaces' concept for v2 accounts where you can create mod scripts either in an online editor or on a desktop computer which can automatically be synced to any running bombsquad game. The current system of installing mods on external storage is tedious, doesn't work on all phones, and doesn't work at all on newer versions of Android due to their more strict security; the 'workspaces' system should replace it with an option that works absolutely everywhere the game runs.
  • v2 accounts only allow a single login at a time, so things like pumping up league ranks by linking with friends and having everybody play different tournaments at the same time will no longer work. This should level the playing field a bit. Note that login linking will still be there; you just can't login multiple times from a v2 account.
  • v2 accounts has a much cleaner codebase in general which means I can implement server-side features much more easily. (similar to the code cleanup I did on BombSquad scripts between 1.4 -> 1.5)

My current task for myself is to release an update for 1.6 that has v2 accounts enabled, just to start working the bugs out. I'm hopeful that at least the 'workspaces' feature can be functional since fewer and fewer Android users have access to the old external storage functionality for modding. I'm hoping to start testing these builds within the next few weeks.

In the meantime does anyone have any thoughts or questions on any of that or anything that they'd like to see built into the v2 account system?

efroemling avatar Oct 07 '21 14:10 efroemling

Hey Eric, I just had a question regarding the backwards compatibility of the v2 accounts, after adding the new v2 accounts how will communications between older and newer version accounts work eg. connection between servers with new builds and clients with older builds.

rahulraman0108 avatar Oct 07 '21 15:10 rahulraman0108

  • I'm working on a 'workspaces' concept for v2 accounts where you can create mod scripts either in an online editor or on a desktop computer which can automatically be synced to any running bombsquad game. The current system of installing mods on external storage is tedious, doesn't work on all phones, and doesn't work at all on newer versions of Android due to their more strict security; the 'workspaces' system should replace it with an option that works absolutely everywhere the game runs.

Wow great idea!

The transition will hopefully be pretty transparent to the average player

Does it mean that there will be no some password protection, etc. (and still will use plain bsuuid stuff)? This feature will be delayed until 2.0 release?

Dliwk avatar Oct 07 '21 15:10 Dliwk

There's some details I will still need to work out. I'm guessing that newer servers will be able to see your v1 and v2 id and older servers will only see your v1 id, as if nothing has changed. This probably means that in newer versions of the game a function like get_account_id() might be renamed to get_classic_account_id() to make it clear that it is referring to a v1 account.

In general I want to try and leave v1 accounts untouched as much as possible and slowly transition things to v2. Eventually once everything is v2 then we can sunset the v1 stuff and at some point I'll shut down the old v1 master server. (I'm running two separate master servers right now which is not ideal).

Hey Eric, I just had a question regarding the backwards compatibility of the v2 accounts, after adding the new v2 accounts how will communications between older and newer version accounts work eg. connection between servers with new builds and clients with older builds.

efroemling avatar Oct 07 '21 15:10 efroemling

Does it mean that there will be no some password protection, etc. (and still will use plain bsuuid stuff)? This feature will be delayed until 2.0 release?

My plan is for the first type of v2 account to be a simple email/password combo (where you can reset your password by sending yourself an email, etc). This will be available to everyone even on platforms with no other native login types. I want to avoid 'device accounts' this time which rely simply on bsuuid since those accounts are very insecure and also people don't realize they will be lost when they move to new devices/etc.

efroemling avatar Oct 07 '21 15:10 efroemling

With each day it looks there are much more to BombSquad and more in the works. I am already very eager to try out all new features when they roll out, and especially the 'workspaces' sound very interesting feature.

rahulraman0108 avatar Oct 07 '21 15:10 rahulraman0108

Also, I would like to suggest a feature with the v2 accounts: to have a public method to get the device type ie. Something like: account...get_device_type() which would return device type with which the account was created like 'pc'/'android'/'iircade'/'ios'

rahulraman0108 avatar Oct 07 '21 15:10 rahulraman0108

Also, I would like to suggest a feature with the v2 accounts: to have a public method to get the device type ie. Something like: account...get_device_type() which would return device type with which the account was created like 'pc'/'android'/'iircade'/'ios'

And creation_date field instead of query to bombsquadgame.com I guess

Dliwk avatar Oct 07 '21 15:10 Dliwk

Also, I would like to suggest a feature with the v2 accounts: to have a public method to get the device type ie. Something like: account...get_device_type() which would return device type with which the account was created like 'pc'/'android'/'iircade'/'ios'

Sounds good. Though I think we would want it to return the type of device they are playing on currently and not the type of device the account was created on, since a single account can be used across lots of device types.

efroemling avatar Oct 07 '21 16:10 efroemling

Also, I would like to suggest a feature with the v2 accounts: to have a public method to get the device type ie. Something like: account...get_device_type() which would return device type with which the account was created like 'pc'/'android'/'iircade'/'ios'

And creation_date field instead of query to bombsquadgame.com I guess

For v2 accounts I will try to expose them to the scripting layer as objects so if it has to talk to the master-server at least it can be something like account.get_creation_date() instead of you having to wrangle a http request. But it may make sense to have some data always available locally too.

efroemling avatar Oct 07 '21 16:10 efroemling

Also, I would like to suggest a feature with the v2 accounts: to have a public method to get the device type ie. Something like: account...get_device_type() which would return device type with which the account was created like 'pc'/'android'/'iircade'/'ios'

And creation_date field instead of query to bombsquadgame.com I guess

For v2 accounts I will try to expose them to the scripting layer as objects so if it has to talk to the master-server at least it can be something like account.get_creation_date() instead of you having to wrangle a http request. But it may make sense to have some data always available locally too.

Hmm, I just thought it would make sense to get some 'static' account data along with generic account data after logging in (if they aren't too heavy).

Dliwk avatar Oct 07 '21 16:10 Dliwk

Also, I would like to suggest a feature with the v2 accounts: to have a public method to get the device type ie. Something like: account...get_device_type() which would return device type with which the account was created like 'pc'/'android'/'iircade'/'ios'

And creation_date field instead of query to bombsquadgame.com I guess

For v2 accounts I will try to expose them to the scripting layer as objects so if it has to talk to the master-server at least it can be something like account.get_creation_date() instead of you having to wrangle a http request. But it may make sense to have some data always available locally too.

Hmm, I just thought it would make sense to get some 'static' account data along with generic account data after logging in (if they aren't too heavy).

Yes this could make sense at least for the local account. But I would also hope to expose some sort of account object for all players in the game (as opposed to just the string ids that you get now), and it might not make sense to keep significant data locally for each of them, so at least in some cases that sort of query function might be useful.

efroemling avatar Oct 07 '21 16:10 efroemling

Sounds good. Though I think we would want it to return the type of device they are playing on currently and not the type of device the account was created on, since a single account can be used across lots of device types.

Yeah that would be better.

rahulraman0108 avatar Oct 08 '21 00:10 rahulraman0108

And, what do you think of this suggestion I made in this comment before I knew about v2 accounts?

rahulraman0108 avatar Oct 08 '21 00:10 rahulraman0108