Наша аналитика показывала, что 20% всех сессий в игре из этого примера проходили в офлайне, поэтому нам было критично иметь такую возможность.
Вариант со значком статуса, кстати, прикольный:)
В Go така штука вирішується через кодогенерацію, а у вас як?
Замість JSON-у могли вибрати оптимальнішу сералізацію Protobuf чи FlatBuffers
FlatBuffers и ProtoBuf ещё не было, когда начиналась разработка сервера социальных проектов, а многое из них сейчас используется на Рейде.
Потом рассматривали Protobuf, но не стали переходить из-за недостатка клиентских библиотек. Также мигрировать всех пользователей на этот формат на живых проектах очень рискованно. Ну и плюс можно сказать, что у JSON в целом преимущество в читаемости, плюс наша библиотека работает быстрее Jil, .NET Core сериализации, и даже быстрее, например, чем MessagePack.
Надо учитывать, что с нашими нагрузками важен не только размер данных, а и эффективность самой библиотеки, чтобы при большом кол-ве вызовов и потоков не возникло проблем с производительностью.
А об’єднати монети?
Точной причины я уже не помню, но монеты мы решили не суммировать.
Хороший вопрос!)
Давайте пройдемся по основным пунктам, которые применимы к нашему проекту.