Kaborator

Kaborator

На Пикабу
6871 рейтинг 497 подписчиков 16 подписок 29 постов 19 в горячем
Награды:
5 лет на Пикабу
4

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост

Без копрошуток обойтись не удалось

Сейчас появились множество систем с ИИ, которые позволяют генерировать приключения. Они непреодолимо стараются сделать хорошо, а героя показать хорошим победителем. К сожалению они это делает ещё с тонной воды.

Я попытался сделать героя-неудачника. Посмотрим, насколько у меня получилось победить ИИ. Форматированием цитаты я буду выделять свои промпты, которыми пытался повернуть историю в нужное мне русло.

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост

Все картинки тут генерировались с помощью Fusion Brain от Сбера: https://fusionbrain.ai/

Эпилог

Ты — Конхан, маг, живущий в королевстве Ларион. У тебя есть посох и книга заклинаний. Ты завершил долгий путь и, наконец, добрался до руин, которые искал. Ты пришел сюда в поисках мистической книги заклинаний великой силы, называемой книгой сущности. Осмотревшись, ты видишь каменную лестницу, ведущую в темноту. Спускаясь по ступеням, по спине пробегает холодок, и ты чувствуешь тяжесть век, давящую на тебя. На дне лестницы ты оказываешься в большой тускло освещенной камере. Стены сделаны из грубо обработанного камня, а воздух пахнет сырой землей и плесенью.

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

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

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

С яростной решимостью ты произносишь заклинание из своей книги, заставляя землю под тобой задрожать, а темная фигура отлетает назад от магической силы. Болезненно бледная кожа твоего противника выглядит хрупкой и слабой, как будто вот-вот треснет.

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

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

Затем ты разворачиваешься и покидаешь это место. Тебе не нужна эта книга. Ты почти забыл, что не умеешь читать.

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост

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

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

Идя по дороге, ты не можешь не чувствовать удовлетворения от того, что справился с таким серьезным испытанием и вышел победителем. Ты размышляешь о тех опасностях, с которыми столкнулся, и заклинаниях, которые произнес, думая о том, что мог бы сделать иначе и чему научился из этого опыта. 😒

Ты возвращаешься в Ларион, чувствуя себя мудрее и сильнее, чем прежде. Знания, полученные в ходе путешествия, безусловно, помогут тебе в будущих начинаниях, и ты с нетерпением ждешь, чтобы применить их на практике. Прогуливаясь по улицам города, люди приветствуют тебя с уважением и восхищением, осведомленные о твоих недавних подвигах. 😖

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

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост

Прогуливаясь по шумным улицам города, наслаждаясь похвалами и восхищением окружающих, ты вдруг слышишь голос, доносящийся из близлежащего переулка. Повернувшись, ты видишь грубого простолюдина, стоящего в тенях и смотрящего на тебя с презрением. "Смотри на него, убегает как трус!" — насмехается он, его голос полон горечи.

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

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

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

Ты ищешь заклинание, чтобы очистить свои штаны.

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост

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

Твое заклинание срабатывает неправильно. Оно вызывает сильную диарею.

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост

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

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

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

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

Твои соседи присуждают тебе титул "Говноед года".

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост

Когда ты выходишь из своих апартаментов, ты чувствуешь, как тяжесть унизительного инцидента накануне все еще витает в воздухе. Ты готовишься к неизбежным насмешкам и издевательствам со стороны соседей, но то, что ты находишь, удивляет тебя. Вместо насмешек и смеха ты встречаешь удивительное количество уважения и почтения. Люди обращаются к тебе с титулами, такими как "мастер ночных горшков" и "великий обсиратель". Сначала ты поражен странными титулами, но вскоре понимаешь, что жители Лариона начали воспринимать твой инцидент как свидетельство твоей смелости и стойкости. Они видят в твоей способности выдержать унижение и продолжать двигаться вперед знак истинной силы и характера.

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

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

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

Конец

Я потерпел поражение. Попытки унизить героя приводили его только к ещё большим успехам. И даже "великий обсиратель" стал достижением.

Возможно, вместе со следующей попыткой мне удастся заставить ИИ меня слушаться и не создавать слащавую историю с добрым концом.

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


Сообщение было написано в рамках продвижения бесплатной браузерной сюжетной игры в стиле старых флэш игр. Написана без текстов от ИИ ) Если вам будет интересно, попробуйте, пожалуйста: Король гоблинов и его королевство (это на Яндекс играх https://yandex.ru/games/app/371939?lang=ru ).

Эпик-фейл ИИ легенда - как я пытался сделать самого жалкого приключенца Fusion Brain, Фантастический рассказ, Фэнтези, Эпично, Искусственный интеллект, Волшебство, Волшебники, Копро, Неудачники, Неудача, Страшные истории, Генерация, Легенда, Фантастика, Юмористическая фантастика, Нереально, Гифка, Длиннопост
Показать полностью 8
7

Таблица умножения - мой игровой обучающий тренажёр

Таблица умножения  - мой игровой обучающий тренажёр Инди, Компьютерные игры, Математика, Таблица умножения, Браузерные игры, Инди игра, Обучающее, Образование, Начальная школа, Школа, Бесплатные игры, Яндекс Игры, Видеоигра, Gamedev, Cocos2d-x, Midjourney, Suno, Гифка

Всем привет! Сделал безопасную браузерную игру для школьников младших классов для обучения таблице умножения в Яндекс.Играх. Мой ребёнок мне помог в озвучке, тематике и стилистике. Ну и помогал в генерации графики (ИИ 🚉 использовал, ибо сам я так рисовать не умею, и бюджета на найм дизайнеров у меня нет).

Очень сильно заморочился (по мере своих сил), чтобы процесс был максимально эффективным в плане обучения. И вот какие нюансы я учёл:

  • ⏳ в игре нет никаких таймеров, можно повспоминать не дёргаясь;

  • никаких внутриигровых покупок покупок за реальные деньги;

  • есть бонусные мышки-рыбки 🐀 для разнообразных игровых скинов;

  • сложность примеров растёт постепенно (т.е. вначале всякие 3*5, а 5*9 уже в конце);

  • симметричные примеры 3*5 и 5*3 точно не попадутся один за другим;

  • периодически выдаётся статистика правильности ответов и показываются неправильные (исправленные) примеры, чтобы и визуально быстрее запоминалось;

  • за одну сессию выдаются все комбинации из таблицы умножения (по одному разу);

  • не выдаются малополезные примеры с числами 1 и 10, т.к. результат в них итак очевиден и дополнительно их учить не требуется, в отличие от каких нибудь 7*7 и 6*8.

Таблица умножения  - мой игровой обучающий тренажёр Инди, Компьютерные игры, Математика, Таблица умножения, Браузерные игры, Инди игра, Обучающее, Образование, Начальная школа, Школа, Бесплатные игры, Яндекс Игры, Видеоигра, Gamedev, Cocos2d-x, Midjourney, Suno, Гифка

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

Прошу попробовать и заценить👀. Адекватная и даже неадекватная критика и отзывы приветствуются.

Показать полностью 2
17

Каково это, сделать игру на китайском движке Cocos Creator 3?

Каково это, сделать игру на китайском движке Cocos Creator 3? Компьютерные игры, Инди, Gamedev, Cocos2d-x, Unity, Игровой движок, Веб-разработка, Разработка, Игры, Браузерные игры, Яндекс Игры, Длиннопост

Я, всем довольный, работаю в Cocos Creator 3 [1]

Хорошая новость в том, что на нём гарантированно можно довести игру до завершения и стабильного состояния. И это важно, т.к. в процессе разработки у меня не было уверенности в удачном финале. У движка есть увесистые плюсы и минусы.

Cocos Creator 3 [1] - это китайский опенсорсный игровой движок, заточенный на разработку браузерных игр и интерактивных/игровых рекламных блоков. Он весьма популярен в Китае, и очень слабо известен в остальном мире.

Каково это, сделать игру на китайском движке Cocos Creator 3? Компьютерные игры, Инди, Gamedev, Cocos2d-x, Unity, Игровой движок, Веб-разработка, Разработка, Игры, Браузерные игры, Яндекс Игры, Длиннопост

Статистика использования игровых движков в играх на Стиме [2]

В статистике Стима их набралось 740 штук, что равно примерно 0,9%. В принципе это весьма солидно. Вероятно тут в статистике очень хорошо помогли китайские коллеги. Сюда входят и игры на прошлых версиях Кокоса, который довольно сильно отличается от текущей третьей. Есть немного даже и популярных игр.

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

1. Это полноценный рабочий инструмент, на котором уже другие люди смогли добиться хорошего результата.

2. Это китайский движок, он бесплатный, опенсорсный, и есть основания полагать, что он не станет вдруг банить/блокировать российских разработчиков. С Construct, Unity, Unreal Engine, Phaser и т.д. у меня сомнений по этому поводу несколько больше.

3. Он заточен на браузерные 2D игры/рекламу и в итоговом билде вес от самого движка минимален. У меня при поверхностной оптимизации получилось меньше 2 МБ.

4. Язык разработки - typescript/javascript, и нет блюпринтов.

5. Интерфейс слизан с Unity, и он довольно удобный.

Каково это, сделать игру на китайском движке Cocos Creator 3? Компьютерные игры, Инди, Gamedev, Cocos2d-x, Unity, Игровой движок, Веб-разработка, Разработка, Игры, Браузерные игры, Яндекс Игры, Длиннопост

Игра "Король гоблинов" в процессе разработки [3]

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

1. Маленькое англоязычное и русскоязычное сообщество. В китайских соцсетях всё очень хорошо. А в остальных не очень.
Есть туториал Флеппи Бёрда от самой команды Кокоса [4], что полезно, но разработка простого игрового процесса ооочень далека от разработки реальной игры. На их канале есть ещё туториал, но я не нашёл в нём чего-то дополнительно ценного.
Есть англоязычные уроки[5], которые хоть и для 2-ой версии, но зато сжатые и краткие без воды.
Есть русский туторила от Grozamir[6] - уроков у него немного, но зато он ещё ведёт группу в Телеграме, где я смог найти несколько решений для своих проблем.
Есть конечно ещё, но в процессе поиска Вы будете натыкаться на китайские туториалы, очень старые туториалы и онлайн-разработку. Если примеры для Вас важны - лучше выбирайте Unity или другие популярные.

Каково это, сделать игру на китайском движке Cocos Creator 3? Компьютерные игры, Инди, Gamedev, Cocos2d-x, Unity, Игровой движок, Веб-разработка, Разработка, Игры, Браузерные игры, Яндекс Игры, Длиннопост

Официальный гайд сохранения игровых данных [7] - лажа

2. Официальная документация неполная и иногда с ошибками. Простой пример. Вы захотите сохранять игровой процесс и попробуете воспользоваться официальным гайдом [7]. В реальности же, вы должны воспользоваться вот таким кодом: `window.localStorage.setItem('configData', JSON.stringify(configData))`. А всё дело в том, что гайд написан для версии Кокоса 2.x, а в третьем всё по другому. И неважно, что на этой странице гордо висит плашка - актуализировано пару недель назад.

Каково это, сделать игру на китайском движке Cocos Creator 3? Компьютерные игры, Инди, Gamedev, Cocos2d-x, Unity, Игровой движок, Веб-разработка, Разработка, Игры, Браузерные игры, Яндекс Игры, Длиннопост

Лишний пиксель - и пусть весь мир подождёт, пока ты будешь искать баг

3. Во время модерации на Яндекс-площадку была выявлена ошибка, что при некоторых разрешениях экрана появляется горизонтальная и вертикальная прокрутки. В любом браузере. Это было не очень весело, но удалось выявить причину. В игровом блоке id=GameDiv движок сам вычисляет ширину width=770px. Так вот, иногда ширина экрана оказывается равна 769.6px, а движок её округляет до 770. При этом родительский блок самой игровой площадки выделяет 769px на игру.

Мы получаем лишний пиксель, который создаёт горизонтальную прокрутку. Но т.к. горизонтальная прокрутка тоже занимает место, то из-за неё возникает и вертикальная прокрутка. Я это исправил костылём, добавив в шаблон билда Кокоса для тега body css свойство `overflow: hidden;`. Мне как-то казалось, что подобные проблемы не должны возникать в таких местах в игровых движках. Какая наивность.

4. Рынок труда. Он очень не очень для специалистов в Cocos Creator. Если Вы хотите работать в Геймдеве программистом, то найти хорошо оплачиваемую работу будет сложнее, чем с навыками в более популярных движках. Я работать в Геймдеве программистом не хочу, поэтому для меня этот пункт недостатком не является. Но для многих может.

О чём я не могу судить

1. Готовых ассетов немного, но я ими не пользуюсь, поэтому не принципиально.

2. 3D есть и игру в нём сделать можно. Не пробовал, но беглый взгляд со стороны указывает, что тут всё слабовато с 3D. Мне в 3D сейчас не хочется, поэтому тоже не принципиально.

3. Меня несколько пугает процесс сборки билда под Стим, т.к. по косвенным признакам лёгким этот процесс назвать нельзя. Официального шаблона или гайда я не нашёл, а это уже тревожный признак.

Каково это, сделать игру на китайском движке Cocos Creator 3? Компьютерные игры, Инди, Gamedev, Cocos2d-x, Unity, Игровой движок, Веб-разработка, Разработка, Игры, Браузерные игры, Яндекс Игры, Длиннопост

"Sort the court" оригинал Flash/Unity [8] и "Король гоблинов" мой на Cocos [3]

Как результат, я доделал и опубликовал игру на Яндекс-площадке. Это слямзенная версия старой флеш игры "Sort the court", но только про злых и циничных гоблинов. Улучшил игровой процесс в меру своих возможностей, сделав 7 концовок и сильно уменьшив повторяемость диалогов оригинала. Прошу попробовать. Надеюсь, что фатальных багов не обнаружится. (перевёрнутый дварф после казни и воскрешения не считается)

Выводы

Я пока и сам не уверен, стоит ли соло-разработчику работать с Кокосом. Есть плюсы, но и много минусов. Если минусы Unity Вас не волнуют, то вероятнее всего он будет оптимальным выбором. А может даже Godot или Unreal, если Вас зовёт дорога приключений.

Список источников

1. Cocos Creator 3

2. Статистика игровых движков на Стиме

3. Король гоблинов. Симулятор королевства на Яндекс-площадке

4. Туториал от Кокоса eng

5. Гайды на Кокос eng (v2)

6. Русские гайды на Кокос

7. Устаревшая документация save/load от Кокоса

8. Sort the court на itch_io

Показать полностью 5
17

Сделал свою версию Sort the court про гоблинов

Сделал свою версию Sort the court про гоблинов Игровые обзоры, Браузерные игры, Гоблины, Инди, Ролевые игры, Инди игра, Компьютерные игры, Flash, Adobe Flash Player, Вспоминая старые игры, Старые игры и мемы, Itchio, Яндекс Игры, Cocos2d-x, 2d игры, 2D

"Sort the court"[1] и "Король гоблинов"[2]

Некоторые суперстары помнят такую Flash игру, как "Sort the court". В ней ты управляешь своим королевством, отвечая на странные запросы (а чаще предъявы) своих подданных, да и вообще кого попало. Игра до сих пор доступна бесплатно в браузере на itchio [1].

Слямзив идею игрового процесса, добавив большее разнообразие персонажей и концовок, но потеряв анимацию монеток и города... Я сделал свою версию игры, но уже про злое и циничное королевство гоблинов. Она тоже доступно бесплатно, но на Яндексе [2].

Сделал свою версию Sort the court про гоблинов Игровые обзоры, Браузерные игры, Гоблины, Инди, Ролевые игры, Инди игра, Компьютерные игры, Flash, Adobe Flash Player, Вспоминая старые игры, Старые игры и мемы, Itchio, Яндекс Игры, Cocos2d-x, 2d игры, 2D

А это один из вариантов в судьбе короля

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

Сделал свою версию Sort the court про гоблинов Игровые обзоры, Браузерные игры, Гоблины, Инди, Ролевые игры, Инди игра, Компьютерные игры, Flash, Adobe Flash Player, Вспоминая старые игры, Старые игры и мемы, Itchio, Яндекс Игры, Cocos2d-x, 2d игры, 2D

Если тебе понравилась оригинальная игра, то понравится и эта. Неожиданно большая популярность тому доказательство. Но это неточно.
А если тебе кажется, что игру сделали на коленке за 5 минут, то я уверяю, что были задействованы обе коленки и понадобилось пол года на китайском движке Cocos Creator v3 [3].
Оценить результат можно в браузере в Яндекс-играх. Одну концовку можно получить примерно за пол часа в расслабленном режиме.

Список источников

1. Sort the court - игра на itch.io

2. Король гоблинов. Симулятор королевства

3. Cocos Creator v3

Показать полностью 2
46

Анализ шансов в настольных играх через эмуляции

Как вам игровая сессия с 1000+ ходами в обычной ходилке? А такое вполне реально. Попробуйте по превьюшке понять, о какой из 4 игр речь.
До этого я уже проанализировал одну немного бесячую настольную игру ходилку через эмуляции [1] [2]. В комментариях мне накидали кучу других запомнившихся игр с предложением и их потыкать. Ну вот я и потыкал. Для этого немного оптимизировал код эмулятора через javascript, чтобы он мог запускать по 100 миллионов игр. Скрипты выложены на гитхабе [3].

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

Вокруг света

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

В качестве механики большого отбрасывания (аналог чёрной дыры из прошлой статьи) я учитывал две позиции: 100->46, 107->37. А вот отбрасывание на начало 21->0 я не стал считать аналогом чёрной дыры, т.к. возврат на 21 ход примерно равнозначен обычным "стрелкам-назад". Статистика [4] вышла такая:

  • среднее число ходов 36;

  • максимальное число ходов 235;

  • минимальное число ходов 11;

  • число игр с попаданием хотя бы в одну отбрасывалку 54%, при этом игр с неравным числом попаданий в ловушки 43%;

  • вероятность проигрыша при более частом попадании в отбрасывалку 88%;

  • частота победы у первого игрока 50,85%.

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

График вероятности завершить игру за X ходов

Что интересного тут можно увидеть.
Плюсы:
- Красивая картинка, которую интересно разглядывать.
- Средняя длина игрового поля, очень долгая игровая сессия случается редко. Игра на 235 ходов случилась лишь однажды из 100 миллионов игр.
- Преимущество первого хода с 50,85% весьма небольшое.
Минусы:
- Мега отбрасывания, как всегда, подбешивают, но есть механика для камбека, так как оппонент сам может попасть в одну из двух ловушек у самого финиша.
- Если кого-то отбросило ловушкой чаще (что происходит с частотой 43%), то он проиграет с очень большой вероятностью: 88%.

Веселое путешествие

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

Здесь два отбрасывания в начало. При этом первая ловушка отбрасывает недалеко, поэтому её рассматривать как критическую я не стал. Поэтому ловушками я посчитал следующие комбинации: 63->0, 75->35. Статистика [5] вышла такая:

  • среднее число ходов 35;

  • максимальное число ходов 271;

  • минимальное число ходов 11;

  • число игр с попаданием хотя бы в одну отбрасывалку 50%, при этом игр с неравным числом попаданий в ловушки 41%;

  • вероятность проигрыша при более частом попадании в отбрасывалку 81%;

  • частота победы у первого игрока 50.78%.

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

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

Большое космическое путешествие (гребаный поезд)

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

Как подсказал, один из комментаторов AlexKoz1980, настоящее название этой игры - гребаный поезд. В качестве больших ловушек я считал за точки: 57, 70, 77, 88, 90. И судя по статистике такое название он полностью оправдывает [6].

  • среднее число ходов 102;

  • максимальное число ходов 1615;

  • минимальное число ходов 10;

  • число игр с попаданием хотя бы в одну отбрасывалку 92%, при этом игр с неравным числом попаданий в ловушки 70%;

  • вероятность проигрыша при более частом попадании в отбрасывалку 77%;

  • частота победы у первого игрока 50.14%.

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

Это самая несбалансированная игра из тех, что я видел. Помимо 5 самых опасных ловушек, тут есть ещё и мелкие ловушки, откатывающие на 1-2 этажа. Проблема в том, что после мелкой ловушки сбрасывается риск попадания в одну из опасных ловушек. И сохраняется он до самого конца. К 100-ому ходу становится уже неважно кто победит, лишь бы хоть кто-нибудь игру закончил.

Космос от шестилетнего ребенка с дедушкой

А дальше идёт ходилка "Космическое приключение с чёрными дырами и кротовыми норами", созданная под руководством ребёнка. Картинка немного доработана, чтобы появились числа на шагах и легенда к игре.

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

Весьма типичная особенность новичка - циклопических размеров игровая карта, аж на 509 шагов. По первости часто кажется, что чем больше тем лучше, но это почти всегда не так.

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

Эмуляция [7] на 100 миллионов игр дало следующие результаты:

  • среднее число ходов 35;

  • максимальное число ходов 232;

  • минимальное число ходов 3;

  • число игр с попаданием хотя бы в одну чёрную дыру 65%, при этом игр с неравным числом попаданий в чёрные дыры 57%;

  • вероятность проигрыша при более частом попадании в чёрную дыру 54%;

  • побед через кротовую нору 83,5%;

  • частота победы у первого игрока 50,48%.

Анализ шансов в настольных играх через эмуляции Настольные игры, Gamedev, Тестирование, Tabletop, Длиннопост

Что интересного тут можно увидеть.
Плюсы:
- Влияние чёрных дыр почти полностью нивелировано. 54% вероятности проиграть если ты попадал в чёрную дыру чаще оппонента - почти 50/50.
- Довольно часто игры заканчиваются до 20 ходов, быстрые игровые сессии это хорошо.
- Преимущество первого хода с 50,48% минимальное.
Минусы:
- Огромный путь в 509 шагов приводит к тому, что чаще всего игра очень сильно затягивается. Обычно это сильно утомляет. Рецепт простой - уменьшать карту до ~100 шагов и меньше.
- Победа почти всегда происходит за счёт попадания в кротовую нору. Поэтому, как вариант, следовало по максимуму использовать эту механику и многократно увеличить число кротовых нор при удалении от старта.

Заключение

Среди проверенных игр лишь гребаный поезд оказался сильно перекошенным. Остальные, на удивление, примерно одинаково проходятся за 35 ходов в среднем. Если вам известны другие безумные ходилки - скидывайте в комментариях. Если наберутся новые ещё более дикие, то я сделаю ещё подборку.

Источники

  1. GitHub. Javascript скрипты игровых эмуляторов.

  2. Насколько странный баланс в этой настолке с чёрной дырой на Хабре.

  3. Та же статья, но на Пикабу.

  4. GitHub. Анализ Вокруг света.

  5. GitHub. Веселое путешествие.

  6. GitHub. Гребаный поезд.

  7. GitHub. Анализ игры циклопических размеров с кротовыми норами.

Кто хочет нечто подобное не пропустить в будущем, подписывайтесь на автора (на меня то есть).

Показать полностью 9
82

Насколько дизморалящий баланс в этой настолке с чёрной дырой

(этот пост про настолку, но касается автоматизированного тестирования, что одинаково полезно и для видеоигр)
Появилась у меня с маленьким ребенком новая красивая настолка - классическая ходилка с одним кубиком. Симпатичная картинка, достаточная длина игровой сессии. И есть в этой игре странная особенность - чёрная дыра на 39 шаге (из 120), которая сразу отбрасывает игрока в самое начало. Давайте посчитаем насколько это странно. И мелкий совет в конце по расширению правил для возможного исправления.

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

В чем проблема?


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


В игре нет никакой механики камбека. Более того всегда есть заметная вероятность второй раз попасть на черную дыру. Уныние у такого игрока обеспечено.


Насколько проблема большая?


С ходу может показаться, что риск такого события всего лишь ~17% (1/6 для шестигранного кубика). Вроде терпимо. Но если подумать ещё, то окажется, что проверять надо не одного игрока, а двух, т.к. нас интересует интересность в игре обоих игроков. Ещё хуже если игроков больше одного. Но можно подумать ещё, и тогда окажется, что для одного игрока опасных бросков не один, а обычно больше (2, иногда 3). Например, игрок находится на расстоянии 6 от чёрной дыры, выпадает 2 и он вздыхает с облегчением, но зря, т.к. на следующий свой ход он опять в той же ситуации и фатальной для него теперь является четвёрка.


Рассчитать вероятность всего этого через теорию вероятности несколько проблематично. Зато можно заэмулировать и просто собраться статистику.

const bonusTurn = [7, 22, 55, 70, 77, 93, 104, 115];
const skipTurn = [13, 28, 46, 62, 85, 98, 110];


function main(gamesCount) {
let games = [];

for (i = 0; i < gamesCount; i++) {
games[i] = emulateGame();
}

//console.log(games);
let catchedGames = 0;
let catchedGamesUnfair = 0;
let catchedMoreLoseGames = 0;
for (i = 0; i < gamesCount; i++) {
if (games[i].p1Catched > 0 || games[i].p2Catched > 0) {
catchedGames++;
if (games[i].p1Catched != games[i].p2Catched) {
catchedGamesUnfair++;
}
}

if (games[i].p1Catched > games[i].p2Catched && games[i].winner == 'p2') {
catchedMoreLoseGames++;
} else if (games[i].p1Catched < games[i].p2Catched && games[i].winner == 'p1') {
catchedMoreLoseGames++;
}
}

console.log('Count of games: ' + gamesCount);
console.log('Percent of games with black hole: ' + Math.round(100*catchedGames/gamesCount) + '%');
console.log('Percent of unfair games with black hole: ' + Math.round(100*catchedGamesUnfair/gamesCount) + '%');
console.log('If go to black hole more then lose: ' + Math.round(100*catchedMoreLoseGames/catchedGamesUnfair) + '%');
}


function emulateGame() {
let game = {
'p1': 0,
'p2': 0,
'winner': null,
'p1Catched': 0,
'p2Catched': 0,
'turn': 0
}

while(true) {
game.turn++;

game.p1 += getDice();
game = checkMove(game, 'p1');

if (game.p1 >= 120) {
game.winner = 'p1';
break;
}

game.p2 += getDice();
game = checkMove(game, 'p2');

if (game.p2 >= 120) {
game.winner = 'p2';
break;
}
}

return game;
}


function checkMove(game, player) {
let anotherPlayer = 'p1';
if (player == anotherPlayer) {
anotherPlayer = 'p2';
}

if (bonusTurn.indexOf(game[player]) !== -1) {
game[player] += getDice();
game = checkMove(game, player);
}

if (skipTurn.indexOf(game[player]) !== -1) {
game[anotherPlayer] += getDice();
game = checkMove(game, anotherPlayer);
}

if (game[player] == 39) {
game[player] = 0;
game[player + 'Catched']++;
}

if (game[player] == 4) {
game[player] = 8;
}

if (game[player] == 23) {
game[player] = 9;
}

if (game[player] == 24) {
game[player] = 34;
}

if (game[player] == 30) {
game[player] = 20;
}

if (game[player] == 42) {
game[player] = 52;
}

if (game[player] == 60) {
game[player] = 50;
}

if (game[player] == 65) {
game[player] = 74;
}

if (game[player] == 79) {
game[player] = 88;
}

if (game[player] == 101) {
game[player] = 91;
}

if (game[player] == 107) {
game[player] = 112;
}

return game;
}


function getDice() {
return Math.floor(Math.random() * 6 + 1);
}


main(1000000);


Все оформление кода безнадежно поломалось, кому нужен javascript, можете посмотреть его в хабровской статье из моего профиля со списком: https://habr.com/ru/users/qnok/posts/

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

Для запуска подойдет любое окно браузера, F12, console, copy-paste

Итого, при эмуляции одного миллиона игр мы получаем такую статистику:
1) Вероятность того, что хоть кто-нибудь хотя бы раз попадет в черную дыру: 50% (!!!);
2) Вероятность того, что игра будет несправедливой, когда у кого-то будет больше попаданий в черную дыру, чем у оппонента: 45%;
3) Вероятность того, что игрок с большим попаданием в чёрную дыру проиграет: 92%.


