[Из песочницы] Time management games: как сделать расчеты и пройти заковыристый уровень

Недавно попробовал time management игру. Сюжет типичный для игр такого жанра — используя определенные возможности распорядиться ограниченным количеством ресурсов для достижения заданной цели за ограниченное время. Игрушка мне пришлась по душе, но на 11 уровне случился затык. Для того, чтобы достичь желаемой звездочки (чего только не сделаешь ради виртуальных плюшек?), решил подойти с умом и сделать некоторые расчеты, дабы отбросить никчемные стратегии и таки уложиться в отведенное бонусное время. Данная статья о том, что я делал и какие результаты получил.

Начну с описания того, что на ней есть и того, с чем придется столкнуться при решении задачи.

3900095fc6094be49cc062a6bf0e9376.JPGЛесопилка. Здесь можно, имея достаточное количество золота, напилить древесины, необходимой для строительства всех остальных зданий.51844ea6b68c465fb1eedaaac50adee4.JPGХижина. Один из видов жилых зданий. Более дешевый, но менее прибыльный, чем коттедж.

Ресурсы, необходимые для строительства и улучшения зданий, рента:

Клад. На карте представлено два клада. Тот из них, который находится в левой части экрана составляет 5000 золота, а тот, который в правой — 1000 золота.

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

Бонусное время уровня — 320 секунд.

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

Выборка рыночных предложений Золото, Дерево, Золото, Дерево, Золото, Дерево100,10,500,40,500,201000,40,100,10,200,10200,10,800,20,100,10500,20,500,10,100,10200,20,800,20,500,20100,10,500,40,200,10200,20,100,10,800,40100,10,200,10,800,20500,40,200,20,500,20800,20,200,20,100,10800,20,800,40,100,10200,10,800,40,500,10100,10,200,20,500,20200,20,100,10,500,20500,40,100,10,200,20800,40,500,20,100,10100,10,200,20,500,10800,20,200,10,100,10500,20,100,10,800,20200,20,800,20,100,10500,10,800,40,100,10100,10,500,10,200,101000,40,500,20,800,20100,10,1000,40,500,10800,40,500,10,200,20500,40,200,20,500,20500,10,200,20,800,20100,10,500,20,500,40200,20,500,40,500,10500,40,800,20,800,40200,20,500,40,800,20100,10,200,10,200,20100,10,800,20,200,10500,40,500,10,200,20800,20,500,10,200,10200,20,500,40,800,40100,10,200,20,800,40200,20,500,10,500,40800,20,100,10,200,20200,20,100,10,200,10800,20,200,20,500,10500,40,1000,40,100,10500,40,800,40,100,10800,40,100,10,500,40200,10,200,20,800,40200,20,800,40,100,10800,40,200,20,500,40100,10,800,20,500,10200,20,500,10,1000,40200,10,100,10,800,20800,40,200,10,200,20100,10,800,20,500,40500,10,200,20,800,40800,40,500,20,200,20800,40,200,20,100,10500,20,800,20,500,10500,10,200,20,500,20200,10,100,10,1000,40100,10,200,10,500,20800,40,100,10,200,20200,20,500,10,800,20200,20,500,20,100,10200,20,200,10,100,10100,10,500,10,200,10200,20,800,40,100,10800,20,800,40,1000,40500,10,200,10,500,20200,20,800,40,1000,40200,20,500,20,100,10500,20,800,40,500,40100,10,200,20,500,20800,20,200,10,200,20500,10,100,10,200,10100,10,200,20,500,20800,20,500,40,100,10200,10,500,10,500,40200,20,100,10,800,20200,20,800,20,100,10200,20,500,40,200,10100,10,800,20,200,201000,40,800,20,200,20500,10,100,10,200,10100,10,500,20,500,10200,20,100,10,500,20800,20,500,40,200,20100,10,500,10,500,40100,10,500,10,800,20500,20,100,10,500,10800,40,100,10,200,20200,20,500,20,500,40100,10,500,10,500,40200,20,1000,40,800,40200,10,800,40,100,10100,10,200,20,800,40500,10,200,10,500,40100,10,200,20,800,20100,10,1000,40,200,10200,10,800,40,200,20200,20,500,10,800,40800,20,1000,40,500,20

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

Чистая прибыль рассчитывается с учетом того, что 10 единиц древесины стоят 100 единиц золота. Теперь можно проанализировать данные и получить таблицу частот прибыльности:

Отсюда получаем, что средняя прибыльность одной сделки — 450 единиц золота!

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

Рассмотрим первую стадию. Как скорейшим образом заработать 10000 золота? Для решения этой подзадачи можно предложить несколько вариантов:

Рассмотрим по порядку данные стратегии.

У нас имеется 110 единиц дерева и где-то 6000 золота (предполагается, что коттедж принесет 1000 золота за время первого этапа). В итоге мы планируем получить 11000 золота (10000 для выкупа + 1000 на постройку лесопилки) и 350 единиц дерева (для строительства 4 хижин нам необходимо 400 единиц дерева, для сада в коттедже — 50, недостающие 100 единиц дерева мы предполагаем произвести за счет второго выкопанного клада).

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

Результаты моделирования, отвечающие на вопрос: «Какова вероятность того, что нам будет достаточно N рыночных сделок для достижения поставленной цели?», — приведены в таблице:

В рассматриваемом случае у нас имеется в наличии 2 рынка. Одна сделка длится около 35 секунд (20 секунд обновление сделки, 3 секунды для того, чтобы сделать выбор варианта сделки, 4 секунды, чтобы налоговик добежал до рынка и 8 секунд на заключение сделки).

Получается, что придется сделать от 7 до 12 заходов, чтобы получить необходимое количество сделок. Рассчитаем время, необходимое для совершения такого количества заходов.

Посчитаем расходы времени на дальнейшие действия. Нам нужно внести выкуп, выкопать клад и построить 4 хижины с садами, предварительно ликвидировав 2 рынка. 10 (снос 2 рынков и внесение выкупа) + 10 (выкопать клад и построить 2 хижины) + 8 (пиление дров и разбиение 2 садов) + 18 (постройка еще 2 хижин с садами) + 20 (оперативные расходы и расходы на передвижение юнитов) = 66 секунд. Добавим сюда еще время на разбор завалов в начале уровня (15 — 20 секунд) и получим, что необходимо где-то 80 — 85 секунд.

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

У нас имеется 110 единиц дерева и где-то 5200 золота. В итоге мы планируем получить 11000 золота и 400 единиц дерева. Проделав аналогичные расчеты получили:

С учетом того, что мы располагаем 3 рынками, нужно сделать 6 — 9 заходов.

В данном случае, по сравнению с предыдущим, нам нужно построить на 1 хижину с садом больше, т. е. потребуется дополнительно около 20 — 25 секунд (в сумме 100 — 110 секунд).

Таким образом, при реализации данной стратегии уровень может быть пройден в 10.4% случаев.

Попробуем реализовать данный подход на практике:

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

Данная стратегия представляется совершенно бесперспективной. Время цикла получения ренты сопоставимо со временем цикла рыночной сделки, но торговые операции, как было показано, приносят золота более чем в 2 раза больше.

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

Поставленная задача решена, цель достигнута, но полученные результаты как-то особо не радуют…

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

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

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

© Habrahabr.ru