Pull to refresh

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

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

Описание и задача уровня


Вот исходная карта 11 уровня:



Начну с описания того, что на ней есть и того, с чем придется столкнуться при решении задачи.
  1. Замок. Здесь находятся подконтрольные нам юниты: строители и налоговики. Строители строят, улучшают и сносят объекты, расчищают завалы, выкапывают клады, добывают дерево на лесопилке. Налоговики собирают ренту с жилых зданий, заключают рыночные сделки по продаже дерева, платят выкуп пиратам.
  2. Коттедж. Один из двух доступных типов жилых зданий. Кроме них можно построить более дешевые, но менее прибыльные хижины.
  3. Рынок. Здесь можно поменять дерево на золото. В рамках одной сделки можно выбрать одно из трех предложений.
  4. Завал. Ограничивает передвижение юнитов. При его ликвидации добавляет 10 единиц дерева на склад.
  5. Клад. Выкопав его, можно неплохо обогатиться (халява сударь!).
  6. Пират. Ограничивает передвижение юнитов. Уходит после того, как ему заплатят мзду (ему, должно быть, за Державу не обидно).
  7. Склад. Доступные нам ресурсы и юниты.
  8. Задачи уровня. В данном случае нужно 5 домов (коттеджей или хижин) с садом.
  9. Индикатор бонусного времени. Мы хотим выполнить поставленную задачу до того, как оно иссякнет.

Кроме того, для строительства доступны:

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

Ресурсы


Начальные ресурсы:
  • Юниты: строители: 3 шт. / налоговики: 3шт.
  • Золото: 0 единиц (или 5000 с учетом клада)
  • Дерево: 0 (или с учетом разбора всех завалов 110) единиц

Ресурсы, необходимые для строительства и улучшения зданий, рента:
Здание или улучшение Золото Дерево Строители Рента
Хижина 75 1 100
1 улучшение хижины 15 1 125
2 улучшение хижины 30 1 175
3 улучшение хижины 45 2 250
Сад для хижины 25 1
Коттедж 150 1 200
1 улучшение коттеджа 30 1 250
2 улучшение коттеджа 60 1 350
3 улучшение коттеджа 90 2 500
Сад для коттеджа 50 1
Лесопилка 1000 1
Рынок 250 1

Лесопилка (стоимость добычи дерева)
Количество получаемого дерева Цена в единицах золота
50 500
100 1000
200 2000

Время:
Действие Время на выполнение действия (в секундах)
Разбор завала 10
Выкапывание клада 10
Обновление ренты 20
Снять ренту 3
Обновление рыночного предложения 20
Заключение рыночной сделки 8
Заключение сделки с пиратом 10
Постройка здания 10
Снос здания 10
Пиление дерева 8
Разбиение сада 8
Повышение уровня здания 6

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

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

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

Поиск решения


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

Выборка рыночных предложений
Золото, Дерево, Золото, Дерево, Золото, Дерево
100,10,500,40,500,20
1000,40,100,10,200,10
200,10,800,20,100,10
500,20,500,10,100,10
200,20,800,20,500,20
100,10,500,40,200,10
200,20,100,10,800,40
100,10,200,10,800,20
500,40,200,20,500,20
800,20,200,20,100,10
800,20,800,40,100,10
200,10,800,40,500,10
100,10,200,20,500,20
200,20,100,10,500,20
500,40,100,10,200,20
800,40,500,20,100,10
100,10,200,20,500,10
800,20,200,10,100,10
500,20,100,10,800,20
200,20,800,20,100,10
500,10,800,40,100,10
100,10,500,10,200,10
1000,40,500,20,800,20
100,10,1000,40,500,10
800,40,500,10,200,20
500,40,200,20,500,20
500,10,200,20,800,20
100,10,500,20,500,40
200,20,500,40,500,10
500,40,800,20,800,40
200,20,500,40,800,20
100,10,200,10,200,20
100,10,800,20,200,10
500,40,500,10,200,20
800,20,500,10,200,10
200,20,500,40,800,40
100,10,200,20,800,40
200,20,500,10,500,40
800,20,100,10,200,20
200,20,100,10,200,10
800,20,200,20,500,10
500,40,1000,40,100,10
500,40,800,40,100,10
800,40,100,10,500,40
200,10,200,20,800,40
200,20,800,40,100,10
800,40,200,20,500,40
100,10,800,20,500,10
200,20,500,10,1000,40
200,10,100,10,800,20
800,40,200,10,200,20
100,10,800,20,500,40
500,10,200,20,800,40
800,40,500,20,200,20
800,40,200,20,100,10
500,20,800,20,500,10
500,10,200,20,500,20
200,10,100,10,1000,40
100,10,200,10,500,20
800,40,100,10,200,20
200,20,500,10,800,20
200,20,500,20,100,10
200,20,200,10,100,10
100,10,500,10,200,10
200,20,800,40,100,10
800,20,800,40,1000,40
500,10,200,10,500,20
200,20,800,40,1000,40
200,20,500,20,100,10
500,20,800,40,500,40
100,10,200,20,500,20
800,20,200,10,200,20
500,10,100,10,200,10
100,10,200,20,500,20
800,20,500,40,100,10
200,10,500,10,500,40
200,20,100,10,800,20
200,20,800,20,100,10
200,20,500,40,200,10
100,10,800,20,200,20
1000,40,800,20,200,20
500,10,100,10,200,10
100,10,500,20,500,10
200,20,100,10,500,20
800,20,500,40,200,20
100,10,500,10,500,40
100,10,500,10,800,20
500,20,100,10,500,10
800,40,100,10,200,20
200,20,500,20,500,40
100,10,500,10,500,40
200,20,1000,40,800,40
200,10,800,40,100,10
100,10,200,20,800,40
500,10,200,10,500,40
100,10,200,20,800,20
100,10,1000,40,200,10
200,10,800,40,200,20
200,20,500,10,800,40
800,20,1000,40,500,20

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

