So, there is an online card game called Zole. It’s a Latvian national card game, first built online probably 12 years ago, then a few years ago I bought it from the original owner. The original version was built in Flash, so obviously my first step was to build a new version from scratch. Ok, I found a guy who might have enough experience in game building for years and in the last 18 months we have worked on this game.
Usually the game is played by 3 players at the table. Each player has 8 cards and then 2 cards left on the table. The player who has the best cards, can take the cards from the table and become Large. It means - he is playing against both other players who are Small. Each card has its strength (queens, jacks etc) and score. One player starts to move the card, then the second one puts a card and then the third one puts its card on the table. Who has the strongest card, collects the trick. The Large player has to collect at least 61 points to win. Usually each player has 20 seconds to move the card, if it doesn’t move it in time - the game room is closed and the player receives a penalty for a missed turn (a specific amount of coins gets redacted from his balance).
More about rules can be read here: [login to view URL]
- WEB: [login to view URL] (WEB)
- [login to view URL] (DRA)
- Facebook (FB)
- mobile apps (Android and iOS)
- staging server and also an adminpanel
Usually we deploy the updates, changes and fixes first on dev, then test them and then deploy on production. The database and backend is the same for both - prod and dev.
All the architecture is hosted on Firebase Google servers.
Problems / issues
Since the very first releases of the game we have faced the most annoying problem: due to some strange reasons the player can miss his turn. It can happen in very different cases, e.g.:
- the player is not able to move any card, so the time for turn ends up
- the player has enough time but appears a message that he has missed the turn and room gets closed
- another player runs out of time but this player gets penalized for that
- some issues with a poor network or when the network disconnects for some seconds - not sure but apparently sometimes it causes this
- upon joining the room player sees a black screen or empty desk
- on mobile app and WEB the player is not able to join the room (nothing happens when taping/clicking on the button)
I have a senior developer and another developer, both of them have built this game from scratch. But somehow I started to lose my patience, because even in all this time the issue has not been fully solved. There have been literally hundreds of patches and fixes, which has helped for most critical cases but still, every time new and new cases. The devs say that it’s normal and there is no game without bugs but still - every day my support inbox gets a lot of complaints and then I have to reply to them, add some refunds and in the end it really badly affects me as a CEO of my company and the game’s rating.
I believe that there is still some room for optimizing the game, regarding spent data and server costs.
So, what do I need from you. If you can find any way to resolve this ‘missed turn’ issue, I’d be really grateful. Probably some additional functions, scripts, checks or whatever, but it has to be possible to fix, I think. Or at least find what causes it and provide any plan for re-structure or optimizing works. Probably Firebase was not the best choice regarding hosting? But at the same time it has a lot of built-in functions we used for hunting bugs.I’m not sure where the fault is - the main architecture? the network issues on the player's side? the player’s browser? something else? But it definitely has been on for too long and makes me feel desperate. :) We tried to also use Logrocket for getting recorded sessions and some log files, but not much luck so far.