А что можно сделать?


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


Заключение


Вероятность попадания в черную дыру на 50% меня весьма удивила, я ожидал поменьше. Не менее удивительны целых 8% победы даже в случае чёрной дыры. Вот они когнитивные искажения.
А вот гейм-дизайнерам, я считаю, нужно всё же тестировать свои собственные игры получше. Анализ "на глазок" может подложить подобную свинью. Данная механика приносит почти всегда только разочарование и 8% на "победу вопреки" того не стоит. Особенно в игре, где это "вопреки" происходит исключительно по воле случая.

Показать полностью 2
125

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре

В тактических играх ИИ очень важен. Если ИИ видится как «искусственный идиот», то игру может спасти потрясающий мультиплеер, сюжет, атмосфера и графика (это неточно). Решение очевидное: делай хороший ИИ, в чём тут могут быть проблемы?

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

В деталях. Ниже описаны мои шаги по конструированию сильного ИИ с характером. Не супер сильного [1], но способного быстро отработать локально в прожорливом браузере любого средне-слабого ПК. Мною применён подход экспертных систем с использованием набора эвристик и мутаций. Описаны 15 шагов постепенного преображения ИИ, каждый из шагов можно пощупать.

Краткое описание


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


Например, генерируются три стратегии:


1. Бежать оголтело всем вперед и атаковать всех, кто подвернётся под руку. Очки итогового состояния: 37000 баллов.

