Pull to refresh
71
0
Андрей Фролов @Randll

User

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

В Аллодах реплицировали. Как? Ну точно также как и на клиент :) на удалённом сервере создаётся прокси аватар. В код основного аватара в сеттеры полей встраивается отсылаение реплики на к проксе.
Всё равно чекаем и кидаем эксепшн и это правильно. Сегодня мы точно знаем, что будет NotNull, но завтра кто-то что-то где-то отрефакторит и привет NullPointerException.
Не, это не миксины. Это запчасти в очень широком смысле. «Ноги», «Поверхность», «Таланты», «Периодическая чекалка чего-то там» и т.п.
Ну есть же ссылка в этой статье :)

habrahabr.ru/company/mailru/blog/182088/
Да вроде ноги у всех на месте, после многих лет разработки и тестов. Хоть ситуация с тем, что мессажку послали не туда, и возможна, возникаетс она довольно редко.

Всё проще. В псевдокоде это выглядит примерно так
run(Abonent) {
!(Abonent instanceof Interractable)
  Fail();

 obj = (Interractable) Abonent;

obj.checkPrecondition(actorData)

obj.interract(actorData), 
}


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

p.s. Хотя, конечно, это только пример. Интерракшны с реальными объектами гораздо сложнее.
Всё у нас не по учебнику :)

Мессажка это действительно «типа Command Pattern».

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

— Не понял как искать читеров по логам. Я с читерским клиентом могу просто «тормозить» и передавать пакеты другим пирам с большой задержкой. Или не передавать вовсе. Или рвать соединения. Формально это не читинг.

— Если запретить «светить ип», то как пользователи будут друг с другом коннектится?
Не взлетит.
— программировать сложно
— коннектить игроков p2p через фаерволы, модемы и т.п.?
— p2p не для реалтайм распространения инфы. пинги будут весьма большими.
— можно читить, фильтруя траффик который посылаешь другим.
— придётся засветить ипшники игроков друг другу.
1) Своё решение лучше, потому что туда удобно впиливать конкретно наши фишечки. Кроме того, protobuf требует создания описателя в отдельном файле, мы же генерим код для сериализации прямо по Java файлам. Нам так удобнее. Возможно мы будем использовать protobuf для общения с внешними сервисами.

2) Отвечал уже :) У нас внутриигровой фейсбучек и вёб админка.

3) Да. Тут про Аллоды forum.allods.ru/showthread.php?t=91938, у нас примерно так же.
Не знаю как в Firefall, но у нас всё примерно так как вы описали.
Интерфейс не даст ударить по камушку. Но вот если сломал клиент и всё-таки ударил… То дисконнект.
Не вводи народ в заблуждение :) protobuf у нас если и будет то сбоку, для взаимодействия сторонних сервисов (пусть даже и нашей же разработки) с рилмом.
«И проблема с N числом игроков в одной точке переходит от квадратичной к линейной.»
Не переходит. Каждому игроку надо переслать сколько-то информации. И количество этой инфы пропорционально количеству аватаров, которые игрок видит. Количество инфы в вашем радиусе увеличивается если аватаров становится больше.

Мобы и объекты на карте в лимит не входят. У нас просто есть квота для дизайнеров, сколько мобов они могут расставить на карте.
Чисто клиентская. Под wine врядли что-то будет.
На всё это есть серверные проверки :)
Код разный. Кроме того, клиент на c++, сервер на Java. Кодобазу шарить проблематично :)

Information

Rating
Does not participate
Location
Amsterdam, Noord-Holland, Нидерланды
Works in
Date of birth
Registered
Activity