Ну мир у нас не stateless, поэтому из базы права доступа мы запрашиваем только один раз, когда игрок входит в игру. Дальше права кэшируются на легате и сверяется какие права указаны в аннотации на комманде и какие есть у пользователя. Оверхэд есть, но не большой.
В Аллодах реплицировали. Как? Ну точно также как и на клиент :) на удалённом сервере создаётся прокси аватар. В код основного аватара в сеттеры полей встраивается отсылаение реплики на к проксе.
Всё равно чекаем и кидаем эксепшн и это правильно. Сегодня мы точно знаем, что будет NotNull, но завтра кто-то что-то где-то отрефакторит и привет NullPointerException.
Да вроде ноги у всех на месте, после многих лет разработки и тестов. Хоть ситуация с тем, что мессажку послали не туда, и возможна, возникаетс она довольно редко.
Мессажка это действительно «типа Command Pattern».
В некоторых местах мы посылаем мессажку-носитель, в которой есть классик с данными. На приёмнике делается обработчик, подписывающийся на приход опеределённого типа данных. Это наверное ближе к DTO. Но этот подход используется реже, не очень удобно.
— Не очень понял про наличие неписей и т.п., но в любом случае добавление новых этапов пересылки обновлений увеличивает пинг и ухудшает боеёвку.
— Не понял как искать читеров по логам. Я с читерским клиентом могу просто «тормозить» и передавать пакеты другим пирам с большой задержкой. Или не передавать вовсе. Или рвать соединения. Формально это не читинг.
— Если запретить «светить ип», то как пользователи будут друг с другом коннектится?
Не взлетит.
— программировать сложно
— коннектить игроков p2p через фаерволы, модемы и т.п.?
— p2p не для реалтайм распространения инфы. пинги будут весьма большими.
— можно читить, фильтруя траффик который посылаешь другим.
— придётся засветить ипшники игроков друг другу.
1) Своё решение лучше, потому что туда удобно впиливать конкретно наши фишечки. Кроме того, protobuf требует создания описателя в отдельном файле, мы же генерим код для сериализации прямо по Java файлам. Нам так удобнее. Возможно мы будем использовать protobuf для общения с внешними сервисами.
2) Отвечал уже :) У нас внутриигровой фейсбучек и вёб админка.
Не вводи народ в заблуждение :) protobuf у нас если и будет то сбоку, для взаимодействия сторонних сервисов (пусть даже и нашей же разработки) с рилмом.
«И проблема с N числом игроков в одной точке переходит от квадратичной к линейной.»
Не переходит. Каждому игроку надо переслать сколько-то информации. И количество этой инфы пропорционально количеству аватаров, которые игрок видит. Количество инфы в вашем радиусе увеличивается если аватаров становится больше.
Мобы и объекты на карте в лимит не входят. У нас просто есть квота для дизайнеров, сколько мобов они могут расставить на карте.
В Аллодах реплицировали. Как? Ну точно также как и на клиент :) на удалённом сервере создаётся прокси аватар. В код основного аватара в сеттеры полей встраивается отсылаение реплики на к проксе.
habrahabr.ru/company/mailru/blog/182088/
Всё проще. В псевдокоде это выглядит примерно так
Никаких свичей, обычная перегрузка методов. ООП все учили. Логика камушка — в камушке, логика колокольчика — в колокольчике.
p.s. Хотя, конечно, это только пример. Интерракшны с реальными объектами гораздо сложнее.
Мессажка это действительно «типа Command Pattern».
В некоторых местах мы посылаем мессажку-носитель, в которой есть классик с данными. На приёмнике делается обработчик, подписывающийся на приход опеределённого типа данных. Это наверное ближе к DTO. Но этот подход используется реже, не очень удобно.
— Не понял как искать читеров по логам. Я с читерским клиентом могу просто «тормозить» и передавать пакеты другим пирам с большой задержкой. Или не передавать вовсе. Или рвать соединения. Формально это не читинг.
— Если запретить «светить ип», то как пользователи будут друг с другом коннектится?
— программировать сложно
— коннектить игроков p2p через фаерволы, модемы и т.п.?
— p2p не для реалтайм распространения инфы. пинги будут весьма большими.
— можно читить, фильтруя траффик который посылаешь другим.
— придётся засветить ипшники игроков друг другу.
2) Отвечал уже :) У нас внутриигровой фейсбучек и вёб админка.
3) Да. Тут про Аллоды forum.allods.ru/showthread.php?t=91938, у нас примерно так же.
Не переходит. Каждому игроку надо переслать сколько-то информации. И количество этой инфы пропорционально количеству аватаров, которые игрок видит. Количество инфы в вашем радиусе увеличивается если аватаров становится больше.
Мобы и объекты на карте в лимит не входят. У нас просто есть квота для дизайнеров, сколько мобов они могут расставить на карте.