Time management games: як зробити розрахунки і пройти заковиристий рівень

Нещодавно спробував 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%.

Незважаючи на те, що отримані результати мене не порадували, гра, тим не менш, доставила масу приємних відчуттів. Думаю, що будь-хто, хто пограє в цю гру, знайдений її захоплюючою і отримає задоволення від ігрового процесу, а це найголовніше.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND