Электронная библиотека » Алексей Патрашов » » онлайн чтение - страница 3


  • Текст добавлен: 4 августа 2017, 19:10


Автор книги: Алексей Патрашов


Жанр: Математика, Наука и Образование


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 3 (всего у книги 13 страниц) [доступный отрывок для чтения: 3 страниц]

Шрифт:
- 100% +

Перезагрузки и переигрывания или прохождение перезагрузками

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

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

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



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

В играх Fallout 1 и 2 существовало такое явление, как случайная встреча в пустыне. Всё было прекрасно за исключением хорошо построенного на основе этих встреч мошенничества через перезагрузки: после нехорошей встречи можно было загрузиться и попробовать пройти ещё немного, а потом сохраниться и так до точки назначения. Точно так же легко можно было невероятно быстро обогатиться при посещении мест столкновения караванов с кем угодно или нейтральных группировок с враждебными: прошел, встретил, подобрал и сохранился, а потом снова прошел и если не повезло никого встретить, то загрузился и прошел по новому кругу. Таким образом затрачивая очень мало времени внутри игры можно было очень хорошо разжиться всем, чем только богата пустыня и весь игровой баланс немедленно разрушается.

Борьба с повторами может вестись разными способами. Если сохранение игры сделать возможным только в определённых местах, то это значительно усложнит процесс повторения. У этого способа есть существенный недостаток, когда при сбое в игре или случайной гибели приходится проходить большой кусок заново да и выглядит такой подход часто противоестественно за редким исключением. И это мы ещё не учли необходимость вдруг внезапно сохранить и прервать игру, которая возникает иногда достаточно часто. Существует ещё и оценка затрат времени на поднятие нужного навыка для достижения приемлемой вероятности успеха и простого использования этого же времени для нужного числа перезагрузок для нужного числа повторов.

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

От возможности продавливать продвижение через повторы пострадали такие известные игры как Gothic 1 и 2, Fallout 1—3 и Oblivion. Для примера мы рассмотрим два способа борьбы с повторами перезагрузок для диалогов. Обычно пишется вероятность успешного уговаривания, но действие выполняется всего одно и сразу же видно успех уговора. Уже при тестировании можно определить, сколько времени уходит на развитие каждого навыка до каждого уровня. Можно было бы применить ограничения по уровню умения, но это выглядело бы не так естественно, как попытка выполнения задачи без ограничений. Если мы введём перебор множества вариантов диалога через простой выбор хотя бы одного из двух вариантов ответа достаточное количество раз, то вероятность угадывания правильного ответа при низком уровне навыка уговора будет крайне мала и процесс перебора наугад станет неэффективным.

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

С повторением из второго примера бороться уже сложнее: у нас не происходит какое-то событие сколько-то раз, а просто проходит какое-то непрерывное время в игре. Для решения задачи попробуем представить её следующим образом. Пусть у нас некоторое событие происходит со средней частотой λ и за время t происходят в среднем λ⋅t событий. Тогда у нас за период T произойдут в среднем λ⋅T событий, а вероятность попадания в интервал t, вложенный в интервал T, при равномерном распределении событий по длине интервала T будет t/T. Вероятность принадлежности k событий интервалу t будет тогда определяться выражением.


и



Мы получили распределение Пуассона, чего и следовало ожидать. Теперь нас интересует вероятность того, что за время t событие не произойдёт ни разу, то есть произойдёт ноль раз. Вычитая эту вероятность из единицы мы получим вероятность того, что событие произойдёт за указанное время хотя бы один раз и более. Получаем следующее выражение.



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

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

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

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

Классификация игр

Хоть мы и будем заниматься направлением RPG, но оценить и сравнить все остальные жанры тоже следует. Систематизация приводит в порядок множество разнообразных вещей и позволяет отследить связь или родственные связи между ними. Без упорядочивания и систематизаци обычно сложно выявить скрытые свойства, которые находятся в тени более отчётливых свойств. Так хорошо известная игра Heroes of Might and Magic заслуженно считается стратегией, но при более детальном рассмотрении в ней легко обнаруживаются элементы RPG, а именно развитие игровых героев, поэтому переходим к систематизации.