Чистая прибыль рассчитывается с учетом того, что 10 единиц древесины стоят 100 единиц золота. Теперь можно проанализировать данные и получить таблицу частот прибыльности:
Чистая прибыль от сделки Частота появления варианта с такой прибыльностью
100 0.06
300 0.13
400 0.41
600 0.4

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

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

Рассмотрим первую стадию. Как скорейшим образом заработать 10000 золота? Для решения этой подзадачи можно предложить несколько вариантов:
  1. Снести рынок, на его месте построить лесопилку и совмещать получение ренты с коттеджа с прибылями от торговых сделок.
  2. Снести коттедж, на его месте построить лесопилку и получать только торговые доходы.
  3. Снести рынки и на их месте построить коттеджи или хижины, получать только ренту.
  4. Ничего не сносить, а продать дерево, полученное от разбора завалов, с наибольшей выгодой.

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

Стратегия №1


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

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

Результаты моделирования, отвечающие на вопрос: «Какова вероятность того, что нам будет достаточно N рыночных сделок для достижения поставленной цели?», — приведены в таблице:
Количество необходимых рыночных сделок (N) Количество благоприятствующих случаев Вероятность того, что будет ровно N сделок (в %)
13 13 0.0
14 748 0.7
15 6408 6.4
16 19688 19.7
17 29157 29.2
18 24371 24.4
19 13114 13.1
20 4828 4.8
21 1330 1.3
22 288 0.3
23 50 0.1
24 5 0.0

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

Получается, что придется сделать от 7 до 12 заходов, чтобы получить необходимое количество сделок. Рассчитаем время, необходимое для совершения такого количества заходов.
Число заходов Вероятность того, что такого количества заходов хватит (%) Время необходимое для реализации данного маневра (секунд)
7 0.7 7*35 = 245
8 26.1 8*35 = 280
9 53.6 35*9 = 315
10 17.9 35*10 = 350

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

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

Стратегия №2


У нас имеется 110 единиц дерева и где-то 5200 золота. В итоге мы планируем получить 11000 золота и 400 единиц дерева. Проделав аналогичные расчеты получили:
Количество необходимых рыночных сделок (N) Количество благоприятствующих случаев Вероятность того, что будет ровно N сделок (в %)
16 123 0.1
17 1691 1.7
18 8745 8.7
19 20894 20.9
20 27264 27.3
21 22145 22.1
22 12362 12.4
23 4856 4.9
24 1444 1.4
25 385 0.4
26 79 0.1
27 10 0.0
28 2 0.0

С учетом того, что мы располагаем 3 рынками, нужно сделать 6 — 9 заходов.
Число заходов Вероятность того, что такого количества заходов хватит (%) Время необходимое для реализации данного маневра (секунд)
6 10.4 6*35 = 210
7 70.3 7*35 = 245
8 18.7 8*35 = 280

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

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

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



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

Стратегия №3


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

Стратегия №4


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

Заключение


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

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

Полученные результаты наводят на мысль, что, возможно, стоило бы внести некоторые коррективы в условия раунда, для того, чтобы сделать его более проходимым, ведь у нас как ни как казуальная игра. Что же можно сделать для повышения вероятности прохождения?
  1. Увеличить бонусное время раунда. Если увеличить бонусное время раунда на 35 секунд, то проходимость (стратегия №2) превысит 80%.
  2. Уменьшить размер выкупа или увеличить сумму клада. Если уменьшить выкуп на 1000 золотых, то проходимость (стратегия №2) повысится до 65%.

Несмотря на то, что полученные результаты меня не порадовали, игра, тем не менее, доставила массу приятных ощущений. Думаю, что любой, кто поиграет в эту игру, найден её увлекательной и получит удовольствие от игрового процесса, а это самое главное.
Tags:
Hubs:
Total votes 11: ↑10 and ↓1+9
Comments4

Articles