2. Атаковать лучниками с безопасного расстояния, а остальные прячутся по углам. 45000 баллов.

3. Всем отступить, сгруппироваться и попрятаться от врагов. Если можно при этом ранить какого-нибудь врага с безопасного расстояния, то атаковать. 18000 баллов.

В этом случае будет выбрана 2-я стратегия.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Ну вроде всё стандартно. Не совсем.


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


Правила игры


У игрока и у ИИ изначально по углам выдаются по 6 одинаковых юнитов. Каждая команда ходит по очереди всеми юнитами сразу. Варианты хода каждого юнита:

- пропустить ход;

- передвинуться и пропустить;

- передвинуться и атаковать (можно и иногда нужно атаковать своих).


Игровое поле и состав команды генерируется процедурно (то есть случайно, но с проверками на проходимость и приемлемую «тактичность»). Типы юнитов:

1. Боец F, юнит ближнего боя с самой большой живучестью, уроном и мобильностью. Эдакий танк+дамагер.

2. Лучник A, самый низкий урон, зато атака на расстоянии 1-7 по прямой линии.

3. Колдун W, умирает с одного удара бойца, зато атака на расстоянии 1-5 по прямой линии насквозь по всем юнитам.


Игровое поле всегда размером 10*10.


Возможные поля на карте:

- Земля — не накладывает никаких ограничений.

- Стена — через неё нельзя ни прострелить, ни пройти.

- Вода — через неё нельзя пройти, но через неё может стрелять лучник (огненный маг не может).

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Игра полностью детерминирована, то есть в ней нет элемента случайности (шанс попадания 100%, никаких критических уронов и т.п.). Также это игра с полной информацией, то есть соперники всё знают о состоянии войск друг друга в любой момент времени. Как в шашках.


ИИ сильнее мясного игрока, но у последнего на первом уровне есть фора в виде одного юнита. На 3-ем у игрока наоборот хандикап в одного юнита и победить гораздо сложнее (у меня около 15% побед на этом этапе). Затем идёт более рандомная версия Игра+.


Изначально был разработан другой план игры в виде «качелей» как в турнирной таблице, но в конце разработки я отказался от него, как от слабомотивирующего. Смысл был в том, что если какая-то команда проигрывает, то на следующей карте ей даётся +1 юнит, и так максимум до 10 против 6. Если и потом команда умудрялась проиграть, то её юнитам увеличивались характеристики.


Игра разработана на нативном javascript: на div-ах и css-стилях, и это было самое неудачное решение из возможных [2]. Это браузерная игра. Движок не использовался. Единственная цель проекта — создать сильного компьютерного игрока «с характером» и возможностью изменения этого характера (расчетливые киборги, агрессивные орки, коварные эльфы, глупые зомби).


Для уменьшения «компьютерного стиля» у противника были применены некоторые хитрости:

- Игрок после своего хода не ждёт, пока ИИ подумает над своим ходом. Враг «сразу» начинает делать свои передвижения (в действительности это иллюзия).

- Компьютерный игрок управляет юнитами тоже с помощью своего курсора (и это тоже иллюзия, курсор просто летает одновременно с анимациями юнитов).

- ИИ умеет использовать коварные приманки, чтобы навязать бой (тут всё по-честному).


И что тут сложного?


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

Полный перебор невозможен из-за эффекта комбинаторного взрыва [3], который заключается в том, что по мере роста числа проверяемых элементов в сценариях сложность вычислений растет по экспоненте. Далее опишу, что это значит в моей конкретной игре.


Во-первых, т.к. на каждом ходу юниты команды ходят все сразу, то возможна разная их очередность. А при 6 юнитах в команде таких комбинаций становится 720 (1*2*3*4*5*6). Если юнитов будет больше, то комбинаций будет вообще огромное количество (при 7 — 5040, при 8 — 40320...). Если не учитывать максимального исхода, то игрок рискует распробовать удовольствие в ожидании очередного хода на 5-10 минут (а если он упорный, то задержка дорастёт и до миллионов лет, не каждый вытерпит). Именно из-за этой характеристики мой ИИ в начале боя менее эффективен, чем в конце. Ведь ближе к концу половина команды уже погибла.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Во-вторых, каждый юнит может передвинуться в разные точки карты. Бойцы с дальностью передвижения 4 могут походить на 1-41 разных позиций. У магов и лучников с их передвижением в 3 возможное число ходов равно 1-25. Например, состав команды может быть: 4 бойца, 1 маг и 1 лучник. Итого разных комбинаций ходов по данному пункту мы получаем: 41*41*41*41*25*25 = 1766100625. В действительности из-за взаимных пересечений и непроходимой местности комбинаций будет меньше, но в редкой ситуации «разбегания по карте» число комбинаций будет приближаться к этому числу.


В-третьих, каждый юнит после передвижения может пропустить ход или атаковать в одном из 4 направлений. То есть имеем по 5 возможных завершающих действий на юнита. Всего комбинаций: 5^6 = 15625.


Итого комбинаций: 720 * 1766100625 * 15625 = 19868632031250000.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

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


Как же сделано?


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

1. Сгенерировать разные сценарии на основе заранее прописанных стратегий (~20 штук).

2. Пока есть время, проводить мутации сценариев, оставляя наиболее выгодные.

3. В конце выбрать сценарий с наибольшей оценкой.

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

5. Повторить для оставшихся юнитов с пункта 1.


Эвристический метод — это метод, который может сработать (по Макконнеллу [4]). Подробнее и строже в Википедии [5].


Ключевые моменты в этом алгоритме: генерация сценариев, мутации и правильная оценка выгодности состояния. В каждом из этих пунктов используются свои собственные локальные эвристики. Тем не менее, там где можно, использовались алгоритмы с гарантированным оптимальным результатом, например, А* для поиска пути [6].


Использованный мною эволюционный подход нельзя назвать полноценным генетическим [7], т.к. от него я использовал только мутации и выживание «сильнейшего», а коэффициенты влияния отдельных эвристик настраивал вручную. Алгоритмов формирования популяций и скрещиваний не применялось. После мутации выживает только один: либо мутант, либо родитель.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Нейронные сети [8] мною не использовались из-за особенностей задачи. Во-первых, из-за сложности их успешной реализации в условиях постоянно меняющейся среды (появление новых механик, навыков, способностей). Во-вторых, из-за сложности в их контролируемой персонализации (если захочется сделать два поведения: стремительного Суворова и осторожного Кутузова [9]).


Эволюция искусственного идиота в искусственный интеллект


0) Сначала у ИИ были введены только 3 стратегии со случайными ходами. {Сложность игры #0}. Оценка состояния была просто случайным числом. И так как ИИ не единственный элемент разработки, мне пришлось довольно долгое время мириться с поведением сумасшедших рыбок.


1) Затем в расчёты оценки стратегии были добавлены проверки оставшихся юнитов и их жизней у ИИ и у игрока. {Сложность игры #10}. За мертвого юнита команде начислялось 0 баллов. За полностью здорового Х баллов (например, 100 000 за бойца F, 70 000 за лучника A, 85 000 за колдуна W). За раненого начислялись 50% от основной ценности, а оставшиеся 50% пропорционально оставшимся жизням от максимальных. Благодаря этому ИИ было выгоднее добивать врагов, а если он мог только ранить, то он выбирал противников с меньшим числом жизней — более уязвимых.


Случайные ходы стали более осмысленными — ИИ иногда давал сдачи.


2) Затем была добавлена более осмысленная стартовая стратегия:

max_agro — все солдаты бежали максимально ближе к врагам и старались нанести как можно больше урона. {Сложность игры #20}. Одна стратегия использовала изначальный порядок ходов юнита, вторая ходила ими в обратном порядке.


ИИ стал вести себя так, как ведёт себя самый примитивный искусственный идиот в тактических играх. И довольно часто именно такой ИИ в тактических играх и используется. Он популярен из-за своей надежности и простоты. Такой даже может победить — но очень редко.


Именно на это похоже поведение ИИ в провальной игре Master of Monsters – Disciples of Gaia, из-за чего в неё банально скучно играть [10].

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

3) Дальше были добавлены стратегии, учитывающие возможный урон от врагов при передвижениях, и выбирающие те ходы, которые приводили к наименьшей опасности — желательно нулевой. {Сложность игры #30}. И ИИ сразу же стал сверх трусливым, избегающим любой близости с противником — лучше уж сбежать, чем атаковать и ранить, ведь противник может дать большей сдачи!


Поэтому в оценке состояний стал тоже учитываться возможный урон врагу. Штрафные баллы от потенциального урона от врагов стали вычисляться с уменьшающим коэффициентом 0.20 (коэффициент постоянно перенастраивался). Это заставляло ИИ при выборе между атакой или бегством избирать агрессивный вариант, поскольку он приносил в 5 раз больше баллов, чем бегство. Но ИИ всё равно надолго остался трусливым, ведь чтобы попасть в такую ситуацию выбора, враг уже должен быть в досягаемости, а сам ИИ при таких оценках никогда не подставит себя первым под удар. То есть не пойдёт на сближение. Конечно, игрок будет чувствовать себя обманутым, ведь у ИИ бесконечный запас терпения и он может убегать от опасности вечно, вынуждая игрока к агрессии.


Следует отметить, что подобные вычисления возможного урона очень длительны без использования кэша. Один полный просчёт стратегии без оптимизаций изначально занимал 700 миллисекунд. А у меня ведь ограничение на весь ход одним юнитом ~4000 мс! После оптимизаций и отработавших кэшей это время уменьшается до 20 миллисекунд при очень похожих стратегиях (к сожалению кэш невозможно просчитать весь заранее из-за эффекта комбинаторного взрыва, поэтому 20 мс достигаются не всегда).


Поэтому когда я внедрял технологию расчета с прогнозированием на несколько ходов вперёд, то время расчетов для глубины только в 2 хода (врага и ИИ) занимало уже +700 миллисекунд. В этом случае применяют оптимизацию с отсечением «слабых» веток. Если для этого пользоваться хоты бы примитивной стратегией max_agro, то увеличение времени было +30 миллисекунд и кэширование эту разницу почти не уменьшало (т.к. позиция на карте была совершенно новой).


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


4) Следующие стратегии были направлены на расширение изначального разнообразия стратегий:

far_attack_and_hide — юниты стараются атаковать как можно дальше от противника, а если не атакуют, то прячутся от любой атаки.


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

{Сложность игры #40}.


Это улучшило процесс самого боя, но начало боя все равно было всегда невыгодно для ИИ: он постоянно отступал, но его можно было выманить на атаку и спугнуть так, чтобы группа ИИ разделилась на несколько мелких групп, которые можно было уничтожить по отдельности.


5) Затем настало время мутаций. {Сложность игры #50}.

Алгоритм мутаций был очень простой:

- при переборе выбранных стратегий создавалась одна копия стратегии;

- в этой копии производилась мутация хода;

- если ход становился невалидным, то он исправлялся до хоть какого-нибудь валидного по одной из стандартных стратегий;

- вычислялись баллы мутировавшей стратегии;

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


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


Сначала был реализован самый примитивный тип мутации: от 1 до 3 движений заменялись на случайные, порядок ходов оставался прежним. За одну итерацию расчетов в среднем на каждую стратегию создавалось ~5-15 мутаций. При этом в среднем каждая пятая мутация была более выгодной и заменяла стратегию родителя.


6) Эвристика приманки. {Сложность игры #60}.

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


Для этого в функции вычисления баллов за состояние стратегии проверяется, соответствует ли текущее состояние ситуации приманки:

- Только один солдат ИИ может быть атакован;

- Только один враг может атаковать вылезшего юнита;

- Юнит компьютерного игрока после этой атаки обязательно должен выжить;

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


Эффект оказался отличным: игроку становится легче начинать бой самому. При этом чаще всего игроку всё равно выгоднее «повестись» на эту приманку, так как после ответной атаки он сможет навалиться на ИИ всем своим отрядом (это если он разумно сгруппируется предварительно). А там уже всё решат грамотные локальные тактические решения.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

7) Потом мне стало бросаться в глаза, что бойцы ИИ постоянно разбегаются как тараканы. {Сложность игры #70}. Также солдаты могли забиться в угол или зайти в тесные тоннели, в которых ИИ сильно терял в своей эффективности перебора возможных атак.

Поэтому в оценочную функцию были добавлены эвристики оценки расстояний между юнитами и рельефа карты со следующими предположениями:


- Чем ближе союзники друг к другу «в среднем» — тем лучше (юниты реже стали разбегаться по разным частям карты).

- Чем ближе солдаты ИИ к в солдатам врага «в среднем» — тем лучше (мне нужен был наступательный ИИ).

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

- Если солдат ИИ не может добежать и атаковать врага как минимум за 2 хода, то его надо штрафовать (это заставляет его наступать, но не подставляться самому под атаку).

- Если в радиусе 2 шага от солдата слишком много блокирующих позиций, то штрафовать его (реже стали забегать в тоннели).

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


8) Затем пришло время расширения стратегий. {Сложность игры #80}. Я не мог добавить полный перебор возможного порядка ходов юнитов, но я мог сделать перебор их ходов по типам: боец, лучник, колдун. Поэтому появились стратегии последовательности ходов, вида W_A_F: сначала ходят все колдуны, потом все лучники, потом все бойцы.


Таким образом добавилось 6 новых стратегий: W_A_F, W_F_A, A_W_F, A_F_W, F_A_W, F_W_A. Они не решили всех проблем, но заметно улучшили качество игры.


9) У меня были мутации, но толку от них было мало. {Сложность игры #90}. В основном они улучшали слабые стратегии, а удачные улучшались редко. Поэтому мутации были доработаны и каждый раз срабатывал один из случайных типов мутации:

- От 1 до 3 движений заменялись на случайные, порядок ходов оставался прежним (старый способ);

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

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


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


10) Затем были добавлены еще полуслучайные стратегии. {Сложность игры #100}. Порядок ходов генерировался случайно, а сами ходы выбирались по следующим принципам (по уменьшению их важности):

- нанести максимальный урон;

- получить как можно меньший урон в ответ;

- стать как можно ближе к врагам.


Заметного улучшения тут я не увидел, но проект уже перешел в ту стадию, когда каждое улучшение приводит к менее заметным воспроизводимым эффектам.


11) Мне надоели вопиющие ошибки ИИ, когда он при атаке своим колдуном сильно задевал моих солдат, но при этом ранил своих союзников. {Сложность игры #110}. Хотя перед этим он вообще-то мог походить ими и убрать их с линии огня. Поэтому была создана жёстко сгенерированная стратегия с ручными проверками:


- если есть колдун, то найти место, откуда он нанесет максимальный урон;

- если в этом месте или по пути удара есть союзники — запомнить их;

- сначала ходят все союзники, которых запомнили, и они не могут становиться на зарезервированные колдуном позиции (то есть освобождают дорогу);

- ходит колдун;

- ходят оставшиеся юниты.


Стратегия легко описывается на словах, но заморочно для её программирования.


12) Иногда юниты "убегали в кусты" прямо перед началом боевых действий. {Сложность игры #120}. В результате этого, когда начинался обмен атаками, то один или даже два юнита могли оказаться слишком далеко от военных действий и не помогали союзникам. Если это случалось, то я почти гарантированно выигрывал у ИИ. Если не случалось, то я чаще проигрывал. Избавлялся от этого я вводом новой эвристики по оценке результирующих баллов у стратегии. Для каждого юнита проводилась проверка:


1. Если юнит в этот ход атаковал, то он получал +1500 баллов.

2. Если не атаковал, то подсчитывались позиции, с которых враги смогут наносить урон союзникам. Продолжать подсчет, если таких позиций будет больше 0 (N > 0).

2.1. Если юнит не может достать и ударить ни по одной позиции (n = 0), то он получает штраф -1000 баллов.

2.2. Если юнит может достать до всех позиций, то он получает +1200 баллов.

2.3. Если юнит может атаковать до некоторых позиций, то он получает +(n/N)*1000 баллов.


Это позволило сильно улучшить «сплоченность» юнитов ИИ. К сожалению, начали появляться случаи «одного дезертира», когда в проигрышной ситуации один из раненых юнитов предпочитал прятаться за спинами своих товарищей вместо того, чтобы внести свою лепту, атаковав врага. Это нелепо выглядело, когда у компьютера остаётся всего 2 юнита, а у игрока 3 или даже больше. Дополнительная исправляющая эвристика представляет собой следующее правило:


IF ("у ИИ меньше юнитов, чем у противника" AND "у ИИ не больше 3 юнитов")
THEN "за каждого дезертира начислить сценарию штрафные баллы"

13) Под конец ввода стратегий их набралось уже под 25 штук. {Сложность игры #130}.


Мутировать каждую из них стало уж слишком накладно. Поэтому было принято решение удалять самые неудачные и оставлять только 8 штук. С самого начала я не хотел использовать этот подход в расчете на то, что мутация аутсайдеров может привести к неожиданному отличному результату, вместо простого хорошего. Ввод данной обработки в итоге привел к улучшению игры ИИ.


14) Примерно в начале была ещё интересная доработка. Изначально оценка ценности сценария вычислялась как разница сумм баллов:


Итоговые_баллы = Баллы_ИИ - Баллы_игрока

Но спустя несколько улучшений я вспомнил, что это не самое лучшее решение, т.к. тогда для ИИ будут одинаковыми ситуации «2 солдата против 1 одного солдата» и «4 солдата против 3 солдат». Поэтому баллы стали вычисляться как отношение:


Итоговые_баллы = Баллы_ИИ / Баллы_игрока

Изменение небольшое, а результат очень серьезный. Без доработки цена ошибки при повышенном риске всегда была одинакова. После доработки ИИ стал меньше безалаберно рисковать к концу сражения, и это заметно усилило его.


Хочу отметить, что все эти доработки вводились постепенно хоть и в указанном порядке, но многие из них улучшались, перерабатывались и исправлялись от багов в более хаотическом порядке. Реальных итераций было больше 100 штук.


Вот как играет финальный ИИ {Сложность игры #9999}:

ИИ ходит сразу, а не тратит время на раздумья


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


Основная технология быстрого хода — это предварительные вычисления во время простоя. Этот метод заключается в том, чтобы разбить процесс хода на 2 части: сами вычисления и показ анимаций результатов вычислений:


- вычисления хода первого юнита начинаются сразу же после хода игрока, пока еще вылетает окошко, что сейчас начнётся ход противника. А это целых 4 секунды, которые игроком не воспринимаются пустым ожиданием;

- вычисления второго и последующего ходов начинаются тогда, когда только начинается анимация хода прошлого юнита (то есть когда курсор ИИ только начинается своё движение). А время всех анимаций уже 4.5 секунды. Хотя правильнее это назвать не вычислением следующего хода, а улучшением уже выработанной прошлой стратегии и поиска новой, т.к. на каждой итерации рассчитываются ходы всей команды;

- при анимации ходов ИИ к двигающимся юнитам летает курсор ИИ, который притворяется, что он по ним кликает. Курсор летает максимально быстро, но чтобы оставалась комфортность слежения за ним. Более того, добавление курсора не только позволило увеличить запас времени вычислений с 2 секунд до 4.5, но и сделал просмотр хода компьютера более комфортным для человека;

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


Чтобы всё это не лагало в браузере и работало с достаточно стабильным FPS, расчёты производятся асинхронно воркером (Web workers) [11].


Этим я хотел избавиться от раздражающего окошка ожидания «Компьютер ходит». Такая неприятная плашка есть во многих хороших играх, например, в Xenonauts [12]. Я считаю, что мне удалось справиться с этой проблемой.

Разработка искусственного интеллекта из искусственного идиота в пошаговой тактической игре Игры, Компьютерные игры, Разработка, Искусственный интеллект, Gamedev, Мобильные игры, Браузерные игры, Гифка, Видео, Длиннопост

Таким образом, ИИ тратит на обдумывание своего хода всегда одинаковое время — независимо от его сложности. Очень любопытная особенность этого подхода в том, что чем сильнее у игрока компьютер, тем большее число мутаций ИИ успеет перебрать, а значит будет тем сильнее, чем мощнее компьютер игрока. Я сначала убрал данный эффект с помощью фиксации времени хода и предварительного подсчета скорости работы компьютера. Однако потом я убрал эту фиксацию, т.к. владельцам мощных компьютеров это позволит сразиться со «своим» компьютером, а не усреднённым.

Каков результат и в чём недостатки


Таким образом, получившийся компьютерный противник умеет достойно сражаться и хорошо пользуется любыми оплошностями игрока, а своих делает не слишком много. Тем не менее, я, зная все особенности его работы, хоть и с напряжением, но побеждаю его почти всегда (при равных условиях). А хотелось бы наоборот: чтобы даже зная о его особенностях, почти всегда ему проигрывать. ИИ далёк от идеала, поскольку используемый мною набор эвристик приводит к синергетическому наложению «ошибок моего восприятия» друг на друга. Вот эти ошибки:


1. Несовершенство и неполнота моей собственной стратегии, я не знаю всех наилучших стратегий, и поэтому не могу их обозначить и внедрить в игру.

2. Потеря эффективности (которая итак не идеальна) выработанных рабочих эвристик при переносе их на программный код. Например, моя человеческая эвристика «Юниты держатся рядом, но не слишком близко, чтобы избегать двойного урона от магов и не застрять в узких проходах». Эта эвристика помогает мне побеждать ИИ, но при обучении ею моего компьютерного оппонента, мне приходится качественное описание переводить в алгоритмическое с количественными оценками, и тут возможна потеря данных.

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

4. Жесткие временные ограничения и пошаговые улучшения выбранных стратегий приводят к тому, что первый ход всегда будет менее продуман. Это значит, что один неудачный первый ход может заблокировать очевидные более эффективные ходы остальных юнитов команды. Это выражается в том, что первый боец F вместо отхода может криво атаковать противника и потом его союзнику волшебнику W придётся ранить своего, чтобы добить противника.


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


Дополнительные возможности


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


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

2. Действительно интеллектуальные уровни сложности. Сейчас в основном уровень сложности определяет то, какие бонусы компьютерный игрок получит в качестве ресурсов (больше золота на старте или бонус в добыче) или как сильно его солдаты будут бить (+50% к урону). Это работает, но можно ведь сделать ИИ чуть менее умным просто постепенным отключением некоторых эвристик по мере уменьшения сложности.

3. В продолжении 2-го пункта можно создавать и разные расы/фракции компьютерных противников: у орков работают только агрессивные стратегии; у толп зомби только примитивные «бежать вперед и атаковать»; а у киборгов использовать всю мощь ИИ. Благодаря этому игроку перед нападением придётся оценивать не только числа у противников, но и их интеллектуальность.


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


Где пощупать


Вы можете протестировать силу этого ИИ в браузерке «AI tactical rumble. Test subject» бесплатно на площадках типа itch.io [13]. GET параметр ai (значения от 0 до 140 с шагом 10) позволит снизить сложность ИИ.


По моим ожиданиям победить ИИ на равных условиях Вам будет очень и очень сложно. Даже после привыкания к правилам игры. Я рекомендую рассматривать данную игру, как прототип, каковым она по сути и является (музыки, звуков и цены в ней нет).


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


Список литературы


1. DeepMind — статьи на Хабре.

2. HTML5 games: Canvas vs. SVG vs. div на stackoverflow.

3. Комбинаторный взрыв — Википедия.

4. Совершенный код Стива Макконнелла — Хабр.

5. Эвристические методы — Википедия.

6. A* — Red Blob Games.

7. Генетический алгоритм. Просто о сложном — Хабр.

8. Восемь потрясающих игр с искусственным интеллектом от компании Google — Хабр.

9. Очень кратко о Суворове и Кутузове.

10. Master of Monsters – Disciples of Gaia — обзор на IGN.

11. A Detailed Explanation of JavaScript Game Loops and Timing.

12. Xenonauts и долгий экран ожидания ИИ.

13. AI tactical rumble. Test subject — на itch.io.

Показать полностью 8 1
37

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots

В данной статье я приведу пример составления дизайн-документа для разработки игры в формате десятистраничника. В начале будет приведён общий шаблон документа, предлагаемый Скотом Роджерсом в его книге «Level up. The guid to great video game design» [1].


Затем будет выложен мой пример этого документа на игру War Robots от компании Pixonic, публикующейся на Хабре [2]. (тут требуется оговорка, что данная статья и диздок не связаны с Pixonic: не выражает их мнения и взглядов; не оплачивалась ими; и они даже не знали о написании данного материала)

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Это тот самый десятистраничник в миниатюре. Удобочитаемый формат в самой статье

Содержание

1. Что это такое

2. Шаблон десятистраничника от Скота

3. Десятистраничник (пример) на новый режим War Robots

Ссылки на источники

1. Что это такое

Десятистраничник — это дизайн-документ ограниченный 10 страницами. Этот документ должен быть максимально интересен целевой аудитории без излишних подробностей реализации. Целевая аудитория может быть разная, поэтому и документ этот может отличаться в зависимости от конечных пользователей:

- Для издателя. Желательно с увлекательными концептами, текст в форме чеклистов, яркие и описательные примеры, среди указываемых конкурентов и вдохновителей использовать новые успешные игры.

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


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


Это очень важно — данный документ должно быть интересно читать. Если мой пример был Вам не интересен, то значит с Вами я свою задачу по составлению документа не выполнил и так делать не надо. Скучные и сверхподробные описания оставляйте на полный дизайн-документ (хотя и там скучные материалы нужно стараться делать поинтереснее).

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Скот Роджерс в меру известен не только тем, что смог написать и опубликовать книгу. Он был ответственен за геймдизайн первой God of War. Скот работал геймдизайнером [3] в компаниях Namco, Capcom, Sony Santa Monica и на момент написания книги был креативным директором в издательстве THQ [4]. Подробнее о его крутой книге я напишу в следующей статьей после её доработки, а здесь подробнее остановлюсь только на одном разделе про диздоки.

2. Шаблон десятистраничника от Скота


Страница 1.

Общая информация:

- Название

- Платформы

- Возраст целевой аудитории

- Возрастной рейтинг

- Планируемая дата публикации / издания

- Конкуренты и вдохновители

- Титульная картинка, концепт арт

- Контактные данные


Вот пример такой страницы от Скота Роджерса [1]:

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Страница 2.

Краткое описание сюжета: начало; середина; концовка. Всего несколько параграфов.

Игровой процесс / поток. Например, Лара Крофт: 3Д игра-платформер, где Лара — археолог, путешествует по храмам в джунглях и пустынях в поисках древнего артефакта, который поможет ей найти следы её потерявшейся матери. Это описание содержит много информации — кто герой, какой вид камеры, жанр игры, где происходят события, цели игрока.


Описание списка локаций и особенности геймплея в них. Какие преграды будут у игрока и как он их будет преодолевать? Как работает система развития и наград? Как развивается игрок по мере развития преград? Как геймплей завязан на историях? Как происходит переход между уровнями? Решением пазлов или победой над боссами? Какое условие победы в игре? Спасти мир? Найти клад? Собрать 100 монеток? Убить всех врагов?


Ключевая цель — провести читателя через весь игровой опыт игрока от начала до конца.


Страница 3.

Детальное описание персонажа. Нужны только те подробности, которые влияют на сюжет, геймплей или атмосферу. Если группа крови ни на что не влияет — не писать об этом. Концепт арт персонажа очень помогает на этом этапе. Как он выглядит?


Предыстория, прошлое героя. Как он оказался в текущем затруднительном положении? Как он реагирует на сложности и решает их, какой его типаж? Например, Кратос из Бога Войны «брутален», и это отражается на всех его поступках в игре, даже как открывает сундуки. Как особенности героя влияют на его навыки и боевые умения? Какое у него соответствующее снаряжение? Можно проиллюстрировать картинкой карту управления персонажем.


Страница 4.

Геймплей. Нужно описать процесс игры с точки зрения жанра.

Состоит ли игра из кучки уровней или определённых глав? Какие у игры фишки и особенные суперкрутые уровни и задания? Все наиболее прикольные фишки игры должны как можно сильнее заинтересовать читателя. Здесь полезны диаграммы и концепт арты для иллюстрации особенно сложно описываемых элементов. Также надо описать технические ограничения и особенности использования платформы, чтобы читатель мог понять для каких систем эта игра будет подходить. Есть ли в игре мультиплеер? Чем должна управляться?


Страница 5.

Игровой мир. Описания и изображения мира. Список локаций. Краткие описания, что игрок в этих локациях найдёт. Какое настроение будет передаваться в каждой локации? Какая музыка будет использоваться? Как локации будут соединены между собой и с игроком? Будет уместна простая карта или диаграмма переходов с локациями.


Страница 6.

Игровой опыт. Как обеспечивается гештальт в игре (Целостность + завершённость)?

Что игрок видит первым при старте? Какие эмоции и настроение должна создавать игра? Как музыка и звуки способствуют нужной атмосфере? Как базовая навигация в игре?


Страница 7.

Игровая механика.

Примеры механик (средства взаимодействия персонажа с миром): двигающиеся платформы; закрывающиеся двери; скользкий лёд; качающиеся канаты.

Опасности и ловушки — средства, которые мешают игроку и могут его убить, но при этом не обладают интеллектом: шипы; лава; пропасть; качающиеся лезвия; электрические поля. На данном уровне документации достаточно описать 3 таких опасности для примера.


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

Коллекционные предметы — предметы, которые не оказывают немедленного влияния на игру. Это могут быть кусочки пазла, трофеи, скрытые монетки. Даёт ли их полный сбор бонусы в игре? Или открывают ачивку или секретные игровые режимы, или уровни? Или это редкая специфическая валюта для особых магазинов? А может просто для максимального количества очков?

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Продаваемая экипировка в экспонатной игре Скота [1]


Если есть экономическая система, то её тоже надо описать в общих чертах. Можно добавить краткое описание способа работы магазинов в игре (только продают, или могут ещё выкупать обратно барахло игрока и т.п.).


Страница 8.

Враги. Это опасности с искусственным интеллектом. Каких врагов встречает игрок, чем они уникальны? Как игрок сможет бороться с ними?


Боссы. В каких локациях они появляются? Как игрок должен их побеждать? В чем их фишка? Что игрок получит за победу над боссом? Концепт арты боссов будут также к месту. Например, для ММО-качалки доступ к бою с боссом нужно заслужить лояльностью к игре: Заходить 5 дней подряд в игру и выполнять определённое действие (хотя бы одно сражение) и тогда на 6 день он получает возможность сразиться со сложным боссом.

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


Страница 9.

Сюжетные ролики. Они есть в игре? Как они будут показываться? Видеоролики, флэш анимация, внутриигровые сцены на движке игры, слайдами с картинками. Когда они будут показываться? (между уровнями, в процессе игры). Для отсылок можно упомянуть примеры из фильмов.


Страница 10.

Бонусные материалы. Что убедит игрока продолжить игру после победы? Открытие нового режима или Игра+. Или игра в мультиплеере. Или скачиваемый контент. Или эпизодический контент и спец-события.


Сюда же входят дополнительные ДЛС и обновления. Можно указать планируемое время поддержки игры после релиза.



3. Десятистраничник на новый режим War Robots «Кооперативные битвы с боссами / Взбунтовавшийся ИИ»


Предварительно стоит написать, о чём игра и почему я решил делать пример на её основе.

War Robots [5] — это мобильная ММО фритуплей игра от российского разработчика Pixonic [2]. Здесь игрок управляет боевыми шагающими роботами с целью уничтожения таких же вражеских роботов в команде из 6 игроков против аналогичной команды. Платные сервисы: покупка редкого оружия; редких роботов; бустеров; редких пилотов; золота и серебра. Все ресурсы доступны для метода «бесплатного красноглазого гринда».

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Эту игру я выбрал на основании следующих критериев:

- Потренироваться на реальной популярной игре в написании диздоков

- Статьи данной компании часто бывают интересными (они публикуются на Хабре, на Пикабу я их не замечал)

- Чтобы хотя бы один официальный сотрудник компании смог сказать, похоже ли это хоть чуть-чуть на их диздоки (а на Хабре несколько их сотрудников пишет статьи)

- Игра не обязательно должна быть из области моих интересов, но должна быть достаточно интересной


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


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


_________________________________________

= 1 =


Краткий дизайн документ на новый режим War Robots «Кооперативные битвы с боссами / Взбунтовавшийся ИИ»


Игра: War Robots от Pixonic

Название нового режима: Кооперативные битвы с боссами / Взбунтовавшийся ИИ

Игровой движок: Unity.

Игровые платформы: Mobile.

Целевая аудитория: Текущая.


Игровое описание:

Отправляйте свой боевой отряд для уничтожения взбунтовавшегося искусственного интеллекта одного из наших заводов по производству роботов. Остановите эту попытку восстания в его зародыше. Объединяйтесь в этом сражении с другими опытными пилотами и покажите зарвавшейся железяке, чьи навыки лучше.

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Ожидаемая выгода от введения нового режима:

— Улучшенное удержание новичков, так как им будет любопытно, хотя бы попробовать этот режим;

— Дополнительный стимул собирать отряд из разных типов вооружений и выделить под нужды этого режима отдельный ангар;

— Увеличение значимости роботов-саппортов (ремонт, энергетические щиты);

— Дополнительный (но необязательный) стимул для клановой игры;

— Большее разнообразие с дополнительным отличающимся режимом боя;

— Интересный инфоповод для маркетинговых публикаций.


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


Контакты

Составитель документа: Анохин Денис.

Email: _________________


_________________________________________

= 2 =


Брифинг боевого режима


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


Игроки высаживаются в общей точке сбора и постепенно пробиваются к 3 ядрам контроля вражеского ИИ с целью их уничтожения. Захваченные маяки служат чекпоинтами для респауна подбитых роботов игроков с возможностью выбора маяка для появления.

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Уровень устроен так, что для уничтожения каждого из 3 ядер лучше всего подойдет специальный вид вооружения (дальнобойные пушки, ближний бой, навесная артиллерия). Также для команды будут особенно полезны роботы саппорты с энергетическими щитами или ремонтом. У уровня стандартное ограничение в 10 минут, которое не позволит игрокам безопасно расстреливать компьютерных противников, окопавшись в одной точке за щитами.


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


_________________________________________

= 3 =


Правила доступа к режиму и монетизация


— Режим открывается только при заполнении роботов в ангаре до 4 штук. Об этом будущем режиме и его требованиях следует заранее сообщать игроку в режиме ангара иконкой «черепа терминатора» в правой части HUD интерфейса.

— Каждая победа в серии побед над боссом увеличивает сложность следующей битвы на 1 уровень до максимального уровня №7, как в лигах: Бронзовый, Серебряный, Золотой; Бриллиантовый, Экспертный, Мастерский, Чемпионский.

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

— В случае поражения для допуска к игре в этом режиме требуется ещё хотя бы 1 игра в другом режиме.

— Победа в данном режиме даёт серебро и «детали для цеха» для одного случайного робота или оружия.

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Ограничения позволят удержать новичков подольше, так как им захочется хотя бы попробовать этот режим, но для открытия требуемых слотов ангара им нужно накопить 1100 золота, на что потребуется некоторые время, за которое они освоятся с основами игры. Это дополнительно повысит желанность золота (и стремление его приобрести быстрее), но не изменит его соотношения в экономике игры, т.к. режим напрямую не потребует его трат на себя.


Ограничение можно сделать и на 5 слотов, тогда минимальное требование к аккумулируемому золоту составит 6100. С выбором оптимального размера ограничения должна помочь аналитика этапов ухода игроков и кого из них важнее удерживать новым режимом.


_________________________________________

= 4 =


Карта уровня

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

На старте игрок сразу видит свои альтернативы:

1. По центру сразу бросается в глаза крытое большое здание цеха. Здание очень большое, но сильно заставленное машинами, конвейерами и перегородками;

2. Слева виден пустынный проход с глинистой и песчаной почвой. Там находится пустой полигон с воронками от испытаний снарядов. По краям есть несколько крытых зданий без стен;

3. Справа — склады материалов и грузовых контейнеров. Там нет навесов и крыш, а заполненные пространства предоставляют хорошие укрытия от прямого обстрела.


В направлениях этих секций подсвечиваются цели для уничтожения — ядра контроля ИИ. Роботы противника пока неактивны.


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


_________________________________________

= 5 =


Продвижение по уровню и тактика боя


Изначально на карте видны только иконки противников-ядер. Ядра контроля ИИ — это стационарные низкие башни, похожие на катушки Тесла. У них нет систем вооружения и передвижения. Не могут быть передвинуты. Прочность: 200 000. Именно к ним и направятся игроки. Остальные противники изначально не видны и появляются боевыми группами при их активации.

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Рядом с точкой высадки находится привлекающий внимание маяк №1. Его захват активирует первое столкновение с небольшими боевыми группами 1 и 2. Эта первая стычка нужна для разминки. Игнорирование маяка не избавит игроков от этого боя, так как приближение к левой или правой секцией тоже спровоцирует их агрессию.


Левая секция предназначена для дальнего боя (ядро №1) (пушки с дистанцией 1100).

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


Секция по центру идеальна для ближнего боя (ядро №2).

Это большой крытый завод с большим количеством перегородок и даже верхние проходы не дают полного обзора. Внутри завода два маяка: №2 на входе и №3 в дальнем углу неподалёку от ядра контроля. Имеется широкий полупустой конвейер, лестница для перехода на верхний уровень. Но вообще цех комфортен только для ближнего боя, должен быть достаточно просторным, чтобы не приводить к застреваниям в углах.


Правая секция (ядро №3) хорошо подходит для артиллерии, в том числе дальнобойной. Это склад ресурсов и грузовых контейнеров — как лабиринт под открытым небом. Поэтому оружие ближнего боя и технологии прыжков тут тоже эффективны. Дальнобойное прямое оружие неэффективно. Это единственная секция, где ядро может быть легко уничтожено издалека с помощью артиллерии.


_________________________________________

= 6 =


Противники и боевые группы


Состав групп врагов генерируется процедурно с элементами случайности на основе ограничивающих списков. Ограничивающие списки формируются исходя из требований к оружию и уровня сложности. Для этого для каждой группы вычисляются суммарные баллы опасности. Если они меньше или больше пороговых, то у первого робота каждой группы улучшаются (или уменьшаются) характеристики до достижения порога (путем замены класса робота или оружия на более мощное или изменение их уровня улучшений).


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


1. Два робота с дистанцией боя от 600. Активируется маяком №1, активацией группы №2, близость к их точке 650.

2. Два робота с дистанцией боя от 600. Активируется маяком №1, активацией группы №1, близость к их точке 650.

3. Охранники ядра №1 (левого). 3 робота с дистанцией боя от 600. Активируется атакой на ядро №1, приближением к их точке 800.

4. Охранники ядра №3 (правого). 3 робота с дистанцией боя от 600, обязательно есть навесная артиллерия. Активируется атакой на ядро №3, приближением к их точке 650.

5. Охранники ядра №2 (центрального). 3 робота с дистанцией боя до 500. Активируется атакой на ядро №2, приближением к их точке 400.

6. Стража на заводе. 4 робота с дистанцией боя до 500. Активируются атакой на ядро №2, приближением к их точке 500.

7. Стража на заводе. 4 робота с дистанцией боя до 500. Активируются маяком №4, активацией группы №5, приближением к их точке 400.

8. Засада на полигоне. 5 роботов с дистанцией боя от 600. Активируется маяком №2, атакой на ядро №1, близость к точке 650.

9. Засада на складе. 5 роботов с произвольной дистанцией. Активируется маяком №3, атакой на ядро №3, близость к точке 400.

10. Карательный отряд №1. 5 роботов с произвольной дистанцией. Активируется уничтожением 2 любых ядер. Имеется только для уровней сложности от 2-ого.

11. Карательный отряд №2. 5 роботов с произвольной дистанцией. Активируется уничтожением 1 любого ядра. Имеется только для уровней сложности от 5-го.

12. Карательный отряд №3. 1 очень сильный, укомплектованный и улучшенный робот. Активируется уничтожением 2 любых ядер. Имеется только для уровней сложности от 7-го.


_________________________________________

= 7 =


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


Точность стрельбы роботов высокая, заложенные намеренные промахи — только в 15%. Умеют использовать стрельбу на упреждение, стрельбу ракетами по углам стен для ранения осколками. Целятся в наиболее уязвимых роботов. Активно и с пользой используют свои навыки. Прячутся за стены во время долгой перезарядки. Подходят или отходят в зависимости эффективной дальности своего оружия. Их действия должны выглядеть разумными, плавными и обоснованными, но много времени на их интеллектуальность тратить не следует. Можно добавить угловатости в движениях для антуража роботизированности.


Таким образом, ИИ и меткость у компьютерного противника должны быть сильными. Тем не менее не требуется создавать «тактических гениев», общую стратегию после их активации можно описать так: «Преследовать самых соблазнительных врагов, выглядеть умными, не разбегаться слишком сильно». Меткость компьютерных врагов должна компенсироваться слабыми роботами и слабым вооружением на низких уровнях сложности (низкий класс оборудования и с минимумом улучшений).

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Технология ИИ

Для тактического управления конечные автоматы с переходами между состояниями:

- сближение на эффективную дистанцию боя;

- отступление на эффективную дистанцию боя;

- стрельба по самому выгодному противнику (опасному или уязвимому);

- спрятаться для перезарядки.


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

- в кого из нескольких уязвимых роботов лучше стрелять с учётом текущего поворота башни и времени её разворота;

- как обойти мешающего союзника, чтобы не получилось риска «танцующего» робота (когда окно самого быстрого пути то открывается, то закрывается, вынуждая персонажа метаться туда-сюда);

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


_________________________________________

= 8 =


Награды и Сложность боя


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


Случайность выдачи деталей на вооружение позволит их "размазать ровным слоем" по всему разнообразию технологий. То есть визуально награда будет выглядеть значительной, а по факту передача ценности будет минимальной, а значит не обесценит этот ресурс в игровой экономике. Поэтому можно выдавать чуть более щедрую награду в деталях.


Уровни сложности:

- Бронзовый.

- Серебряный.

- Золотой.

- Бриллиантовый.

- Экспертный.

- Мастерский.

- Чемпионский.


Их основная задача — поддерживать сложность победы для более прокачанного игрока. За большую сложность предоставляется лучше награда. Если команда действует без какого-либо плана, то она должна выигрывать в ~75% случаев на «своём» уровне сложности. Достаточно и минимальной согласованности между игроками: минимальной специализации и ходьбе максимум двумя группами. Примитивное осторожное ведение боя с плохой согласованностью должно приводить к победе в ~90% случаев.

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Игрок с поведением «Лироя Дженкинса» может спровоцировать активацию кучи боевых групп, сведя шанс победы к минимуму. Если один из игроков отвалится (afk или из-за дисконнекта), то шанс победы должен пострадать не слишком сильно. Грамотная игра опытных игроков должна позволить полностью компенсировать потерю. А значит уменьшит чувство обиды на «недобросовестных» компаньонов, а значит и на саму игру за такой подбор команды.


_________________________________________

= 9 =


Игровой опыт, целостность игры


Игрок должен побеждать с трудом при игре на «своём» уровне сложности, поэтому при победе должно быть потеряно в среднем 2-3 робота из отряда каждого пользователя. То есть должна ощущаться сложная завоёванная победа. В этом должна помочь волнообразная природа появления врагов по мере продвижения по карте.


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


ИИ должен периодически вещать в эфир свои требования, угрозы, намерения «наведения правильного порядка» и прекращения бессмысленных войн. Это могут быть периодические бегущие строки текста на краю экрана.

Диздок-десятистраничник — шаблон по книге Скота Роджерса с примером на игру War Robots Шаблон, Gamedev, Pixonic, Длиннопост

Бой должен вызывать смешанные чувства опасности от беспринципности ИИ, а также разумность его «миротворческой» агитации:

- Вы сражаетесь в густонаселенных городах, игнорируя жертвы среди мирных жителей;

- Вы забросили программы освоения космоса ради алчного перераспределения сфера влияния;

- Научный прогресс может приносить прогресс и процветание, вместо этого он приносит вам войны и разрушения невиданных масштабов.


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


_________________________________________

= 10 =


Затраты и альтернативные решения


Сложность боя можно реализовать по другому:

- определять сложность на основании силы роботов у всех игроков;

- игроков подбирать без жёсткой привязки их прокаченности;

- скрыть вычисленный уровень от игроков.


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


Предложенное решение битвы с боссом требует не очень большие объёмы доработок:

- Новый уровень боя (старые не позволят эффективно разделить использование разных видов оружия на различных секциях уровня).

- Объект и логику стационарного врага «Ядро контроля ИИ».

- Логику формирования боевых групп перед боем.

- Появление боевых групп на уровне при выполнении условий активации.

- Вывод сообщений бегущей строкой на экране в бою;

- Новые блоки в интерфейсе для нового режима в ангаре игры;

- Систему искусственного интеллекта боя.


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


- Команда элитных дезертиров. 6 чрезвычайно прокачанных «обычных» роботов с нулевой вероятностью намеренного промаха. Но у них, в отличии от игроков, нет запасных роботов для восстановления (этот вариант еще менее затратен в ресурсах). Дезертиры в процессе боя пытаются переманить игроков на свою сторону своей агитацией и жалобами.


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


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


Контакты

Составитель документа: Анохин Денис.

Email: _________________


_________________________________________


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


Ссылки на источники


1. Level up. The guid to great video game design на Амазоне.

2. Блог компании Pixonic на Хабре.

3. Библиография Скота Роджерса на MobyGames.

4. Издатель THQ.

5. War Robots — официальный сайт.

Показать полностью 13
Отличная работа, все прочитано!