Игроки играют, ходят в гости к соседям, обмениваются подарками.
Это должно работать даже если друг покинул игру, а игрок у себя переустановил игру.
Да и восстановление прогресса должно работать после недели-другой перерыва.
Я сам ни раз делал длительные перерывы в играх.
Ну то всё детали.
В общем думаю redis + mysql меня выручат.
Всем большое спасибо! Очень приятно, а главное полезно поговорить порой с умными людьми :)
calculator212, Вы немного запутались. Это один профиль весит ~100k профили копятся годами и их количество растёт стремительно. Старые неиспользуемые профили мы удаляем через полгода. Но примерно 10% играют по несколько лет.
calculator212, Так исторически сложилось. Игры у нас для мобилок и умеют сохранять только весь профиль целиком. Ловить конкретную точку выхода игрока со страницы довольно сложно. От того и частое сохранение прогресса на каждое подозрение о зкарытии окна.
только redis - ну не знаю. мне казалось что он nosql бд для хранения данных в памяти. Как он десятки миллионов записей хранить будет, и быстро ли управляться с ними- ещё одни грабли собирать не хочется.
Everything_is_bad, да получить и отдать. Но опять таки, смысла держать несколько железок, когда на одной всё работает большого нет. Буду каэш закладывать возможность горизонтальноо масштабирования, но как перспективу далёкого будущего.
Akina, А вот что произойдёт, если таблица вдруг переполнится?
Либо mysql перестанет выполнять запросы, потому как память закончилась, либо новые данные не будут приходить.
Вероятно это нужно закладывать в решение, масштабируя время перемещения из кеша.
Redis то он скинет на диск и будет дальше существовать. Да чуть лагнёт, но не страшно мне думается.
вы немного не понимаете как это работает.
Статики не сериализуются в принципе.
Вы можете хранить данные в ассета и с ним работать, либо хранить объект с данными на сцене, либо данные хранить в префабе.
я бы сделал на ассете, в крайнем случае в префабе.
Если на сцене, то вам стоит сделать так
[SerializeFIeld]
private List allCell = new List();
public static Instance;
public static List AllCell => Instance.allCell ;
и к AllCell уже ображаться. Но Instance должен быть заполнен.
в принципе его можно находить через FindObject при необходимости (если экземпляр находится на сцене, конечно)