Существует множество жанров игр, причём достаточно чётких и определённых правил деления по жанрам не существует. Если перебрать все игры, то можно выделить их основные характеристики по которым можно составить таблицу принадлежности игры какому-либо жанру. Если обозначить знаками «+» обязательный атрибут, «0» ― возможный, а «-» ― недопустимый, то получится примерно таблица 1. Данная таблица не претендует на окончательность, но предназначена для внесения хоть какой-то ясности.

Рассмотрим число потенциально возможных жанров. Таблица 1 предусматривает девять характеристик с разными значениями, но не все значения всех атрибутов являются возможными сочетаниями. Так в числе взаимоисключающих атрибутов не может быть больше одного обязательного атрибута и при этом не может быть только один необязательный атрибут, если все остальные атрибуты отрицательные, поэтому число вариантов каждой характеристики для двух атрибутов приходится считать как 2+1=3, а для трёх атрибутов ещё сложнее 3+3+1=7. Тех же самых результатов можно было бы добиться и простым вычитанием невозможных вариантов из их общего числа. При этом должен присутствовать хотя бы один необязательный атрибут.

Предыдущие рассуждения верны только для взаимоисключающих атрибутов характеристик, таких как: количество игроков, местоположение игры, режим, количество игровых объектов, управление игровыми объектами, развитие игровых объектов и управление развитием игровых объектов. Для атрибутов характеристик: взаимодействие с игровым миром и обмен информацией с игровым миром такого ограничения нет и число их вариантов равно 32=9 для каждого. Для трёх не взаимоисключающих атрибутов число вариантов было бы 33=27 и так далее.

С учётом теоретического количества число всех возможных жанров для сортировки по данной таблице, равно 75⋅32⋅92=12252303, то есть число выходит за пределы разумного понимания. Таким образом число потенциальных жанров на порядки превышает всё число придуманных, а тем более, изготовленных игр с момента создания самой первой. Очевидно, что два жанра не должны иметь две повторяющиеся строки в классификационной таблице. Проверить строки на повторяемость удобнее всего машинной сортировкой или обработкой списков на разность. Таким образом можно применить машинную генерацию жанров игр.


Таблица 1. Жанры игр.


Таблица 1. Жанры игр (продолжение).


После того, как удалось определиться с атрибутами игры, можно уже определить её принадлежность к имеющемуся жанру или выделить в собственный жанр. После выбора жанра можно попробовать определиться с вопросом: нужно ли будущей игре управление сложностью и в какой форме оно будет осуществляться.

Управление сложностью игры или чем труднее ― тем лучше

В игру будут играть разные люди: с разными уровнями восприятия, реакции, сообразительности, выносливости, координации, интеллекта и много чего ещё. В связи с этим игра будет восприниматься от очень лёгкой до очень сложной в зависимости от способностей каждого. Для настройки процесса игры под индивидуальные особенности каждого игрока существуют уровни сложности с разными способами управления.

Понятно, что уровни сложности в игре необходимы, во всяком случае желательны. Но весь вопрос заключается только в том, на что влияет уровень сложности? Сюда же попадает и вопрос о возможности или необходимости автоматического изменения или поддержания заданного уровня сложности. В некоторых случаях уровень сложности влияет на характеристики героя, в некоторых случаях он влияет только на скорость игры, в некоторых случаях влияет только на сложность боя или количество добычи, иногда влияет на тип окружающих игрока противников, их количество и частоту появления или плотность размещения, а иногда просто на сложность боя.

На сложности боя мы остановимся немного подробнее. Здесь есть несколько направлений: или меняется живучесть игрока, или живучесть противников, или и то и другое. Последний случай имеет два направления: одновременное изменение живучести в одну сторону и одновременное изменение живучести в противоположные стороны. Второе направление второго случая больше похоже на два предыдущих направления, а вот одновременное изменение живучести игрока и его противников в одну сторону надо рассмотреть подробнее.

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

Сам собой напрашивается вывод о двух регуляторах сложности: один для живучести героя, а другой для живучести противника. Таким образом игрок получает возможность одновременно изменяя уровни сложности влиять на её качественный уровень, а изменяя встречно влиять на количественный уровень. Есть и другой вариант с двумя регуляторами: один регулятор управляет качественным уровнем сложности, а другой количественным. Например, если в игре присутствует один единственный регулятор уровня сложности то скорость развития героя нужно задавать монотонно возрастающей в зависимости от уровня сложности да ещё и с учётом влияния уровня сложности на скорость развития. Если регуляторов сложности два, то зависимость нужно брать от их разности или отношения с тем условием, что время развития героя до определённого уровня должно быть постоянным для всех разностей или отношений уровней сложности.

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

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

