Зачет фрагов, возможная реализация и проблемы

Sep 12, 2013 16:21

Зная механизм засчета фрагов из предыдущей статьи можно порассуждать о возможной реализации данной механики.



Фраги делятся на "безусловные" (убит пилот, отвалилось крыло, самолет взорвался и т.д.), и на "условные", когда самолету были нанесены повреждения после которых он разбился. И если с "безусловными" все просто - кто нанес такое повреждение того и тапки, то с "условными" ситуация сложнее ибо нужно делить фраг между несколькими претендентами.

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

Дальше идут прикидки исходя из того, что мы видим в боях:

По сути для реализации указанной механики нам нужно завести на каждый самолет "цель" по три переменных, одна хранит id первого кританувшего, вторая id уничтожившего модуль, третья id попавшего.

Первая переменная устанавливается один раз при первом крите, а две остальных обновляются при тех событиях которые контролируют, также для них храниться время наступления события, для реализации таймаута соответствующих событий.

Когда самолет "жертва" считается уничтоженным, сервер обнуляет переменные с наступившим таймаутом, после чего проверяет три этих переменных записывает фраг игроку с сохраненным id в соответствии с системой приоритетов : Хит > Первого крита > Повреждения модуля. Игрок с наибольшим весом получает фраг, а остальные получают поддержку ( вопрос количества поддержек на один фраг мной не изучался ).

Преимущество такой системы в простоте реализации. Для реализации достаточно сложной "системы учета фрагов" будут использованы всего 3 переменных с таймерами на самолет и простой код по выявлению призера.

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

Эту проблему можно решить отключив право "последней очереди", но тогда проблема просто переворачивается с ног на голову - достаточно наносить один крит и бросать противника, который еще может сопротивляться и навредить, а все "минусующие" самолет противника будут получать простую поддержку. В результате мы получаем недовольство игроков которые реально "минусуют" противника, в результате "теже яйца, вид сбоку"(с). Вариант с заморочным определением может ли поврежденный самолет выполнять полет и таким образом засчитывание фрага за еще не упавший самлет также череват массой ошибок и проблем.

Однако, если взглянуть на проблему с другой стороны то косяки с псевдодобиванием вызваны тем, что в настоящее время не ведется (или не используется) статистика нанесенного сбитому самолету домага. Если же мы будем вести такую статистику и в ней определим, что право зачета килла от последнего удара наступает только в случае суммарного вклада в повреждение цели больше чем 2% (цифра чисто для примера) это решит проблему "фрага на шару", потому как если самолет действительно падает, то много по нему не настреляешь и килл давать "добиватору" не надо, а вот если он реально не падает и "добиватору" удалось его "надамажить", то его килл - вполне заслужен.

Также нужно ввести понятие группового килла, когда несколько игроков нанесли серьезные повреждения цели.

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

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

warthunder

Previous post Next post
Up