Рубрика развивается при поддержке

Дьявольский генератор: принципы создания уровней в Diablo Материал редакции

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

В закладки
Аудио

Автор блога BorisTheBrave.Com опубликовал текст, в котором разобрал принципы генерации уровней в Diablo. Он подробно описал особенности алгоритмов каждой отдельной главы, а также рассказал, через какие этапы проходит уровень, прежде чем его увидит игрок. Мы выбрали из разбора самое главное.

Diablo — классический hack and slash экшен-RPG 1996 года. Это была одна из первых попыток реализации механик роуглайков не в нише ASCII-игр, а в формате тайтла, предназначенного для широкой аудитории. Diablo известна тёмной, угрюмой атмосферой, которая усиливается, когда пользователь спускается в подземелья под городом Тристрамом.

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

Общие особенности

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

Каждый уровень игры генерируется так, чтобы заполнить сетку 40×40 тайлов. Ось X соответствует юго-востоку на карте, а ось Y — юго-западу. Эти тайлы фактически используются только для генерации уровней. Как только уровень создан, каждый тайл делится на четыре части для рендеринга.

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

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

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

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

The Butcher's Den — один из первых сетов, встречающихся в игре

Минисеты — ещё один способ добавления заранее созданного контента в уровень. Это небольшие паттерны размером примерно 3×3, которые случайным образом вставляются в подземелье. Существует простая схема сопоставления с образцом, так что они помещаются только в «правильные» позиции. Часто у них есть дополнительные требования, например, минисеты не могут быть расположены близко друг к другу, не могут перекрывать определённые фрагменты и так далее.

Минисеты применяются в Diablo для самых разных целей — для размещения более крупных объектов на основе тайлов, таких как лестницы; для фиксации комбинаций тайлов, которые неправильно соединяются друг с другом; добавления случайных вариаций к тайлам и так далее.

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

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

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

Примером такого механизма может выступать функция «lockout» — она проверяет можно ли пройти через уровень. Если она находит ошибку, то генерация запускается по-новой.

Большинство квестов формируются с использованием наборов фрагментов, но некоторые имеют собственную логику. Например, «Zhar the Mad» генерирует в тематических комнатах библиотеки, вход «Poisoned Water» создаётся с помощью минисета, а «Anvil of Fury» имеет специальный код генерации уровней.

Собор

Собор, несомненно, является самой знаковой главой Diablo — всё благодаря длинным рядам готических арок, квадратным комнатам и другим элементам. Создание ранней версии уровня начинается с формирования общего представления карты. Генератор случайным образом расставляет три комнаты размером 10×10 в определённых местах по центру оси X или Y.

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

Все остальные комнаты генерируются с помощью рекурсивного метода «budding» в функции под названием L5roomGen, которая запускается в каждой из вышеуказанных комнат.

Работа L5roomGen:

  • для генерации выбирается прямоугольник исходной комнаты и конкретная ось;
  • есть шанс 1:4, что произойдёт смена оси между X и Y;
  • выбирается случайный размер для новой комнаты: два, четыре или шесть тайлов с каждой стороны;
  • для каждой стороны изначально выбранной комнаты вдоль оси (юго-восток/северо-запад для X, юго-запад/северо-восток для Y): прямоугольник новой комнаты выравнивается по центру края начальной комнаты; проверка того, что там ещё ничего не нарисовано, и не достигнут край карты; для стен требуется один тайл на границе; если проверка прошла успешно, то рисуется комната;
  • для каждой нарисованной комнаты рекурсивно вызывается L5roomGen, которая передаёт в новую комнату ось, противоположную только что использованной.

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

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

На этом этапе уровень состоит из базовых тайлов, которые составляют пол и стены. Следующий шаг — замена их на настоящие тайлы стен. Для этого Diablo использует «движущиеся квадраты».

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

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

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

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

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

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

Сгенерированный уровень собора

Катакомбы

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

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

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

