Biruza
7x-forum visitor
Зареген: 13.01.2005
Раса: zerg > terran > _random_
ICQ:
Откуда: Санкт-Петербург
Сообщений: 30
Нарушений: 0 [C]
|
Алгоритм распределения повреждений/попаданий
Мне интересна тема автоматического поведения юнитов и пр. Понимание процессов, происходящих в игре по зарограммированным алгоритмам помогает эффективнее управлять и компенсирует недостаточный АРМ (как мне кажется).
Так вот. Я просматривал темы в итернете на предмет сплешевых повреждений (попаданий), наносимых юнитом противнику в условиях ослепления, маскировки за деревьми или др. перпятствиями, и в условиях разницы уровня.
На форуме близов я наткнулся на спор на эту тему, который так и не был завершен. Зарегиться на форум я почему-то не смог, поэтому выношу свои вопросы сюда. Знающие люди есть везде.
Итак.
Официально вероятность попадания в скрытых или юнитов на высотах =70%. Это число оспаривается на 50%-ную вероятность, полученную в результате тестирования. Есть предположение, что даже в случае "промаха", атакуемому все равно достается сплеш, что, возможно, по количеству нанесенного урона поднимает ущерб от 50%-ой от частоты попадания до 70% реального ущерба (от 100% попадания-ущерба в нормальных условиях).
Raziel высказался очень категорично за 70%. Цитирую:
"75% попадание организуется при помощи генератора случайных чисел, т.е. создают случайное число в отрезке от 0 - 3(можно брать отрезок больше для достижения больше достоверности, но минимум 4), где при выпадании чисел 0,1, 2 попадание засчитывается, при выпадении 3, попадание не засчитывается, т.е. промах. В теории это выглядит прекрасно, пока дело не доходит до написания генератора случайных чисел, вот тут появляется проблема, есть разные способы, но самый распространенный это использование часов(точнее текущего времени), все-таки они уже реализованы аппаратно , на основе текущего времени по некому алгоритму(если интересно подробней - use yandex, google) выбирается число, и оно считается случайным, но на самом деле оно псевдослучайное.
Кратким описаним работы генератора случайных знакомы, теперь определимся как он должен работать.
-----
Идеальным генератором случайных чисел будет, тот в котором при заданом диапазоне чисел [m..n], и кол-во элементов данного диапазона равно K, при K раз генерации выпадет каждое число диапазона [m..n] один раз.
-----
Как можно догадаться на практике идеального генератора случайных чисел не существует. т.е. при генерации случайного числа из диапазона [0..3] число 3 может не выпасть, получится 100% попаданий.
так что все-таки лучше верить документации, на счет 70% попадания." "
Теперь, собственно, мой вопрос.
Известно, что реплеи нельзя прокручивать назад-вперед. Отображаемое на экране - результат вторично перепрограммированного игрового процесса, где записаны команды, отданные игроками вручную и точки/время закладки зданий, результат команд вычисляется вновь. (изменение алгоритма игры, например, стоимости санкена, приведет к непредсказуемым результатам при воспроизведении реплея, что и случается при переходе от одного патча к другому, где затрагивается баланс). Исходя из этого я предполагаю, что использование генератора случайных чисел недопустимо, если в реплей не записывается результат каждого выстрела!
1. Как все же построен реплей?
2. По какому алгоритму распределяется повреждения и попадания в StarCraft'е?
3. По какому принципу происходит округление нецелых чисел, если результаты повреждений дробные (в случаях взрывных атак и наличие апгрейдов на броню и атаку)?
Если у кого-то есть ссылки, оставьте, пожалуйста.
Ссылка на форум, который я упомянул:
http://blizzard.ru/forum/printthrea...=309&pp=100
__________________
Жалость к себе - худший из пороков
Сообщить модератору об этом сообщении | IP: Записан
|