Сонное Подземелье: подсказка, которая советует дешёвое
Робот с кнопкой H дошёл до двадцать седьмого яруса. Робот, который из всех покупок знал только «Клинок», — до тридцатого. Оба били монстра десять раз в секунду, оба стартовали с одного экрана: двенадцать хитов у твари первого яруса, три урона за удар. Разница только в том, куда уходило золото.
Пять копий игры я открыл в headless-браузере и дал каждой по шестьдесят секунд. Каждая тыкала по центру экрана с частотой десять герц, а покупки совершала по своему правилу: одна не покупала ничего, вторая брала только «Клинок», третья только «Автобой», четвёртая только «Жадность», пятая следовала за подсказкой bestBuy, то есть жалу H каждые двести миллисекунд. Один прогон на стратегию и одна минута — не приговор для стратегии на час, но разница получилась слишком заметной, чтобы её списать на случайность.
| Правило | Ярус | Золото | Уровень | Улучшения | Счёт |
|---|---|---|---|---|---|
| без покупок | 16 | 307 | 4 | 0/0/0 | 210 |
| Клинок | 30 | 70 | 6 | 9/0/0 | 337 |
| Автобой | 17 | 20 | 4 | 0/5/0 | 192 |
| Жадность | 17 | 41 | 4 | 0/0/3 | 194 |
| подсказка H | 27 | 72 | 5 | 7/5/2 | 302 |
Копить без покупок бессмысленно: триста семь золота лежат мёртвым грузом, а глубина упирается в шестнадцатый ярус, потому что урон не растёт. Девять уровней «Клинка» обошлись в 945 золота и вывели на тридцатый. Пять уровней «Автобоя» стоили 316 и дали семнадцатый. Это не значит, что автобой сломан: он просто добавляет урон поверх тычков, а не заменяет их.
Что именно возвращает подсказка
В описании игры написано: «H подскажет самую выгодную покупку». В коде на это отвечает функция bestBuy. Она собирает три цены — «Клинок» 10·1,55 в степени уровня, «Автобой» 20·1,6 в степени, «Жадность» 60·1,7 в степени — и возвращает ту покупку, которая по карману и при этом дешевле остальных доступных. Слово «выгодный» здесь не считается: ни прироста урона, ни прироста золота функция не оценивает.
Пока у вас нет десяти золота, H не возвращает ничего. Дальше подсказка ведёт себя предсказуемо: первые две покупки — «Клинок» за 10 и 15, потому что он дешевле «Автобоя». Третьей она берёт уже «Автобой»: следующий «Клинок» стоит 24, а автобой всё ещё 20. Золото расползается по графам с третьего нажатия. К пятнадцатой секунде робот с H имел три «Клинка» и один «Автобой», робот с одним правилом — пять «Клинков».
Итог к концу минуты: 7/5/2 против 9/0/0. Обе стратегии потратили сопоставимые суммы, 859 и 945 золота, но рассредоточенные вложения дали меньший урон.
Рамка, которую видно после покупки
У подсказки есть и видимая часть: кнопка, которую она запомнила, обводится жёлтым. Условие в коде — «эта кнопка подсказана и сейчас не по карману». В момент, когда вы жмёте H, подсказка по определению выбирает доступную покупку, поэтому жёлтой рамки не будет никогда: кнопка в этот момент зелёная.
Я проверил на живой странице. Десять золота, жму H — подсказка говорит «Клинок», рамка зелёная. Покупаю — золото ноль, следующий уровень стоит пятнадцать, и вот теперь та же кнопка становится жёлтой. Подсказка загорается не тогда, когда советует, а тогда, когда совет уже подорожал настолько, что вы его не можете взять.
Заодно в том же файле живёт счётчик серии: удары чаще, чем раз в семьсот миллисекунд, поднимают его до пяти. Ни урон, ни золото, ни цена от этого счётчика не зависят — он нигде дальше не читается. Такие детали не ломают игру, просто перестаёшь верить, что сигналы на экране что-то значат.
Двадцать секунд без единого действия
Автобой стоит двадцать золота, а золото даёт только убийство. Я открыл игру и не трогал её двадцать секунд: первый ярус, двенадцать хитов, ноль золота, ноль убийств. Подземелье в названии есть, сонное оно тоже, а вот идти само оно начинает лишь после того, как вы натыкали первые двадцать золота.
Я не жду, что подсказку починят: дешёвое и выгодное совпадают только в самом начале. Но жать H стало интереснее, чем покупать самому, — хотя бы чтобы увидеть, куда на этот раз утекут тридцать золота.
Играть в «Сонное Подземелье: Долгие Ночи» бесплатно: /games/I-L/I/idle-dungeon