Работа CreateRoom:

  • CreateRoom создаёт прямоугольную область, в которой формируются комнаты;
  • если область слишком узкая, то нужно повторить первый шаг;
  • далее выбирается случайный размер для комнаты от четырёх до девяти тайлов с каждой стороны, учитывая максимальный размер области, в которой можно разместить комнату;
  • выбирается случайная позиция для комнаты;
  • рисуется комната на карте ASCII. Рисунок использует «.» для тайлов пола, «#» для окружающей стены и «A», «B», «C», «E» для обозначения четырёх углов;
  • если есть исходная комната: выбирается случайный тайл на ближайших сторонах исходной и новой комнаты; далее эта информация записывается для последующего использования;
  • оставшиеся части области разделяются на четыре прямоугольника, исключая эту комнату;
  • для каждого прямоугольника размер уменьшается на два тайла, чтобы обеспечить пространство между комнатами, затем рекурсивно запускается CreateRoom с этим прямоугольником в качестве области и созданной комнатой в качестве исходной.

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

// пример уровня A##B #..# A####B #..# #....# #..# #....# C##E #....# C####E A#####B #.....# #.....# A########B #.....# #........# #.....# #........# C#####E #........# A#B #........# #.# #........# #.# #........# #.# #........# #.# #........# #.# C########E #.# #.# A#B C#E #.# A####B #.# #....# #.# #....# #.# #....# #.# C####E #.# #.# A#####B C#E #.....# A###B #.....# #...# #.....# C###E #.....# C#####E

В этом случае самая нижняя комната была «корневой» — она была создана изначально.

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

После того, как все залы созданы, ASCII очищается. Угловые тайлы превращаются в стены, а все соседние также становятся стенами. Наконец, «,» заменяется на «.». Далее представлен пример уровня на этом этапе.

// пример уровня #### #..# ###### #..# #....# #..# #....# #D## #....# #.# #D#### ##D#### #..# #.....# #..# ###.....# ##D######## #.D.....# #........# #.#.....# #........# ### #.##D#### #........# #.### #.##...# #........###.D.# #.##...# #........##..#.# #.##...# #........##..#.# #.##...# #........##..#.# #.##...# #........##..#.# #.##...# ###D#######..#.# #.##...# #.......#..#.# #.###D## ###.....#..### #.# #.# #######D##.# #.# #.# #....#.# #.# #.# #....D.# #.# #.# #....###### #.# #.# ##D####....## #.# #.# #...........# #.# #.# ####....###D####.# ### ######.....##.# #####.D.....##.# #...D.#.....D..# #####.#.....#### #########

Эта процедура может оставить на карте довольно много пустого места. Следовательно, следующее, что делает генератор, это «заполняет пустоты» — ищет любой смежный участок стены, к которому он может приклеить дополнительные прямоугольники пола. Прямоугольники должны быть не менее 5×5 и не более 12×14.

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

В итоге получается финальный вариант ранней версии уровня.

// пример уровня ########## #........# ########### #........# #.........# #........# #.........# #........# #.........# #### #........# #.........# #..# #######..###.........# #..# #..............# #..# #..............# #D## #..............# #.# #D####.........# ##D#### #..# ########### #.....# #..# ###.....# ##D######## #.D.....# #........# #.#.....# ########........# ### #.##D#### #...............# #.### #.##...# #...............###.D.# #.##...# #...............##..#.# #.##...# #...............##..#.# #.##...# #...............##..#.# #.##...# #...............##..#.# #.##...# #......###D#######..#.# #.##...# #......# #.......#..#.# #.###D## #......# ###.....#..### #.# #.# #......#########D##.# #.# #.# #.........# #....#.# #.# #.# #.........# #....D.# #.# #.# #.........# #....###### #.# #.# #.........# ##D####....## #.# #.# #.........# #...........# #.# #.# #.........# ####....###D####.# ### #.........# ######.....##.# #.........# #####.D.....##.# #.........# #...D.#.....D..# ########### #####.#.....#### #########

Опять же, катакомбы отходят от стандартной формулы уровня. Вместо того, чтобы использовать «движущиеся квадраты», существует специальная процедура сопоставления с образцом, которая сравнивает каждый прямоугольник 3×3 в ранней версии, чтобы определить соответствующий тайл в подземелье. Шаблоны указывают, должен ли каждый тайл ранней версии быть стеной, полом, дверью или какой-либо комбинацией вышеперечисленного.

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

Пещеры

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

Локации в пещерах начинаются с одной случайной комнаты размером 2×2 где-то недалеко от центра карты. Затем вызывается процедура DRLG_L3CreateBlock на каждом краю этого блока.

