Рубрика «puzzle game»

В этом посте описывается генератор уровней для моей игры-головоломки Linjat. Пост можно читать и без подготовки, но он легче усвоится, если сыграть в несколько уровней. Исходный код я выложил на github; всё обсуждаемое в статье находится в файле src/main.cc.

Примерный план поста:

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

Правила

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

Создание процедурного генератора головоломок - 1

Цель игрока — прочертить вертикальную или горизонтальную линию через каждое из чисел при соблюдении трёх условий:

  • Линия, идущая через число, должна иметь ту же длину, что и число.
  • Линии не могут пересекаться.
  • Все точки необходимо закрыть линиями.

Пример решения:

Создание процедурного генератора головоломок - 2

Ура! Дизайн игры готов, UI реализован, и теперь единственное, что осталось — найти несколько сотен хороших головоломок. А для подобных игр обычно не имеет смысла пытаться создавать такие головоломки вручную. Это работа для компьютера.
Читать полностью »

Puzzle Script — это минималистичный игровой движок для создания головоломок для HTML5, имеет открытые исходники. Примеры готовых игр можно посмотреть здесь.

Часть 1. Создаём первую игру на Puzzle Script.

Puzzle Script — это бесплатная онлайн-программа, которая используется для создания игр-головоломок. Наиболее известен она благодаря созданию головоломок с толканием блоков наподобие моей The Nodus. В этой части мы создадим игру, изучив базовые функции Puzzle Script, а в следующей приступим к программированию.

Создание игр-головоломок на Puzzle Script - 1

Перейдите на веб-сайт движка. Нажмите Make a Game, чтобы открыть редактор Puzzle Script.
Читать полностью »

Существует множество игр жанра «пазл-платформер», но мне редко удаётся найти такую, в которой правильно соблюдён баланс сюжета, головоломок и графики. Всегда находится какой-нибудь аспект, который меня напрягает. Я очень хотел создать игру с красивой графикой, интересным сюжетом и классическими платформенными головоломками, но стремился ещё и к тому, чтобы все эти три аспекта глубоко сочетались друг с другом. В In The Shadows я старался сделать так, чтобы каждый аспект имел своё обоснование. Сделать так, чтобы всё работало вместе — сложная задача, которая сама по себе является головоломкой.

Дизайн игр-головоломок на примере In The Shadows - 1

Дневники разработки In The Shadows, собранные за три года работы


Сюжет In The Shadows посвящён преодолению страхов, противостоянию реальности, использованию страха темноты в качестве символа. Чтобы обеспечить целостность, всё в игре освещается в реальном времени и отбрасывает настоящие тени — основная часть механик связана с пугающим созданием-тенью, обретением контроля над ним. Все три аспекта игры связаны друг с другом. Никаких хитростей — сюжет передаётся как через графику, так и через головоломки с механиками. На то, чтобы всё это заработало вместе, ушло много времени, это оказалось гораздо сложнее, чем я ожидал.
Читать полностью »

image

Несколько лет назад на SeishunCon я заново открыл для себя игры match-3. Я играл в Dr. Mario детстве, но такие более соревновательные игры, как Magical Drop, Bust-A-Move и Tokimeki Memorial Taisen Puzzle-Dama, сильно отличаются от неё.

image
Dr. Mario

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

На следующем джеме Ludum Dare я решил поэкспериментировать, но сначала за неделю до этого для разогрева попробовал разработать алгоритм «Тетриса», обнаруживающий и удаляющий линии. Мне очень помог этот туториал Unity Plus. [Прим. пер.: у меня ссылка не открывается. Если вы знаете, как решить проблему, напишите мне, я дополню статью.] Разумеется, алгоритм «Тетриса» для поиска заполненных рядов гораздо проще, чем алгоритм, выискивающий разнообразные сочетания совпадающих тайлов.

Если вы хотите изучить эти примеры кода в контексте, то зайдите в мой репозиторий Ludum Dare 30. (Для бесстыдной саморекламы я снова использовал эту логику для игры Shifty Shapes.)

Два мира

Создание игры Match-3 в Unity - 3
Magical Drop 3 (источник: Kazuya_UK)

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

В этом её отличие от других жанров. Платформеры, например, почти полностью живут в игровом мире Unity. Transform игрока сообщает о его положении. Коллайдеры (или, в некоторых случаях, raycast) говорят, находится ли игрок на земле, ударяется ли об потолок или столкнулся с врагом. Даже если вы не используете внутриигровую физику, то всё равно, скорее всего, добавляете силу или указываете скорость Rigidbody, чтобы обеспечить распознавание столкновений без затрат.
Читать полностью »

От идеи до Google Play за 30 часов
Приветствую, читатели!

Сегодня хочу поделиться с вами историей о том, как я делал много всяких правильных вещей, чтобы довести проект по созданию небольшой игрушки от начала и до конца. Такими вещами были: анализ, планирование, дизайн, TDD разработка и тестирование. И все это шло по scrum'у. Да-да, именно в таком составе и порядке. Вообще все это должно быть правилом, идеальным маршрутом ведения проекта, но не все и не всегда это понимают. Ну как минимум я часто ленюсь и бросаюсь в код, забывая про остальное. Не сложно догадаться что из этого выходит. Но не в этот раз, — сказал я себе, и отложив клавиатуру, взял листок и ручку.

Disclaimer: данная статья носит чисто мотивационный характер. Технические детали будут изложены отдельно.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js