В чем разница между «динамической генерацией» и «процедурной генерацией»?

15

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

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

В чем разница между динамически генерируемой игрой и процедурно генерируемой игрой ?

Evorlor
источник

Ответы:

21

«Процедурный» означает, что какой-то алгоритм сделал содержание. Это противоречит тому, что контент создается человеком вручную.

«Динамический» означает, что контент меняется со временем. Это противоположно «статическому» контенту, который не изменяется после создания или изменяется только предопределенными способами, например анимацией персонажа в ключевой рамке.

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

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

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

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

Шон Миддледич
источник
1
«Весь динамический контент является процедурным». А как насчет контента, созданного в результате действий других игроков? Например, в Eve Online есть постоянно меняющиеся орбитальные заставы, которые полностью созданы игроками.
Молот
1
@Molot: и вот первый пример моего последнего абзаца. :) Я предполагаю, что я действительно думал только об опубликованном разработчиком контенте для этого ответа, и я полагаю, что вы могли бы считать контент, созданный разработчиком или игроком, еще одной осью, помимо динамической / статической или ручной / процедурной. Например, во многих играх игроки могут строить структуры в режиме здания, но тогда карта остается статичной для остальной части игры, поэтому вы можете иметь статический контент, созданный игроком. Но опять же, я не слишком разборчив в терминологии. :)
Шон Миддлдич
4

«Динамический» означает

«(процесса или системы), характеризующихся постоянными изменениями, деятельностью или прогрессом».

(говорит гугл.)

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

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

Дэвид ван Бринк
источник
1
Так что противоположно моей первоначальной мысли?
Evorlor
2
@Evorlor: я бы так сказал. «Процедурный» просто означает, что какой-то алгоритм сделал контент. «Динамический» означает, что контент меняется со временем. Вы можете использовать код для генерации чего-либо только один раз, чтобы он был статическим, а не динамическим. Весь динамический контент является процедурным, но не весь процедурный контент является динамическим. Вы также можете смешивать их разными способами; например, динамический уровень, который процедурно заполняется статическим контентом. :)
Шон Миддлдич
@SeanMiddleditch преобразовать, чтобы ответить, пожалуйста :-)
Evorlor
@Evorlor: сделано, но я не уверен, что сказал что-то большее, чем то, что Давид ван Бринк уже сделал.
Шон Мидлдич
@SeanMiddleditch возможно нет, но Ваше объяснение было более ясным для меня. Благодарность!
Evorlor
1

Вот небольшой краткий обзор.

  • Динамическое Поколение

Слово «динамический» означает изменение. Слово «поколение» означает создание вещей, поэтому «динамическое поколение» меняет поколение. Поэтому «динамическое поколение» относится к контенту, который постоянно меняется.

  • Процедурное Поколение

Слово «процедурный» относится к контенту, созданному компьютерным алгоритмом, а не человеком. Как мы установили, «генерация» означает создание, поэтому «процедурная генерация» относится к контенту, который генерируется с помощью компьютерного алгоритма.

Hyden
источник