Как стать автором
Обновить
71
0
Андрей Фролов @Randll

Пользователь

Отправить сообщение
На клиенте есть некоторое магическое читерство и предсказание, в результате которого мы стараемся совместить анимацию удара и отлетающий урон. Если совсем грубо говоря, то клиент в большинстве случаев ждёт подтверждения от сервера и только потом рисует анимацию. Это может быть подтверждение того, что фаербол полетел, а не того, что он долетел до цели. Иногда он начинает рисовать анимацию до ответа чтобы бой выглядел более динамичным. Но если сервер ответит, что удар не прошёл, анимация некрасиво прервётся :)
Свой сетевой слой удобнее, потому что его можно подхачивать на всех уровнях и заставлять работать именно так, как надо нам. На большом проекте проще написать своё, чем заставить 0mq выполнять то, что хочется с максимальным перфомансом. Можно впилить шифрование, компрессию, поиграть с объемом генерируемого мусора и т.п.
Каких сообщений? В JSON мы преобразуем некоторые данные прямо перед сохранением данных в базу. И десериализуем сразу после того как их оттуда загрузили.

Или вы о чём-то другом говорите? Нигде больше JSON-а у нас нет.
Аннотации @Nullable/NotNull это аннотации IDEA. Это лучшие аннотации в мире. Они спасли от невероятно количества багла. Писать их совсем не сложно, alt+enter и идея сама их дописывает. Однозначно оно того стоит. Даже в маленьких проектах.
Сообщение это id класса + поля класса сложенные в байтовый поток.

Допустим есть класс
class A  {
 byte x=3;
 short y=5;
}


тогда в мессажка будет выглядеть как #1F030005
где 1F это id классаб 03 — это значение X, 0005 это значение Y

Надоело писать конвертеры для бинарных сериализаторов. При простых изменениях JSON может прожить без конвертеров.

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

Механизм для форсированного сбора всех в одной точке пока не допилен, но вроде как хотели сделать что-то вроде спела «собраться», который будет принудительно телепортить всю группу (не гильду) в одну кучу :) Если надо будет делать то же самое для гильдий, то запилим.
Мы стараемся игроков из одной гильдии или из одной группы сливать в один канал. Такой эверистики для просто друзей нет :)
Большая часть приключений идёт через кнопку «хочу побегать вооон там вот». Тебе подберут напрника автомагически :)

Чат в рамках канала, если я ничего не путаю.
1) Хороший вопрос. Это как раз основная проблема этого подхода. Функциональности может не быть. Поэтому если функциональности нет, то это надо как-то обрабатывать. Кидать эксепшн и удалять аватара или репортить в лог.

2) В ответ на запрос вы узнаете что удар прошёл и нанесено столько-то то дамага. Изменение полоски с хэлсом над мобом обновляется через реплику и у вас и у друга.

Проблемы возникают не при большом кол-ве человек, а при высоком пинге. Тогда ответы от сервера могут прилетать через 1-2 секунды после удара, и игрок не будет чувствовать от боя фидбека. Задержка в обновлении хэлса, это мелочь по большому счёту.
— опять не туда написал.
Такого решения ни у кого нет :)

Как избавится от этого никто не знает.

for(Avatar av1: allAvatars)  {
   for(Avatar av2 : allAvatars)  {
     replicate(av1, av2);
   }
}
Ну можно позвать его в группу и там поговорить по душам :) Или ходить по приключениям и ждать… Земля круглая, рано или поздно встретитесь :)
«Бесшовный мир у нас был в Аллодах на самом деле»

Вас интересует как оно было реализовано?
Просто на границах карты существовали области, при попадании в которые игрок начинал реплицировать на другой сервер.
Ну в некотором смысле да. Только про них я тут ничего не писал :)
Ссылка на запись на бету есть в статье :)
JavaScript используется для внутриигрового портала и для администраторских тулзов с вёб интерфейсом.
Я не помню есть ли у кого-то эффект невидимости, эффекты и классы я не пишу. Но на вскидку выглядит так, что временно перестать реплицировать игрока другим клиентам довольно просто. Так что если невидимость у нас есть, то она честная.
Чаты вроде как разные есть… Для зоны, для гильды, для группы, по интересам и т.п. Есть ли чат «для всех вообще» я не помню.
Мир на 100к, но играть вместе нельзя. В танчиках ведь нет шардов. Все могут играть со всеми.

Бесшовный мир у нас был в Аллодах на самом деле. Одна карта была сразу на нескольких серверах… Оказалось технологически сложно и игрокам мало полезно.

В любом случае это вопрос в первую очередь гейм дизайна. Они считают, что открытый мир не нужен, по крайней мере в нашей игре.

Информация

В рейтинге
Не участвует
Откуда
Amsterdam, Noord-Holland, Нидерланды
Работает в
Дата рождения
Зарегистрирован
Активность