на сколько я понял грубо говоря... обычно с базой MySql работают примерно так. Получают данные - записывают в массив и когда игрок выходит записываем данные из массивов в базу MySql ?
Именно так. Но вот та проблема, которую ты хочешь обойти - потеря данных. Представь, что ты получил данные игроки, записал их в массив. И как игрок выйдет, ты хочешь отправить данные из массива в mysql. Допустим, что будут какие-то внешние события, которые могут повлиять на этот алгоритм, например крашнулся игровой сервер, или вовсе сервер mysql перестал быть доступным. Что будет в этом случае?
Крашнулся сервер - значит, что событие выхода игрока не будет вызвано, а это значит, что всё, чего достиг игрок во время игры (после того, как его данные были записаны в массив), будет утеряно. В этом случае тебе стоит отправлять данные на mysql всегда, когда ты изменяешь эти данные в массиве (игрок убил кого-то - записал это в массив(переменную или хз где ты хранить это будешь) и отправил на mysql, но такое решение не есть хорошо.
Посреди работы сервер mysql стал недоступен - допустим у игрока в mysql записано 100 уровень. Игрок подключается, игровой сервер пытается получить данные с mysql, но он не отвечает, следовательно все переменные игрока (массив) равны 0 (уровень = 0), т.к. новые данные не были получены. Допустим, что посреди игры сервер mysql заработал, и игрок вышел, а значит, все данные из его массива должны быть отправлены на mysql, а т.к. его переменные равны 0, в mysql будет отправлены нулевые данные, то бишь все его данные обнулятся, а уровень будет равен 0.