Движок для Real-time MMOG

Я разрабатываю Real-time движок для MMO-игр. Настоящий real-time (http://ru.wikipedia.org/wiki/Системы_реального_времени), поэтому приходится работать без операционной системы. Часть пути уже пройдена, и это был интересный путь. Пришлось разбираться с такими задачами как:

1. Загрузка по сети (потому что в компьютерах, симулирующих игровой мир, никакие хранилища данных не нужны)

2. Запуск ядер в многопроцессорной системе (оказывается после RESET только одно ядро начинает полноценную работу)

3. Работа с сетевой картой через порты ввода-вывода (нет ОС - нет и драйверов)

4. Синхронизация доступа разных процессоров к одним и тем же данным (процессоры любят читать данные ДО того, как они были записаны)

и многими другими вещами.

 

Осталась последняя задача - придумать как будет представлен игровой мир и как его отдельные части будут взаимодействовать друг с другом. И вот тут приходится действовать в очень узких рамках:

- Симуляторы должны обмениваться короткими пакетами данных. Networking происходит на канальном уровне (это только IP-протокол 6 версии) и пакет не должен превышать 1280 байт. IPv6 гарантирует что любое совместимое устройство может обработать по крайней мере 1280 байт, а мне не хочется заморачиваться с определением MTU и фрагментацией. Все это ведет к тому, что у меня есть только 1280 - 40 (заголовок IPv6) = 1240 байт для полезной информации.

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

- Не должно быть ни шардинга, ни зонинга. Я верю, что полет мысли геймдизайнера могут ограничивать только законы физики и бюджет. Не должно быть так, что в одной звездной системе могут находиться только несколько тысяч игроков и при этом приходится замедлять время в 10 раз (http://habrahabr.ru/post/167581/). Если есть деньги на 1000 серверов, то их надо заставить тянуть миллионы игроков в одной комнате.

- Ну и, конечно же, не забываем про реалтайм. Расчет взаимодействий не должен затягиваться настолько, чтобы заметно увеличивать latency, возникающую из-за географического местоположения симуляторов.

 

PS: Это как раз тот случай, когда мне нужны именно идеи. Если идея будет хорошей, то я ее реализую сам.

Комментарии

Так, сделай симулятор валютной биржи.

Submitted by AndyArt on

Ха, год назад я уже решил эту задачу. Только не симулятор, а настоящую биржу криптовалют. Мне бы идеи относительно MMOG...

Стоп, а эти системы реального времени для чего предназначены? Вот из примера следует, что они применяются для управления роботом, то есть неким объектом в реальности, датчиками и ПО. А в игре чего и как будет взаимодействует?

Submitted by AndyArt on

>> 

GameDev.by