Реклама | Adv
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
Сообщения форума
Реклама | Adv

Вопросы разработчикам - 8

Дата: 16.04.2013 13:24:18
Просмотр сообщенияUrbanWOT (16 Апр 2013 - 14:15) писал: Исходя из возросшего онлайна игры (примерно 100 000 игроков на сервер) и хаоса творящегося в игре с попаданием и пробитием встал вопрос о расчете этих самых попаданий и пробитий.
Расчет довольно таки сложен, а не просто "попал в танк - нанес урон" как в аркаде (в чем и привлекательность WOT как игры). Если просто:
1) расчитывается вектор "вхождения снаряда" в танк, определяется участок брони, его наклон и т д, и потом расчитывает пробил/непробил
2) дальше расчитывается что снаряд повреждает внутри танка, какие модули и танкисты по пути траектории, "увернулись" ли они или нет, какой урон и т д
Все это очень громоздкие расчеты, которые надо сделать быстро и правильно. Возникает сомнение что все эти расчеты производятся на сервере или же они производятся не так как описано в различных официальных "руководствах". На ум приходи 2 варианта, как действительно производятся расчеты попадания и пробития:
1) часть расчетов производится на клиентской части игры - расчет вектора вхождения, выбор участка бронирования - это довольно таки сложные расчеты, нужно точно знать как расположен танк по отношению к траектории снаряда, куда попала мат точка снаряда, под какими углами, сверится с моделью танка и выдать на сервер уже пережеванные данные, такие как приведенная броня в точке попадания (ну а сервер уже с помощью ГСЧ считает пробил/не_пробил  и сколько урона); более того "приключения" снаряда внутри танка еще более сложный расчет, оперирующий еще большим кол-вом параметром: расположение экипажа и модулей в танке, по вектору нужно просчитать сколько и каких объектов пересекает траектория снаряда в 3d, ну а сервер уже поподбрасывает монетку и выдаст кого все таки снаряд повредил, а кто "увернулся" (опять через ГСЧ).
2) расчеты производятся в упрощенном виде на сервере - чтоб не обрабатывать уйму параметров, достаточно передать на сервер примерно с какой дистанции и с какого направления прилетит снаряд - а дальше сервер просто подбрасывает монетку (все гениальное просто, верно?); сначала ГСЧ показывает попал ли снаряд вообще в танк, потом тот же ГСЧ выбирает в какой участок брони попал снаряд с этого направления, потом выбирается примерный угол и расчитывается приведенная броня, как джек-пот (с какой то вероятностью) расчитывается попал ли снаряд в слабую зону, потом уже ГСЧ считает урон, таким же образом через вероятности выбирается варианты повреждения внутренних модулей, чтоб не считать траекторию. Обработка боя на короткой дистанции расчитывается по другому, там сразу передаются данные "в какой лючек стреляли", т е участок брони знаем сразу без ГСЧ.
Всем знакомо когда в упор не пробиваем, а на 300м метров идут пробития, хотя даже не видно куда снаряд попал - а все потому что просто "подбрасывается монетка" попал/непопал пробил/непробил.
Тем более для таких упрощенных расчетов есть такое хорошее подспорье как ВБР, те самые +-25%, очень легко замаскировать упрощенные расчеты с помощью ВБР, более того это объясняет зачем нужны такие неточные орудия и такой разброс пробития. Игрок стреляет в танк и думает что игра руководствуется тем куда игрок стреляет, а на самом деле игра для простоты сама выберет куда игрок попал, и игрок поверит, т к разброс у орудий большой и пробитие гуляет так что можно натянуть как угодно и на "пробил" и на "не пробил". Да и подожженные баки в лоб или закритованный мехвод через корму теперь легко объяснимы.
P.S. ГСЧ - генератор случайных чисел.
Товарищи разработчики, какой из двух приведенных выше вариантов вариантов верный?
Ждем вскоре наплыва читаков или же понимание того что влияние на бой игроком все таки зависит от ВБР на 90%?

Storm: Никакой.
Все считается честно на сервере.
Никакой дикой сложности в этих расчетах нет.

Реклама | Adv