На клиенте есть некоторое магическое читерство и предсказание, в результате которого мы стараемся совместить анимацию удара и отлетающий урон. Если совсем грубо говоря, то клиент в большинстве случаев ждёт подтверждения от сервера и только потом рисует анимацию. Это может быть подтверждение того, что фаербол полетел, а не того, что он долетел до цели. Иногда он начинает рисовать анимацию до ответа чтобы бой выглядел более динамичным. Но если сервер ответит, что удар не прошёл, анимация некрасиво прервётся :)
Свой сетевой слой удобнее, потому что его можно подхачивать на всех уровнях и заставлять работать именно так, как надо нам. На большом проекте проще написать своё, чем заставить 0mq выполнять то, что хочется с максимальным перфомансом. Можно впилить шифрование, компрессию, поиграть с объемом генерируемого мусора и т.п.
Каких сообщений? В JSON мы преобразуем некоторые данные прямо перед сохранением данных в базу. И десериализуем сразу после того как их оттуда загрузили.
Или вы о чём-то другом говорите? Нигде больше JSON-а у нас нет.
Аннотации @Nullable/NotNull это аннотации IDEA. Это лучшие аннотации в мире. Они спасли от невероятно количества багла. Писать их совсем не сложно, alt+enter и идея сама их дописывает. Однозначно оно того стоит. Даже в маленьких проектах.
Весь клан по умолчанию будет пытаться сливаться в один канал. Но нет гарантии, что это получится.
Механизм для форсированного сбора всех в одной точке пока не допилен, но вроде как хотели сделать что-то вроде спела «собраться», который будет принудительно телепортить всю группу (не гильду) в одну кучу :) Если надо будет делать то же самое для гильдий, то запилим.
1) Хороший вопрос. Это как раз основная проблема этого подхода. Функциональности может не быть. Поэтому если функциональности нет, то это надо как-то обрабатывать. Кидать эксепшн и удалять аватара или репортить в лог.
2) В ответ на запрос вы узнаете что удар прошёл и нанесено столько-то то дамага. Изменение полоски с хэлсом над мобом обновляется через реплику и у вас и у друга.
Проблемы возникают не при большом кол-ве человек, а при высоком пинге. Тогда ответы от сервера могут прилетать через 1-2 секунды после удара, и игрок не будет чувствовать от боя фидбека. Задержка в обновлении хэлса, это мелочь по большому счёту.
Вас интересует как оно было реализовано?
Просто на границах карты существовали области, при попадании в которые игрок начинал реплицировать на другой сервер.
Я не помню есть ли у кого-то эффект невидимости, эффекты и классы я не пишу. Но на вскидку выглядит так, что временно перестать реплицировать игрока другим клиентам довольно просто. Так что если невидимость у нас есть, то она честная.
Или вы о чём-то другом говорите? Нигде больше JSON-а у нас нет.
Допустим есть класс
тогда в мессажка будет выглядеть как #1F030005
где 1F это id классаб 03 — это значение X, 0005 это значение Y
Оказалось, что хранить в базе большой JSON это плохо, но не так уж и плохо как я ожидал. Так что решили попробовать пока так.
Механизм для форсированного сбора всех в одной точке пока не допилен, но вроде как хотели сделать что-то вроде спела «собраться», который будет принудительно телепортить всю группу (не гильду) в одну кучу :) Если надо будет делать то же самое для гильдий, то запилим.
Чат в рамках канала, если я ничего не путаю.
2) В ответ на запрос вы узнаете что удар прошёл и нанесено столько-то то дамага. Изменение полоски с хэлсом над мобом обновляется через реплику и у вас и у друга.
Проблемы возникают не при большом кол-ве человек, а при высоком пинге. Тогда ответы от сервера могут прилетать через 1-2 секунды после удара, и игрок не будет чувствовать от боя фидбека. Задержка в обновлении хэлса, это мелочь по большому счёту.
Как избавится от этого никто не знает.
Вас интересует как оно было реализовано?
Просто на границах карты существовали области, при попадании в которые игрок начинал реплицировать на другой сервер.
Бесшовный мир у нас был в Аллодах на самом деле. Одна карта была сразу на нескольких серверах… Оказалось технологически сложно и игрокам мало полезно.
В любом случае это вопрос в первую очередь гейм дизайна. Они считают, что открытый мир не нужен, по крайней мере в нашей игре.