Теория игр: классические примеры в картинках и конкретных игровых модулях

в 9:31, , рубрики: game development, vircities, Анализ и проектирование систем, Блог компании IlkFinKom, игровой модуль, картинки, математика, теория игр

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

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

Теория игр: классические примеры в картинках и конкретных игровых модулях - 1

Идея классификации

Все существующие ныне игры делятся на два типа. Но вот какие именно

Математики всегда питали слабость к двоичным и бинарным системам, и авторы теории игр — не исключение. Поэтому при создании игровой классификации они поступили крайне хитро: определили несколько суб-классификаций (дефиниций), в каждой из которых может быть лишь два взаимоисключающих вида игр:
— Классификация по равноправию ходов: симметричные и несимметричные игры.
— Классификация по размеру выигрыша: игры с нулевой и ненулевой суммой.
— Классификация по возможности кооперации игроков: кооперативные и некооперативные игры.
— Классификация по порядку совершения ходов: параллельные и последовательные игры.
— Классификация по доступной игрокам информации: игры с полной и неполной информацией.

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

Так, например, знакомая многим игра парчис (она же шеш-беш, она же лудо, она же патолли, она же мандавошка) является:
— симметричной;
— с нулевой суммой;
— кооперативной;
— последовательной;
— с полной информацией.

Теория игр: классические примеры в картинках и конкретных игровых модулях - 2
На картинке — работа народного умельца, «подарочное издание» этой игры с художественным оформлением игрового поля.

Но хватит прелюдий, классифицируем.

Симметричные и несимметричные игры

Во-первых действия игроков равно применимы: имеют одни и те же последствия для всех игроков. Вторые предполагают наличие некоего неравенства между игроками в том или ином виде (ресурсы, информированность, доступные ходы и т.п.).

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

image

Примеры определенно симметричных игр:
— шашки;
— шахматы;
— домино;
— любые карточные игры.

Есть ли в VirCities примеры симметричных игровых ситуаций?

Почти, но не совсем.

Можно было бы сказать, что таковым может быть момент после вайпа, когда обнулятся все параметры, но тогда мы бы слукавили. Потому что изначально в игре уже будет какое-то количество каких-то компаний, корпораций и партий, у которых уже будут какие-то владельцы-игроки. Но кто будет стоять у руля? Самые активные альфа-тестеры, разумеется.

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

Да, у нас ещё есть мини-игры на реакцию, представленные в виде спортивных дисциплин. «Зачем?» — спросите вы. Во-первых, это позволяет игроку скоротать время в ожидании чего-то (например, он разместил лот на рынке и ждёт, пока его не купят). Во-вторых, попробуйте стать лидеров в одной из дисциплин — это не так просто.

Кооперативные и некооперативные игры

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

image

Игры с нулевой и с ненулевой суммой

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

image

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

Как мы уже рассказывали в прошлой статье, все принимаемые игроками решения находятся между Альфой и Омегой: равновесием по Нэшу и равновесием по Парето. Чем ближе игровая ситуация к любому из них — тем выгоднее изменение стратегии в противоположную сторону.

Рассмотрим это на примере нашего первого ивента — Большого Боя. А если быть точным, на примере звания «Царь Горы», которое может получить город в ходе этого ивента.

«Большой Бой»

Большой Бой — это игровое событие, посредством которого один город «бьётся» с другим городом. Это нельзя назвать строго говоря “боем”, потому что механизм определения лидера сведён к предельно простому правилу: у кого больше, тот и выиграл.

Непосредственно процесс «замера» выглядит так: во время ивента игроки с одной и другой сторон (жители одного и другого города) совершают условные “удары”, каждый из которых наносит какое-то количество условного “урона”, зависящего от типа Большого Боя:

Спортивный — “урон” игрока равен сумме его спортивных навыков (сила, ловкость, выносливость).
Престижный — “урон” игрока равен его Престижу (зависит от надетой одежды, украшений, престижной мебели в жилище, наличия квартиры, виллы, яхты).
Боевой — “урон” игрока равен непосредственно его урону в бою (зависит от надетого оружия).
Денежный — “урон” игрока равен количеству денег у него на счету.

Количество “ударов” в Большом Бою ограничено, плюс они требуют от игрока какое-то количество Энергии. Поэтому основная борьба разворачивается здесь не между конкретными игроками («у кого больше те или иные показатели»), а между городами («у кого больше жителей с теми или иными показателями»).

Если называть конкретные цифры, то 20 Энергии за “удар” и 5 ударов на одного игрока-жителя города. Однако, во-первых, сами по себе они вряд ли вам что-то скажут, а, во-вторых, конкретные цифры мы будем подтягивать как раз в ходе альфа- и бета-тестирования.

