Игра для мальчишек и дяденек

С огромным удовольствием режусь со старшим сыном в прекрасную игру Scrap Mechanic. Это, как бы сказать, Майнкрафт с инженерным уклоном.

Фабула такова: ты совершаешь аварийную посадку на какой-то планете с некогда высокоразвитой агроцивилизацией. Люди на этой планете практически исчезли, и остались только агротехнические роботы, которые от времени разладились и ведут себя, прямо скажем, неподобающе. Например, норовят засадить вилами прямо по башке. Или скосить игрока огромным серпом вместе с сеном и полить его ядохимикатами.

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

Но самый смак игры — в построении разного рода техники: автомобилей, грузовиков, тягачей, буровых установок, танков для борьбы с роботами, и так далее. Физика в игре сделана очень неплохо, и можно даже построить летающую технику. Но, опять же, из-за неплохой физики управлять ею крайне непросто. У меня ушёл битый час, чтобы сконструировать квадкоптер, на котором я бы не разбивался сразу же после взлёта. И ещё полчаса — чтобы научиться более-менее прилетать туда, куда надо мне, а не куда боги пришлют.

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

Но и это ещё не всё. В игре есть пара моментов, которые делают её интересной не только мальчишкам, но и дяденькам с высшим компьютерным образованием. Так, в игре есть логические элементы, что значит, что на их базе можно построить компьютер. Вот, например, я построил двоичный восьмибитный сумматор с последовательным переносом. Складываются числа 163 и 29 (10100011 и 00011101 соответственно). Результат, конечно, 192 (11000000).

Конечно, можно не только складывать, но и вычитать. Разумеется, компьютеры вычитать не умеют. Когда компьютеры вычитают, например, 29 из 163, они складывают 163 и -29. В двоичной системе, чтобы получить отрицательное число, надо все биты перевернуть и добавить единицу. Так что складываем 10100011 и 11100011 и получаем 10000110 (134). Ну, а грозно горящий красным индикатор переполнения игнорируем…

Элементы сумматора — пять логических элементов: два XOR, два AND и один OR. Проще не придумалось.

В-общем, в игре каждый может найти что-то своё, интересное лично ему. Кто-то любит драться с роботами. Кто-то строит огромные мощные седельные тягачи. Другой — автоматизирует выращивание овощей. Ну, а кто-то рисует логические цепи в творческом режиме — точно такой же режим есть в Майнкрафте. В нём нет врагов, и доступны все строительные блоки. Развлекайся как хочешь.

Крайне рекомендую, игра находится в активной разработке (т.н. early access), но уже стоит того, чтобы её купить. Есть на Стиме.

Хорошо быть папой

Папа покупает себе игрушки, а говорит, что для старшего сына. Удобно, чорт!

Сын с увлечением режется в самого разного рода гонки, и кольцевые, и на выживание, и разные версии Mudrunner.

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

На таком можно и управлению автомобилем научить, и даже ручной коробке. Не знаю, правда, насколько реалистично последнее в плане ощущения “не ту скорость воткнул, дурак, я щас заглохну!” Или “плавнее надо сцепу отпускать!” Хотя обратная связь у руля есть, поглядим.

Теперь нормальные джойстики теперь делают на датчиках Холла. Микрософт раньше пробовал их изготавливать на оптических сенсорах, но потом перестал (тоже неизвестно, по какой причине). А раньше их делали на переменных резисторах, блин. Благо при использовании игрового порта там кроме резисторов больше ничего и не надо было, всё остальное делал комп. Но после недели использования потенциометры начинали шуметь и трещать, как древние радиолы, и игра превращалась в мучение. Даже дорогие джойстики таким страдали. Чего мешало делать их сразу на нормальных сенсорах, непонятно. Датчики Холла ведь не вчера придумали. И даже не позавчера, они ещё в 1960х были. Подавая выходное напряжение из линейного датчика Холла на затвор полевого транзистора, несложно получить переменный резистор. Почему не делали — загадка.

Отложили

Я так ждал продолжения игры Left 4 Dead 2! Ураганный экшн в сочетании с тесной командной игрой просто великолепны. Если статистика Стима не врёт, я провёл за этой игрой 420 часов, то-есть, 50 рабочих дней с гаком 🙂 Отличная игра была.

Не так давно анонсировали игру Back 4 Blood, долгожданного сиквела. Они собирались его выпустить 22 июня, однако, отложили “на конец 2021 года”. Вот такие пироги. Поглядел геймплей альфа-версии — интересно, графику немного подтянули, и добавили разнообразия среди зомбарей.

Буду ждать дальше.

Где моя импульсная винтовка???

“Колд Айрон Студиос” объявили о создании новой игры на основе кинофильма “Чужие”. Будем надеяться, что получится нормальная игра; судя по трейлеру, должно получиться прилично!