Переключение уровня сложности может присутствовать, а может и отсутствовать. В первом случае в любое время можно переключить уровень сложности на более низкий или высокий и продолжить игру, а во втором придётся проходить игру с самого начала. У каждого подхода есть свои достоинства и свои недостатки. Если изменение сложности возможно без переигрывания, то игра может быть пройдена при разных уровнях сложности, что усложняет её балансировку и открывает множество обходных путей для прохождения. С другой стороны обходные пути это тоже пути и они вносят разнообразие в способы прохождения игры. Но следует помнить о необходимости отслеживания выполнения задания и установленном в это время уровнем сложности. Этот вопрос мы рассмотрим несколько подробнее.

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

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

Репутация в игре или во имя славы и чести

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

Задача усложняется, если в игре присутствует несколько сторон и репутация у каждой из них вычисляется отдельно. Сразу же возникают вопросы взаимосвязи между объединениями. Как быстро каждое из объединений забывает предыдущие заслуги? Важен ли порядок получения заслуг или всё равно как их получать? Насколько каждое из объединений ревностно относится к работе на другие объединения? Чаще всего эти вопросы решаются просто ограничением возможности вступить в каждое объединение и число объединений, в которых состоит герой, сокращается до оного или работа на каждое объединение не влияет на отношение всех остальных.

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

Второй вопрос репутации состоит в величине каждой заслуги. Могут ли две небольшие заслуги оцениваться как одна большая? Можно ли просто складывать оценки заслуг? Ведь хорошо известно, что количество часто переходит в качество и сто раз помочь донести мешок и один раз защитить от разбойников это совсем не одно и то же. Для оценки влияния величины заслуги можно использовать какую-нибудь быстро возрастающую зависимость, чтобы отойти от простого суммирования и увеличить вклад больших заслуг.

Как видно из рассмотренного, задача сводится к способу получения среднего значения из последовательности чисел, а также учёту порядка значений в заданной последовательности. Таким образом задача разделяется на две: определить среднее значение без учёта порядка и ввести способ учёта порядка в получение среднего значения.

Вообще, вычисление любого вида неупорядоченного среднего возможно по Колмогорову. В зависимости от выбора функций можно получить практически любые приемлемые для использования результаты. Чаще всего используется среднее арифметическое. Среднее геометрическое в силу своего требования к положительности знака и среднее гармоническое в силу своего требования неравенства нулю всех членов ряда обычно не используются. Ниже приведена формула неупорядоченного среднего по Колмогорову, где u ― монотонная функция, имеющая областью допустимых значений все возможные значения исследуемых данных, а v ― функция, обратная u.



Среднее по Колмогорову не учитывает порядок членов заданной последовательности, но введение весовой функции от порядкового номера позволяет это сделать. Если весовая функция является константой, то упорядоченное среднее превращается в неупорядоченное. Таким образом неупорядоченное среднее по Колмогорову является частным случаем упорядоченного среднего. Ниже приведена формула упорядоченного среднего по Колмогорову.


где w ― весовая функция.


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

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


и обратная функция



В таблице 2 приведён пример упорядоченного среднего для ряда значений из интервала [-2, 2] в прямом и инвертированном виде: (0, 1, 2, 1, 2, 1, -2, 2, 0, -2, 0, 1). Легко заметить для последних двух функций, что изменение весовой функции может быть равносильно инвертированию порядка данных и об этом надо помнить при выборе функций. Степенные функции определены как rps.


Таблица 2. Упорядоченное среднее.


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

aij=aji или A=AT для симметричных и aij≠aji или A≠AT для несимметричных. Симметричные матрицы оценки действий выглядят естественнее с точки зрения здравого смысла, ведь нет смысла одному объединению ценить другое, которое не ценит его, но это правило не является догмой и может легко нарушаться. Вместо симметрии в матрицах оценок действий можно применять простое суммирование по строкам и столбцам с условием равенства между собой всех сумм, но это не является строгой необходимостью.

Внимание! Это не конец книги.

Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!

Страницы книги >> Предыдущая | 1 2 3
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации