I need to implement some kind of “matchmaking” process. In our game, a player can attack other-player (to be selected by the server according to predefined rules) the other player does not have to be online, but the rules are pretty much similar to any matchmaking rules. (rank, level, currency, etc.)
I tried to find a way to use your matchmaking system but it requires the players to be online.
and also in my case, all the players are always, passively, waiting to be matched, so I am not sure about the performance and how it will work in a distributed system.
Another option I researched for is to simply create my own matchmaking collection and whenever a user requesting for a match, to execute a query against this collection, (which will basically hold all the users who are available to be attacked) but I couldn’t find a way to apply custom filters using the runtime storageList method.
currently, it simply leaves me with the option of creating a table by myself and executing a custom query using the go SQL package by myself. which means managing performance, retries, errors and a lot of low-level logic I really tried to avoid by using your solution.
I would love to know if you have any suggestion, this is a pretty common thing in social casual games, so maybe you tackled this issue in a different way already.
Or maybe (from your experience) there is a way to implement a solution similar to your matchmaking, using bleve that will work for me using your distributed system.
(means that whenever the server is starting all the users will be manually added to the index, and of course whenever a new user is signed up)