Как одновременно работать над основной игрой и ремастером
Gamedev
Владимир Семыкин

Генерация подземелий в The Binding of Isaac — описание работы алгоритма Статьи редакции

Рассказ программиста оригинальной игры.

Программист оригинальной The Binding of Isaac Флориан Химсл в 2020 году опубликовал на YouTube видео, в котором рассказал о принципах генерации локаций в игре. Он признался, что некоторые решения были неудачными, поэтому многие вещи пришлось исправлять авторам ремейка. Мы выбрали из его ролика главное.

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

Оригинальная комната, с которой начинается генерация локаций. Все комнаты в The Binding of Isaac одинакового размера

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

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

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

Светлым выделены тупиковые комнаты, содержащие важные объекты

Единственное исключение — секретные залы, которые могут связать тупиковую комнату с каким-нибудь другим помещением.

Секретная комната, примыкающая к тупиковому помещению

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

В ремейке The Binding of Isaac процесс генерации отличается: например, там есть комнаты разной формы, а местоположение дверей заранее предопределено. Тем не менее весь уровень всё так же размещается на сетке.

Игра собирает уровни из заранее созданного набора комнат. Соответственно, двери разных клеток должны стыковаться друг с другом, а сами залы не должны слишком часто повторяться (некоторые вообще могут появиться только один раз)
Примерно так выглядит структура уровней в The Binding of Isaac: Rebirth. Они значительно больше, чем в оригинальной версии

В оригинальной The Binding of Isaac есть комнаты разной сложности — низкой, средней и высокой. И есть два типа подземелий: в одном совмещаются залы низкой и средней сложности, а в другом — средней и высокой.

Химсл признался, что в The Binding of Isaac достаточно плохой баланс сложности — его можно было бы улучшить множеством способов. Например, можно было ограничить количество сложных комнат или врагов на уровне. Но в результате сложность напрямую зависит от случайности.

По словам разработчика, The Binding of Isaac — это небольшая и неидеальная игра со множеством недостатков. Тем не менее ни один из них не делает её неиграбельной — загрузки не такие уже долгие, а баланс достаточно хорошо работает. А в ремейке многие проблемы исправили и улучшили оригинальную концепцию.

{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","\u043b\u0435\u0432\u0435\u043b\u0434\u0438\u0437\u0430\u0439\u043d","thebindingofisaac"], "comments": 24, "likes": 199, "favorites": 394, "is_advertisement": false, "subsite_label": "gamedev", "id": 701358, "is_wide": true, "is_ugc": false, "date": "Sun, 18 Apr 2021 21:20:08 +0300", "is_special": false }
0
24 комментария
Популярные
По порядку
Написать комментарий...
18

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

Так зачем начинать сначала, если можно воткнуть комнату в свободную клетку. И для чего вообще нужны эти рамочные ограничения.
Статья о том, как не нужно программировать лабиринты  ¯\_(ツ)_/¯

Ответить
1

тот же самый вопрос

Ответить
–3

Я почему-то уверен, что дело в флеше и его ограничениях

Ответить
3

И каким боком тут флеш виноват? У вирутальной машины флеша есть свои прибабахи, например с принудительным вызовом gc, но в остальном as3 точно такой же яп как и какой-нибудь c#. Надо быть очень далеким от программирования чтобы связывать алгоритмические проблемы с языком

Ответить
0

Не несите хлеб!

Ответить
16

писал по этому алгоритму реализацию на godot
https://v001.dev/isaac_map_gen/

Ответить
10

Добро пожаловать в вебасембли на айос :》

Ответить
0

да, в последний раз ребилди и решил по экспериментировать с "флагами". Во всех версиях сафари не работает (в том числе и в других браузерах под ios) после релиза новой версии движка мб и перебилжу)

Ответить
15

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

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

Че, пацаны, Кнут?

Ответить
3

А ещё по теории вероятности сейчас где-нибудь может и не сидеть чувак и не ждать первой загрузки

Ответить
11

Да, все правильно. Вероятность 50% - либо сидит, либо нет

Ответить
1

судя по новостям - сидит, извините..

Ответить
0

Ишь ты, сидит! Не стоит возмущать общественное спокойствие. Ибо, судя по новостям, мы все уже сидим.

Ответить
0

Как только счетчик неудачных версий комнат перейдет определенное количество - нужно выдавать игроку заранее сделанную комнату. 

Ответить

Официальный звук

7

Химсл признался, что в The Binding of Isaac достаточно плохой баланс сложности

Химсл забыл о том что он делал hard mode в 2014 для wraith of the lamb, который сделал игру ещё сложнее? 

Ответить
9

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

Ответить
7

 Примерно так выглядит структура уровней в The Binding of Isaac: Rebirth. Они значительно больше, чем в оригинальной версии

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

Ответить
6

Когда я впервые запустил оригинальный The Binding of Isaac, первое что я решил сделать - это проверить управление. Движение на wasd это совершенно привычная вещь, но вот бомба на shift это что-то новое. Ну вот я и нажал на шифт, поставив бомбу под себя.
Казалось бы, подрыв пердака в первые 10 секунд игры это вполне канонично, но вот только после взрыва открылся проход в стене, которого до этого не было. И так уж вышло, что первая же кнопка, которая которую я нажал, привела меня в секретную комнату. Тогда я, конечно же, ничего особо не понял.

Ответить
0

Почему этой игры нет на андроид?

Ответить
0

Едмунд сказал что продажи на iOS были не очень. Поэтому на андроид нету смысла выпускать т.к. не отобьёт затрат на разработку.

Ответить
1

На ios не было продаж, потому что игру удалили сами Apple.

Ответить
0

игру удалили сами Apple

Пиздец.

Ответить
0

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

Эм... Но... По теории вероятности... Чта? 

Ответить

Комментарии

null