Игра — многопользовательский кооператив. Походу, это будет что-то вроде франшизы “Left 4 Dead”, в которую я упоенно резался практически каждый день в своё время. Это была прекрасная игра, в которой всё завязывалось на взаимовыручку и командный дух. Если его не было, то зомбари просто перебивали всех поодиночке, и до конца игры команда тупо не доживала, так как финальный набег монстров выстоять менее, чем вчетвером было весьма затруднительно. Особого смака, наверное, добавит режим игры за Чужих, как в Left 4 Dead можно было играть за зомбарей против четвёрки людей.

Два недавних захода в игры про Чужих мне не понравились. “Чужие: Колониальные Морпехи” были просто чудовищно плохой игрой. Это была первая игра, за которую я вернул деньги в Стиме. А “Чужой: Изоляция” это решительно не моя чашка чая, я со страху чуть не обосрался, как этот гражданин (можно мотать сразу на 2:30):

А вот взять в руки верную M4A1 с 30mm гранатомётом и выдать всем басурманам термоядерных (зв)издюлей — вот это да, это по мне.

Игрушка про охоту

Подсел тут на игру theHunter: Call of the Wild (sic). Одна из самых красивых игр с исключительно детально прорендеренными пейзажами. Для локаций такого масштаба просто удивительно — прорисованы как горы, находящиеся на огромном расстоянии, так и каждая травиночка рядом.

В игре много разных заказников, где можно охотиться. Я пока охочусь в Тихоокеанском Северо-Западе, сиречь, территории штатов Орегона и Вашингтона. Этот официальный скриншот, по-моему, именно оттуда.

Любая игра-симулятор (а это именно симулятор), это, конечно, только приближение к настоящему.

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

1. Бегать по горкам, таская сразу и винтовку и дробовик, и пистолет — удовольствие сильно ниже среднего. А аватар, ничего, бегает аки вышколенный пехотинец.
2. Дичи в игре — просто валом, непролазно. Такое не встречается в реальной жизни, плотность крупных диких животных намного меньше.
3. Дичь исключительно хорошо отзывается на манки. Один раз в манок пукнешь — и всё, олени на тебя прут табунами.
4. Следы животных намного сложнее искать в реальной жизни. Хотя я понимаю, что ограничение тут вполне себе техническое.

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

1. Стрелять надо по месту. Это особенно важно на первом этапе игры, когда у тебя только плохонькая винтовка калибра 6mm. Ну подстрелишь ты лося в жопу, и что дальше? Ты за ним будешь полдня бегать, ждать, пока он окочурится. А он может и вообще не окочуриться, у него рана может затянуться и привет. Поздравляю, ты сделал подранка.

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

Попал ей в левую переднюю ногу и левое лёгкое. Чаще всего в игре попадаешь именно по лёгким (ну, понятно, почему — они большие). Это хорошо, ранение в лёгкое смертельно. Пробежала 70 метров и всё. Вот и правильно, пусть не страдает.

Конечно, стрелять было бы правильнее немного правее. Как говорится, “за локоток”. Ну, вот на это и даются уроки анатомии.

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

2. Передвигаясь по лесу бегом, устраивая шум и треск ты только распугаешь всю дичь. Особенно предательски ведут себя деревья, их нижние ветки громко вжикают по одежде. Ну, если кто когда шатался по лесу, тот знает, на что это похоже.
3. От человека для диких животных жутко пахнет хищником. В игре есть очень полезный указатель ветра, показывающий конус человеческого запаха, исходящий от охотника. Пытаться подкрасться к оленю, имея ветер со спины — пустой номер.
4. Руки у охотника трясутся. Особенно сильно они трясутся если ты только что отмахал километр по горкам. Надо сесть, успокоиться, а стрелять, слегка задержав дыхание. Слегка — потому что продолжительное задержание дыхания поднимает сердечный пульс, и у тебя снова начинают трястись руки, даже ещё хуже.

Вот, пожалуй, самые важные пункты по игре. Охотиться можно на самую разную дичь — всякого типа оленей, от белохвостого до американского лося (Moose). Можно поехать на сафари в Африку или в Австралию, заваливать кенгуру. Утки, гуси — само собой. Медведи, и даже есть кабаны. Очень, очень хорошая игра. Отзывы на Стиме — 9 из 10.

Раздражает только одна вещь — в игре дохера платных дополнений. В принципе, и того контента, что идёт штатно, хватает за глаза, но если захочется, тебе, например, вездеход — звиняй, докупай дополнительно.

Искуственный интеллект

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

Но для того, чтобы научить нейросеть чему угодно, для начала надо сделать набор данных для обучения. В случае с играми, соответственно, это будут партии различных игр. Для начала я выбрал что-нибудь попроще: крестики-нолики. Благо ПОЛНОЕ дерево решений для этой игры очень небольшое. Чисто теоретически там 9! игр (около 360 000), в реальности намного меньше: не все игры идут 9 шагов, многие являются отражениями других игр, развёрнутых на 90, 180, и 270 градусов. И так далее.

