Как понять, что один игрок видит другого игрока?

Версия Minecraft
1.7.10
API
Forge
219
12
119
Вопрос в шапке
Метод canEntityBeSeen пускает вектор от головы до головы друг друга и не срабатывает если примером у игрока видно только руку
 
219
12
119
Я думаю в начале нужно ознакомится с работой метода canEntityBeSeen, а потом отвечать на данную тему.
Frustrum проверяет только область камеры игрока, если игрок или моделька будет находится за блоком, фруструм все равно вернет true
И как я говорил раньше это клиенская реализация. А все что шлется клиентом на сервер может оказаться неправдивым
 
250
12
24
Ну если тебе надо 2 конкретные сущности связать, то тут все просто как мне кажется, просто проверять есть ли между сущностями блок, обычный цикл и векторная математика, если любых сущностей, ну например если моб из кастом нпс не видит игрока и он теряет на нем таргет(почему то я думаю что именно в эту сторону ты смотришь, без обид если не так), то тут надо переписать немного метод обнаружения, у нпс есть радиус агра, добавь в него просто тот же самый метод - цикл и векторы, а если ты хочешь конкретно обнаруживать высунутую руку, то тут надо делать скорее всего доп энтити и проверять их через тот же аабб, потому что это можно сделать шейдером, но опять же с клиента инфа не точная, такое надо считать на сервере
 
219
12
119
Для этой проблемы я хочу увеличить визуально бокс игрока, для того что бы не было проблем с невидимым игроком из за угла
Но вот пускать много лучей, оправданный ли риск
Пусть даже оно будет искать в отдельном потоке
Это как минимум по 20 лучей на одного игрока а это при онлайне 50 игроков, что выходит нужно просчитать 48020 лучей...
 
292
14
160
Это как минимум по 20 лучей на одного игрока а это при онлайне 50 игроков, что выходит нужно просчитать 48020 лучей...
Проверка на дистанцию трекинга может сильно уменьшить количество необходимых рейкастов.
 
808
3
124
Это как минимум по 20 лучей на одного игрока а это при онлайне 50 игроков, что выходит нужно просчитать 48020 лучей...
Как думаешь, почему даже в ААА соревновательных шутанах примерно нигде нет серверной защиты от волхаков?)
 
7,099
324
1,510
А что, если сервер будет иметь кучу видеокарт, чтобы отрисовывать экраны игроков и чекать, рисуется ли игрок А у игрока Б?
Останется проблема пинга
 
808
3
124
На самом деле не думаю что нужна прям куча видеокарт, учитывая что нужна только occlusion проверка - весь графон можно скрутить. Пинг частично компенсируется экстраполяцией позиции камеры.

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

Мы несколько лет назад экспериментировали с этой темой (ну, с трейсом на CPU конечно) - нагрузку повышает заметно, игроки жаловались на появление противников из воздуха. Решили что плюсы не перевешивают минусы.
 
Последнее редактирование:
Сверху