2011-01-28 3 views
2

Что вы думаете о сохранении данных (например, характеристик персонажа, достижений, предметов) в MMO-игре? Очевидно, что вы хотите как можно меньше dataloss, если (когда) сервер по какой-то причине опускается.Сохранение данных в MMO

  • Сохранение персонажа, когда что-то важное произошло? Кажется, нервный, результативный?
  • Сохранение всего раз очень X Часы? Вызывает несколько секунд замораживания, но может сопровождаться хорошим миром «Мир спасет».
  • Возможно, имеется таймер сохранения для каждого символа, где вы поочередно ставите символ для сохранения, и сервер работает в этой очереди всякий раз, когда он не занят?

Из этих трех я думаю, что последнее является довольно хорошим решением, но я мог бы что-то упустить. Но каковы ваши мысли, как это делают «большие мальчики»?

+4

Возможно, вы захотите опубликовать свой вопрос: http://gamedev.stackexchange.com/ –

+0

Oh. Я просто могу. Благодарю. –

+0

ACI (нет D) в памяти и некоторые фоновые потоки, которые смывают состояния до некоторого D (например, базы данных) – bestsss

ответ

1

Сохранение символа, когда произошло что-то важное? Похоже, прыжок, по результату?

Не в последнюю очередь. По сравнению со всем остальным, что нужно сделать для такой игры, это совершенно тривиально. Любой достойный механизм базы данных справится с этим. Это то, что они построили.

+0

На самом деле да, это кажется разумным. –

1

Я бы использовал кеш-запись для моей базы данных. Большинство аспектов персонажа не меняются очень часто. Те, которые делают, как и положение, уже требуют некоторого довольно сложного проектирования, чтобы поддерживать связность между серверами и клиентами.

1

может сделать своего рода сервер кеша. игровой сервер отправил бы запросы на чтение/запись на кеш-сервер, сервер кеша записывал бы/читал материал из db и отправлял обратно на игровой сервер. таким образом, если какой-то запрос получает laggy, он не остановит поток в gameserver, если сервер опустится - на сервере все еще будут сохранены кешированные данные и сохранены, если они уже не сохранены.

0

Я написал это http://onemanmmo.com/?doubleentry, решая, как записывать микротранзакции и гарантировать, что они выживут сбой сервера для моей игры. Статья посвящена использованию схемы базы данных учета двойного ввода поверх MySQL с некоторой информацией о хранимых процедурах и безопасности.

Смежные вопросы