Написал программу на Питоне, которая генерирует все возможные игры, играет в них, и записывает результаты. Таким образом, у меня получилась программа, которая играет в игры традиционным способом — через построение игрового дерева.

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

Программа должна выбирать не ход, который приводит к победе. А ход, который не приводит к поражению. Вот такая логическая загогулина. Ничего, завтра переделаю программу и попробую заново. Может быть, даже до нейросети — изначального места назначения — дело дойдёт.

Программы, которые играют в шахматы тоже работают таким же образом — через построение игрового дерева. Только полное игровое дерево для шахмат… эээ несколько больше, чем количество атомов в наблюдаемой вселенной, так что дерево строят только частичное, и определают перспективность той или иной ветви через минимакс.

Вообще, если есть возможность строить игровое дерево — лучше строить игровое дерево. Такие программы будут играть в игру лучше, чем нейросети (которые по сути только распознают паттерны и реагируют на них). Но игровое дерево строить возможно далеко не всегда. Скажем, Го не поддавалось, поэтому нормально играть компьютер в Го наконец-то научились именно, что через нейросети. Потому что игровое дерево для шахмат — 10E120 (число Шеннона), а игровое дерево для Го — 1.74E172! Но даже Го меркнет перед огроменным деревом крайне (на первый взгляд) простой игры Стратего, чей размер составляет 10E535!!! Неудивительно, что компьютер играет в Стратего крайне слабо. Может быть, именно что нейросети научатся. В лоб, через построение дерева — путь тупиковый.

Кто с детьми в игрушки играет?

Приобрёл подержаный Плейстешен 4. Кто какие игры порекомендуют, чтобы с детьми было интересно? У нас хиты пока вот такие:

1. Little Big Planet 3 (с большим отрывом)
2. Minecraft (куда же без него)
3. Baja: Edge of Control

Какие ещё кто порекомендует? Интересует именно чтобы можно было играть вдвоём-втроём, либо split screen, либо как в LBP — несколько аватаров на одном экране. Я б, конечно, зарядил бы Rock Band (лучшая игра всех времён и народов для локального мультиплеера), но дети слишком маленькие пока. Не врубятся.

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

Интересное математическо-игровое

Если есть возможность научить компьютер что-то делать — он это будет делать намного лучше человека. В том числе — и играть в игры.

Большинство игр типа шашек, шахмат, домино и даже крестиков-ноликов компьютер играет через постройку дерева решений. Для крестиков-ноликов это вполне тривиальная задача, так как количество возможных игр в крестиках-ноликах равно факториалу 9 или примерно 363 тысячам. Для современных компьютеров это ерунда. Шашки уже посложнее — там 500 квинтиллионов (500 000 000 000 000 000 000) возможных игр. И полное дерево решений для шашек таки было построено. Число возможных игр в шахматах же несколько превышает… кгм… количество атомов в наблюдаемой Вселенной, поэтому с построением полного дерева ожидаемо возникает затык. Да и с шашками, вообще-то, тоже, так как 500 квинтиллионов поместятся далеко не во всякий компьютер 🙂 Ну, полное дерево, в принципе, и не нужно. Чтобы выиграть в шахматы, например, у меня, достаточно построить дерево ну хотя бы в четыре уровня, потому что я архихреново в них играю. Чтобы выиграть у гроссмейстера, понадобится дерево пошЫрше и поглЫбже; но это тоже не является проблемой — компьютер теперь с гарантией выигрывает у лучших в мире гроссмейстеров, тема, по сути, закрыта.

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

Чуваки из конторы DataGenetics провели математический разбор “Морского боя”:

http://www.datagenetics.com/blog/december32011/

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

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

И что характерно, рассчитать карту плотностей вероятностей у компьютера получается значительно лучше человека.

Карта плотностей вероятностей на 12 ходу после 5 попаданий:

Хотя люди тоже пользуются примерно такой же стратегией — статистически компьютер всё же будет выигрывать. Вот такие пироги с кремниевыми котятами.

За неимением руля

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

Забег по мудям (Mudrunner 😉 ) заиграл новыми красками. Рулить стало намного проще, т.к. рулишь не в режиме ШИМ =) Но самое главное улучшение это даже не руление, а плавный контроль над акселератором. В любом заезде по чему-то скользкому, будь то снег, лёд или мокрая глина самое важное — это сохранение контроля над сцеплением колёс с дорогой. При трогании на льду, например, надо газовать осторожно, медленно, и иногда даже полезно врубить передачу повыше, чтобы крутящий момент поменьше был. Иначе дрыгатель ревёт, колёса крутятся, а толку ноль — даже вперёд толком не едешь. А тут осторожненько, на мягких лапках, намного проще доехать до места назначения.

В-общем, рекомендую такой контроллер, хорошая штука.