Работа DRLG_L3CreateBlock:

  • эта функция берёт ребро прямоугольника — начальную точку, направление и длину;
  • размер нового блока между 3 и 4 на каждую сторону;
  • новый блок выравнивается случайным образом по входной грани;
  • если для создания блока нет места, то формируется выход;
  • рисуется блок;
  • в одном из четырёх случаев создаётся выход;
  • рекурсивно запускается DRLG_L3CreateBlock с тремя рёбрами блока, отличными от того, через который персонаж вошёл.

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

После создания грубой формы подземелья, генератор запускает процедуры изменения:

  • сначала он находит области тайлов 2×2, в которых два solid-тайла расположены по диагонали друг к другу. С этими формациями часто трудно разобраться при выполнении «движущихся квадратов», поэтому один из solid-тайлов случайным образом заменяется полом;
  • любые одиночные solid-тайлы, окружённые восемью тайлами пола, заменяются на пол;
  • если попадается слишком длинный участок сплошной стены, то 50% её тайлов заменяются на пол;
  • затем во второй раз убираются диагонали.

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

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

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

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

Стена 3×3 превращается в лавовое озеро

Далее генератор делает несколько попыток нарисовать реку, которая начинается у озера лавы и заканчивается в стене. Требования состоят в том, что река должна иметь длину от 7 до 100 тайлов, и должно быть место, подходящее для размещения моста. Если это место найдено, то можно добавить от одной до четырёх рек.

Затем размещаются тематические комнаты. На этом этапе их стены — деревянные ограждения, через которые невозможно пройти, но можно посмотреть сквозь них.

Ад

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

Генерация Ада начинается со случайной комнаты размером от пяти до шести тайлов с каждой стороны (больше, если есть части квестового сета), затем применяется тот же рекурсивный алгоритм, что и в соборе. Генерация ограничена областью 20×20. Также есть вертикальный и горизонтальный коридор, простирающийся до края области.

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

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

По итогам этого анализа можно сделать несколько выводов.

  • Дьявол кроется в деталях — отдельные компоненты не являются безумно сложными, но они объединяются так, чтобы дать удивительный результат. Скорее всего разработчики продолжали улучшать качество генератора, пока уровни стали не просто хорошими, а удивительными. Количество тайлов и комбинаторная сложность сетов также очень велики — нельзя добиться хорошего результата без особого внимания к тому, как всё соединяется.
  • Шаблоны поиска-замены очень эффективны, благодаря чему с ними можно создавать самые разные примечательные эффекты.
  • Разделение генерации подземелий на создание ранней версии подземелий и дальнейшую подстановку тайлов очень удобно как для проектирования, так и для проверки играбельности.
  • Если вы хотите придать нескольким областям разную специфику, написание отдельного алгоритма — отличный способ сделать это. Много кода можно использовать повторно, создавая совершенно другие впечатления.