Внимательно присмотревшись, можно заметить, что для высоких показателей игроку нужны какие-то предметы или услуги, т.е. во время Большого Боя в городе возрастает спрос на какой-то товар или услугу, производимые другими игроками:
спортивный — возрастает спрос на услуги тренеров;
престижный — возрастает спрос на одежду, украшения, престижную мебель;
боевой — возрастает спрос на оружие;
денежный — возрастает спрос на услуги банков, выдающих кредиты (но этот модуль пока в разработке).

За победу в Большом Бою город получает 5 очков развития (которые потом можно тратить на изучение городских технологий, но это отдельная история), а также какое-то количество видолларов, мягкой игровой валюты (мы решили начать с цифры в 50 000 000). Награду также получает житель победившего города, нанесший больше всего “урона” (50 000 видолларов).

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

«N-кратный Царь Горы» — особое звание, которым может обладать только один какой-то город. Звание это даётся за самую длинную череду побед подряд в Большом Бою. Собственно, кратность титула и показывает количество побед («семикратный Царь Горы» имеет семь побед подряд).

«Царём Горы» является любой город, имеющий минимум (S-1) побед подряд, где S — количество активных городов в VirCities. При схеме «каждый с каждым» рано или поздно в бою сойдутся два города с (S-2) победами подряд, и, как нетрудно догадаться, только у одного из них череда побед не прервётся, и он станет «Царём Горы».

Самое интересное в этом звании — денежная награда за победу в бою, в котором участвует «Царь Горы». Хитрость в том, что размер этой награды (S) напрямую зависит от кратности звания и базовой награды города за бой (B): S=B+0,2*В

То есть если базовая награда составляет, как сейчас, 50 миллионов видолларов, а в бою участвует десятикратный царь, то казна победителя пополнится уже не на 50 миллионов, а на 150 миллионов. Причём неважно, кто победит: останется ли «царь» при короне, или с него её собьют.

Где же тут кооперация?

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

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

И здесь уже можно во всей красе наблюдать равновесие по Парето со всеми вытекающими. Жители всех городов могут договориться между собой и оставить корону «Царя Горы» у какого-то одного города, которому будут проигрывать и который будет регулярно выплачивать им некие “откаты” за это. Ну и, разумеется, договариваться будут, вероятно, не обычные жители, а избранные представители власти.

Но тут уже начинаются сложности. Напомним, победы в Большом Бою — единственный способ получить очки развития, необходимые городу для изучения технологий (например, после изучения городом технологии «Автоматизированные производственные линии» производительность всех компаний в этом городе увеличится на 5%). Таким образом, «избранный» город будет развиваться, а остальные города — нет.

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

Параллельные и последовательные игры

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

image

Игры с полной и неполной информацией

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

Теория игр: классические примеры в картинках и конкретных игровых модулях - 7

Как ни крути, игры с неполным информированием — самые интересные, если грамотно соблюдён баланс между открытой и закрытой информацией.

Если открыть всю информацию в игре — решения принимать становится скучновато, никаких «обманных манёвров» уже не провернуть, единственный вариант победить (не по математическим расчётам, а просто как игроку) — держать в голове больше информации, чем противник. Это шахматы, вещь исключительно на любителя.

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

Кстати, это отлично можно наблюдать в покере. Точнее, в трёх его вариациях: стаде, холдеме и дро. Любого спроси, какой вид покера самый популярный, каждый, не задумываясь, ответит: «Холдем!». Почему?

Потому что в стаде открытой информации слишком много (большинство карт раздаётся «в открытую», т.е. игроки фактически видят все карты друг друга), а в дро — наоборот, слишком мало (здесь единственная информация о руке оппонента — это количество карт, которые тот обменял; иными словами, о картах оппонента игрок знает чуть менее чем ничего).

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

Рассмотрим эти типы игр на примере другого ивента VirCities — Захвата Квартала.

«Захват Квартала»

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

Районы, кварталы, жилые массивы

Кварталы — это некие игровые сущности, которые могут находиться под контролем того или иного города. И, соответственно, переходить в различных ситуациях из-под контроля одного города под контроль другого. Когда город контролирует квартал, то получает от этого какой-то бонус. Какой бонус — зависит от квартала (у всех кварталов уникальные).

«А раз уж сделали прототипы реальных городов, то надо уже делать и прототипы реальных районов!» — подумали мы и взяли за основу для каждого реальные районы (кварталы, боро, муниципалитеты…) представленных в игре мегаполисов.

Жители Москвы в VirCities смогут захватить Таймс-сквер, а жители Нью-Йорка — Кремль. И да, мы обязательно ещё сделаем отдельную статью и про технологии, и про кварталы, а сейчас ограничимся лишь парой примеров «квартальных» бонусов: того же Манхэттена, Китай-города и чего-нибудь ещё для интриги.

Город, контролирующий квартал Манхэттен, получает пассивный эффект: 10% голды (твёрдой игровой валюты), тратящейся игроками на покупку и улучшение жилья в этом городе, идёт в городскую казну.

Город, контролирующий квартал Китай-город, получает пассивный эффект: если у города есть титул «Царя Горы», то в награду за победу в Большом Бою он получает дополнительно (!) столько очков развития, какова кратность титула.

Город, контролирующий квартал Сибуя, получает активный эффект (активируемый парламентом через соответствующий законопроект): Выберите любой город. В ближайшие 72 часа этот город не может инициировать Захват Квартала. Активировать эффект можно не чаще, чем раз в 72 часа. Когда эффект не активирован, то город, контролирующий квартал Сибуя, сам не может инициировать Захват Квартала.

Непосредственно процесс захвата

Ключевое отличие Захвата Квартала от Большого Боя в том, что первый инициируется самими игроками: парламентом и мэром, в то время как второй проходит по расписанию. Однако приведенный выше пример активного эффекта одного из токийских кварталов наглядно иллюстрирует, что и здесь всё не так просто.

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

И его уже можно назвать настоящим боем — здесь стреляют, взрывают, погибают.

image

А всё потому, что Захват Квартала — параллельная игра с неполным информированием игроков. Но давайте по порядку.

Дано:
“Тактическая карта”. По сути карта достопримечательностей реально существующего района, которая становится “тактической” на время захвата (и достопримечательности превращаются в блокпосты).

24 раунда по 1 часу каждый. Именно столько длится Захват Квартала, за это время надо победить.

На начало 1 раунда почти все блокпосты находятся под контролем обороняющихся, за исключением нескольких условно “стартовых”, на которых идёт бой.

Примерно так могла бы выглядеть тактическая карта, если бы Захват Квартала длился 10 раундов, а не 24 (в реальных кварталах будет намного больше блокпостов). Анимация показывает, куда после победы перекидывается бой (на все соседние блокпосты проигравшей команды).

image

Задачи:

Для обороняющихся: по истечении 24 раундов контролировать более 50% блокпостов на тактической карте.
Для атакующих: по истечении 24 раундов контролировать более 50% блокпостов на тактической карте.

Процесс:

В течение раунда жители обоих городов (атакующего и обороняющегося) могут зайти на военную базу своего города и условно сходить “в атаку” на какой-то блокпост:

  • “атаковать” можно только тот блокпост, на котором в этом раунде идёт бой;
  • можно сделать в раунд несколько “атак”, но после каждой из них персонаж теряет 100% здоровья, 1 очко прочности со всей экипировки и все свои боевые гаджеты, т.е. чтобы “атаковать” ещё раз — надо вылечиться и, при необходимости, снова экипироваться;
  • также каждая атака требует какое-то количество Энергии, растущее с каждой следующей атакой в раунд (первый раз бесплатно, второй — 10 Энергии, третий — 20 Энергии, четвертый — 30, и т.д.);
  • когда игрок “атакует”, то создаётся его как бы “двойник”, копирующий все боевые параметры и экипировку.

В конце раунда происходит массовый пвп-бой, в котором участвуют все “двойники”, созданные игроками в течение раунда. Бой происходит также (как любой другой бой) без непосредственного участия игрока — сервер рассчитывает бой и отправляет его результаты всем участникам.
По результатам этого пвп-боя (бойцы чьей команды выжили — та команда и победила) происходит следующее:

  • блокпост переходит под контроль какой-то из сторон, в следующем раунде на нём уже не идёт бой;
  • на всех соседних блокпостах под контролем противника в следующем раунде будет идти бой.

Все игроки владеют информацией о положении дел на “тактической карте” в данный момент:
— какие блокпосты «наши»;
— какие блокпосты «не наши»;
— на каких блокпостах идёт бой (где можно поучаствовать).

А если провести разведку (тут притаилась монетизация), то можно узнать следующую информацию по “тактической карте”:
— на каких блокпостах сколько игроков команды-противника на момент проведения разведки “сходило в атаку”;
— кто эти игроки (их никнеймы).

Больше игровой механикой не предусмотрено каких-либо «официальных» способов получения информации о вооружённых силах противника. Более того, когда игрок “ходит в атаку”, то он даже не знает (до момента окончания раунда), сколько человек из его же города тоже уже “сходили”. Поэтому информацию придётся добывать по старинке — засылать казачков, втираться в доверие, плести интриги.

Вы спросите: «А на кой мне Как вся эта информация поможет мне победить в Захвате Квартала?». Всё дело в том, что здесь, в отличие от Большого Боя, у игрока гораздо больше возможных действий:
— во-первых, создавая “двойника”, игрок определяет, какая у того будет экипировка;
— во-вторых, этому “двойнику” можно дать некую “тактическую установку”, которой он будет придерживаться во время боя: кого атаковать, когда применять усилители, когда и в кого кидать гранаты…
— в-третьих, игрок может определить место своего бойца в строю (в первой линии атаки или глубоко в тылу).

От всего вышеперечисленного, в свою очередь, зависит роль “двойника” на поле боя — будет ли он снайпером, танком, медиком, ассасином…

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

Подписывайтесь на блог нашей компании и читайте еще больше интересных материалов. Спасибо за внимание!

image

Автор: leooverlight

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js