Обозреватель подсайта Gamedev.Если вы хотите предложить тему для текста, рассказать о разработке своей игры или просто попросить совета по поводу собственного материала, можете написать мне в личные сообщения.
{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d","e","diablo","d","b"], "comments": 49, "likes": 146, "favorites": 304, "is_advertisement": false, "subsite_label": "gamedev", "id": 60777, "is_wide": true, "is_ugc": false, "date": "Thu, 25 Jul 2019 17:51:36 +0300", "is_special": false }
Разработка игр для PC, консолей
и мобильных платформ
Я готов!
0
49 комментариев
Популярные
По порядку
Написать комментарий...
11

Диаблушка, родимая, возвращайся поскорее в виде толковой четвертой части.

Ответить
44

У тебя что, нет телефона?

Ответить
2

У меня нет машины времени.

Ответить
1

У меня есть телефон. Вот только на нём всё ещё не вышла пресловутая новая Диабло

Ответить

Домашний волк

gammaclone
1

Ну так это Soon™

Ответить
1

А на полноценных платформах?

Ответить
0

На телефоне д3+, д4 будет на пк

Ответить
6

Былое уже не вернуть. Теперь из под крыла ABK в лучшем случае выйдет посредственный клон Diablo 3, которая сама имеет общего с классическими 1 и 2 - только сеттинг и название.

Ответить
–3

Хз, откуда это пошло про Д3, но графически и гемйплейно Д3 очень близка была к Д2. А вот по поводу Д2 было очень много возмущений, что игра перестала быть такой суровой и атмосферной.

Ответить
7

Мы с вами точно про одну Д3 говорим? (для примера)

Ответить
5

Ну так скриншоты, подземелий с подземельями сравнивать нужно, а не подземелье с дворцом. В Д3 есть куча локаций из Д2, и они очень узнаваемы и похожи. Плюс не стоит забывать, что у д2 ограничение на 256 цветов было, но в целом д3 намного ближе по дизайну к д2, чем д2 к д1.

Ответить
0

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

Ответить
0

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

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

Ответить
0

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

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

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

Ответить
3

Зачем? Есть Path of Exile, там та самая Диабла чувствуется больше чем в трёшке. Еще Grim Dawn неплох.

Ответить
1

Path of Exile без донатных вкладок и хотя бы минимального вложения бабла в лейте практически не играбелен.

Ответить

Хитрый хот-дог

Lucian
1

Считайте это демкой, а открытие вкладок — покупкой игры.

Ответить
0

А теперь сравни сколько нужно единожды вложить в PoE и сколько обычно стоят игры от Близов.

Ответить
–1

Эммм, чо? Я купил дяблу и аддон и мне больше донатить не нада. А в пое после каждой большой обновы могут новые вкладки добавить.

Ответить
0

Сколько мулов в д2 держал? У меня 7 аккаунтов полных было, норм. А тут, вы, сударь зажрались: вкладки прям в том же самом персе подавай!

Ответить
0

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

Ответить
0

Не так много разных типов вещей? У меня 1 акк чисто камнями и рунами забит был. Не мул, а целый акк с мулами.
В ПОЕ, по сравнению с д2, контента во столько же раз больше, во сколько больше бесплатный инвентарь. Просто ребята разрешили за денюжку мулов удобных докупать.

Ответить
0

Тогда уж "Торч 2".

Ответить

Ясный будильник

Wayfarer
0

Сорр

Ответить
7

Помню в детстве люто срался в Butcher's den заходить, даже после того как самого мясника уже завалил.
Да собственно и сейчас картинка вызывает кошмарные флешбеки.

Ответить
6

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

Ответить
5

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

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

Ответить
3

Статья скопипастена с хабра?

Ответить
0

нет. С чего вы это взяли?

Ответить
1

Прошу прощения, интро не прочитал)) Просто читал от Бориса статью на хабре, потом эту)) простите

Ответить

Ясный будильник

Sergey
0

Заменил слова. Убрал технические подробности. А так-перевод почти слово в слово.

Ответить
3

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

Ответить
3

Что за манеры пошли.
Взяли перевод статьи Вадима Ившина с хабра (https://habr.com/ru/post/460038/), заменили несколько слов и оборотов, ни ссылки на хабр, ни ссылки на переводчика.
Особенно странная попытка сделать текст более уникальным. Типо если копировать слово в слово нельзя, а если только на 80% то можно?

Ответить
0

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

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

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

Ответить
0

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

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

Достаточно было ввести часть вашего же заголовка статьи чтобы её увидеть.

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

Ответить
0

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

Ответить
2

Спрайты это, спрайты, а не тайлы, блеать

Ответить
0

объясните, пожалуйста, почему вы считаете, что «спрайты» здесь уместнее

Ответить
–7

Потому что tile выдумала МС для своего Выньдовс с его Метро. На плоской монохромной плитке рисованый значок. А всё, что касалось графики и анимации в частности, звалось спрайтами в те стародавние времена. Да и сейчас это уместнее имхо🤗

Ответить
3

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

Ответить
0

https://ru.wikipedia.org/wiki/Metro_(%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81) это про Метро
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D1%80%D0%B0%D0%B9%D1%82_(%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0) это про спрайты
https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0 это про тайлы.
Дык вот пока не выдумали это слово в конце 90-х, спайтами ещё на Синклере Экъююнокс делали ) А в русских версиях Иллюстратора и Фотошопа черепицой звалось, кажись. Но не смею утверждать, в таких вещах надо пользоваться языком основателей )

Ответить
0

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

Ответить
0

в 2019 годе этим должен заниматься движок сайта, а не я выставлять атрибуты тегов

Ответить

Ясный будильник

Владимир
0

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

Ответить
0

Давно интересовался игрой, но прям устаревшая графика меня по сей день отпугивает. Видимо, я с Диабло никогда не познакомлюсь..

Ответить

Бесполезный череп

Пилипцов
1

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

Ответить
0

Устарела даже в третьей?

Ответить
0

Эти ребята гении.

Ответить
0

А главное - откуда берётся "семя" для случайности?

Ответить

Прямой эфир

{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }