Процедурне покоління світу, орієнтоване на особливості геймплея


36

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

Дивлячись на світову генерацію з цієї точки зору, ландшафтний генератор для гри (тобто не заради декорацій, а заради гри) повинен не дотримуватися правил ландшафтного дизайну, а натомість деякі правила, одружені з очікування геймера. Наприклад, може існувати генератор точок / маршрутів, який створює пагорби ярів, річок і гір між містами, а не природним шляхом, коли міста виникають, розкидані по суші на основі ресурсів або умов, породжених горами та моделями опадів.

Чи виконується така робота? Почніть з міст чи центрів населення, а потім додайте місцевість після цього?

Причина, про яку я питаю, полягає в тому, що я раніше розмірковував над тим, щоб взяти наявні карти з фантастики (власні та інші), вклавши інформацію в систему як базову точку, а потім створив з неї хороший світ. Це, мабуть, охоплено існуючими технологіями, тобто там, де дизайнер вкладає всю необхідну інформацію, таку як населення міста, ресурси, біоми, дорожні мережі та річки, то дозволяє PCG заповнити прогалини.

Але зараз мені цікаво, чи можливо, щоб генератор вмісту генерував і загальний дизайн. Генеруйте міста та населені пункти, врівноважуючи їх так, щоб мати природну уявну потребу в торгівлі, потім генерувати позиції та зв’язок, потім із типу міста виробляти список необхідних ресурсів, які повинні бути поблизу, і лише тоді, можливо, дано деякі правила про те, як зробити подорож між містами правдоподібним та цікавим, створити остаточний вміст, включаючи дороги, задушні точки, мости та тунелі, пороми та місцевість, включаючи необхідні біоми та берегову лінію.

Якщо це робилося раніше, я хотів би знати, і я хотів би знати, що пішло не так і що пішло правильно.


Ваш підхід здається дивним. Я не бачу, чому міста та населені пункти спочатку прийдуть. Навіть тоді ви не могли розмістити деякі міста та призначити ці точки сприятливим, але випадковим параметрам, і працювати звідти?
Качка комуністична

1
Я думаю, що ти на вірному шляху з культурним дизайном по-перше, місцевість (і погода) друга. У реальному світі суспільства, культури та економічні мережі та структура не виникають ніде. Натомість вони виникають (або не виникають) на базі місцевості. Деякі місцевості просто не сприяють піднесенню суспільства, а деякі є. Великі міста не виникають посеред пустелі чи замерзлої тундри, оскільки: а) майже немає їжі та води, і б) важко завезти товари до міста.
Тім Холт

2
Я розумію ваш кут, @Tim Holt. На мою думку, Правило прохолодності та правило веселощів завжди козиряють правдоподібність при розробці ігрового сценарію. Місто, яке утворює міст через кратер активного вулкана, може бути неправдоподібним, але все-таки прохолодно. Крім того, коли гравцям потрібні міста, розподілені по ігровому світу, для ігрових цілей, ви повинні дати їм їх, навіть коли їхнє географічне розташування не мало б сенсу.
Філіпп

Відповіді:


12

Ось чудовий приклад процесуального генерування місцевості з використанням таких параметрів, як вологість, висота тощо ... http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


2
Прекрасна робота, але все ще випадковий розподіл ландшафтів, по-перше, цивілізація / елементи гри, друге
Річард Фабіан

Це не зовсім випадково, але я згоден, цивілізаційних елементів немає. Я думаю, що техніку можна пристосувати до багатьох різних ігрових елементів, але ті, що демонструються, були для багатокористувацької гри (~ 80 гравців на карту): (a) острів, оточений водою, щоб люди не доходили до краю, ( б) легкі ділянки на пляжі з розіграними гравцями, (в) важкі ділянки в горах з зосередженими гравцями, (г) дороги перевозять вас в інші райони з однаковою складністю; (д) річки перевозять вас у райони, що мають більшу складність. Гравці розпочнуть соло на пляжах та згрупуються, коли вони йдуть до центру.
amitp

1
Головне, що я намагався дослідити - почати спочатку з обмеженнями геймплея, а потім скласти карту, яка заповнює деталі, а не починати зі звичайних випадкових або "реалістичних" генераторів місцевості та намагатися встановити елементи гри на вершині . Я думаю, що це добре працювало для цього стилю гри, але я не пробував це для інших стилів ігор.
amitp

4

Я вважаю, що я озирався на це питання останні три дні, запитуючи себе, як процедурне покоління світів чи навіть галактик може бути водночас детермінованим (таким, як завжди генеруючи той самий вміст з одного насіння ), виглядати природно, і все ж мати унікальні, цікаві, незвичайні або навіть красиві риси у своєму пейзажі.

Я продовжую повертатися до тієї ж загальної відповіді, що це дуже залежить від жанру гри та її власної внутрішньої послідовної історії всередині історії. Наприклад, пост-апокаліптичний жанр, чому б хто-небудь будував мегаполіс з масивними стінами посеред пустелі і змушував усіх жити всередині нього нещасно? Чому колонізують такі планети? Чому у високій фантазії навіщо робити місто на плавучому острові? Чому гноми роблять міста всередині гір? А ваш родовий злий ворог походить з вогненної землі з діючими вулканами? Правило класу?

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

Таким чином, сюжет створює елементи гри, що створює відповідний пейзаж.

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

(PS: Ці ж три дні роздуми також змусили мене прийти з черговою відповіддю на проблему, яка може виникнути: повинен бути автоматизований інструмент тестування, щоб перевірити, чи створений ігровий дизайн звучить, наприклад, у вас повинна бути середньовічна армія, яка має важкий стан час перемогти створену фортецю)


2

Тільки папір, що займається подібними проблемами, які я міг знайти поза межами, - це " Алгоритм автоматизованої фрактальної деформації рельєфу " Стахняка та Штурцлінгера . Він передбачає, що ви спершу створите рельєф місцевості та деформуєте його (а точніше, дозвольте алгоритму вибирати параметри для його деформації автоматично), щоб згодом відповідати вашим обмеженням, тому він не відповідає безпосередньо на питання. Проте методи, представлені в них, можуть виявитись корисними для інших із подібними проблемами.


2

Чи не може такий алгоритм автоматично генерувати більш "тактичну" місцевість, коли між містами створюються дороги?

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


Я припускаю, що ви мали на увазі, що існуючі дороги виріжуть покоління місцевості, що призведе до того, що може бути схоже на долини, створені людиною. Це цікаво, де раніше ви бачили, як генератор місцевості займає ландшафт і судить про те, що надто складно переїхати, але дешевого достатньо, щоб прорізати? Це не відповідає на моє запитання, але все ж додає до списку речей, які повинен розглянути генератор, наприклад, протилежний випадок (коли дорога знаходиться над землею) закликав би місток або віадук, а не щось, що зазвичай бачиться в ПХГ.
Річард Фабіан

Я просто думав про те, як це робиться в реальному житті:
Вихід

1
Гори формуються, розмиваються. На землі ростуть рослини і дерева. Через мільйони років перші кочівники з’являються, блукають, можливо, осідають. Вони починають впливати на землю навколо них, наприклад, кам'яними ямами або пиломатеріалами. Пізніше вони знайдуть інші міста, почнуть торгувати з ними і таким чином потребуватимуть дороги. За місцем зазвичай простіше стежити за місцевістю, ніж змінювати його, тому вони пристосують свої дороги до ландшафту (за винятком трохи згладжування / вирівнювання). Як бачите, я дивлюся на проблему більше з точки зору світового будівництва.
Вихід

2

Коли я був у Cryptic Studios, ми працювали над чимось подібним для генерації місій / квестів. Дизайнери вказали цілі місії дещо абстрактно, і вони виклали їх з деякою випадковістю у "порядку подорожі гравця" та вирізали між ними шляхи.

Рання версія постачається зі Star Trek Online як Genesis Misions (архів) . У той час ми були дуже схвильовані з цього приводу, але я не маю уявлення, скільки це тривало після того, як я поїхав, або якщо це доступно в інструментах ливарного виробництва кінцевого користувача. (Яка була можлива мета.)


1
Це звучить як робота, виконана з процедурними генераторами сюжетів, чи справді вона генерувала деталі світу, щоб відповідати необхідній сюжетній лінії цих місій, чи робила місії таким, яким був світ, або просто пощастило, що місії були важкими або легко на основі того, що ви створили?
Річард Фабіан

1

Типовим підходом для процедурного генерування місцевості є нанесення певних особливостей вручну та використання генератора для заповнення решти. VTerrain обов'язково має щось цікаве на цю тему.


1

Lighthouse 3D має хороший огляд деяких простих алгоритмів для генерації місцевості. Якщо ви починаєте з карти, яка містить міста чи інші цікаві райони, ви можете використовувати деякі з цих методів, щоб створити будь-яку місцевість, яку б ви хотіли. Наприклад, інтелектуальне використання алгоритму несправностей може бути використане для створення скель або долин навколо вашого міста, які будуть виконувати функції задимлення. Також використання алгоритму кола було б чудовим способом генерування терріана для розміщення башточок. Це лише кілька прикладів, але використання цих простих алгоритмів було б досить простим способом генерування цікавих місцевостей навколо ваших міст.


1

Можливо, я надмірно спрощую, але навіщо ігнорувати той факт, що міста будуються на вигідній місцевості, або з цього приводу будь-якого розміру цивілізованої території з будь-якої причини? Можливо, місцевість пропонує тактичну перевагу для військового вкладу чи, можливо, на перетині великого лісу та річки, що має велике село нижче за течією, є лісозаготівельний млин. Навіть "святі" місця базуються на місцевості, навіть якщо простий факт, що певна ділянка землі в якийсь момент вважався святим і т. Д. Незалежно від наслідків, остаточне місце спокою переважної більшості цивілізації існує в фізичне місце з місць, що ґрунтуються на місцевості. Навіть у випадку, коли місто проростає просто тому, що між двома більшими містами відбувається торгівля, щоб гарантувати середнього чоловіка, якщо ви хочете, це місто було б вибране виходячи із шляху найменшого опору. Це було б розміщене десь, що пропонувало б хороші плоскі сільськогосподарські угіддя для місцевого продовольчого господарства разом із землею, яка добре піддається будівництву доріг. Я впевнений, що ти думав про це ...

Отже, якщо ви збираєтесь спочатку будувати міста, то чому б ні? Чому б не побудувати місто, село, селище чи що завгодно, поряд із гідною частиною навколишньої місцевості, побудованою вручну, що підтримує такий тип закладу?

Візьмемо як приклад процедурні біоми. Їх зазвичай застосовують для псевдовипадкових карт температури, вологості та висоти. Якщо ви вже проектували місто (або лісозаготівлю тощо), то, швидше за все, ви маєте тверду концепцію того, як має виглядати земля, яка, якщо я не розумію, - це саме ваша думка. Візьміть фантазійну споруду на зразок Ортанка, наповнену планами поверхів та навколишньою місцевістю, які ви грамотно повторили. Ну, ми знаємо, що залежно від часової шкали, Ортанка був оточений величезним лісом, населеним Ентами (деревними істотами) тощо. Якщо ви намагаєтесь це повторити, то застосовувати випадкову місцевість для мене немає сенсу. Як сказано, щойно ви створили цю установку для самої вежі та навколишнього лісу, що між Ортанком і будь-яким вашим наступним містом?

Простим підходом може бути написання вашої процедурної генерації рельєфу місцевості, розміщення налаштувань всередині випадково сформованої системи місцевості та покращення висот навколо вашої фіксованої установки та віоли. Ви можете розмістити Orthanc у багатьох різних світі, що генерується випадковим чином (якщо це має бути вашим після).

Я думаю, однак, вам найкраще буде поєднати обстановку, місцевість і визначений біом і переконатися, що Ортанк поміститься всередину процедурно створеного великого лісового біома. Залежно від того, як ви його кодуєте, ви можете встановити мінімальну / максимальну біому, рельєф, вологість тощо для кожної заздалегідь заданої установки чи будівлі чи міста, які ви скульптували. Це було б невеликим завданням у повноцінному фотореалістичному 3d-світі? Очевидно, що ні.

Я думаю, якби я спробував це зробити, я б спершу дослідив процедурні алгоритми узбережжя. Беручи підхід, що майже всі цивілізації протягом історії дотримувались будь-якої берегової лінії, будь то океан, море чи велике озеро. Це шлях найменшого опору для зростання, оскільки там, ймовірно, рясна риболовля, дерева поруч за дровами, і, звичайно, швидше подорожувати навіть рудиментарними водними суднами (принаймні в одну сторону).

Я б подумав, що вам доведеться будувати повністю назад. Подумайте, псевдовипадкові точки на карті, що представляють точки цивілізації, можливо, з алгоритмом шуму, що визначає популяцію цих цивілізацій, перш ніж щось інше буде визначено. Гаразд, так 1 бал припадає на 1000 людей, ще 2 000 000 (або будь-яке співвідношення залежно від вашого світового населення). Чому? Чому ці кількості населення там? Населення 1000 людей може бути маленькою громадою пиломатеріалів. Можливо, це гірнича спільнота, якщо вона знаходиться на північній стороні карти, якщо ви створюєте 3d сферичний світ. Тут стає трохи нечітко, тому що я не знаю, чи ти будеш нескінченно в усіх напрямках, роблячи NESW безглуздим у визначенні біомів, або якщо ти хочеш справжню "Землю"

Однак, якщо ви збиваєте свої цивілізації, грунтуючись на псевдовипадкових популяціях шуму, я думаю, ми можемо сміливо припустити кілька правил (але, можливо, не абсолютних) на кшталт ... Чим більша цивілізація, швидше за все, тим більша кількість корисних ресурсів руку та місцевість для їх підтримки. Дорогі корисні копалини, ліси тощо повинні бути присутніми або має бути створена величезна система торгівлі, яка б підтримувала таке велике підприємство. Виходячи з цього, ви можете почати генерувати автомобільні дороги від міста до міста та дороги до оточуючих населених пунктів, як глибока гірнича операція тощо. Виберіть точки цивілізації, які б сформулювали хороші берегові лінії і повністю скинули точки населення з карти, де вам потрібно заповнити океани (або, можливо, у вас є Атлантида у вашому світі, або офшорні нафтові свердловини).

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

Без реальних робочих знань про те, що ти насправді намагаєшся механічно здійснити, я можу викинути лише ідеї та, можливо, погані. Я думаю, що ваш підхід має заслугу, навіть якщо він насправді абсолютно фантастичний, адже ви орієнтуєтесь на те, що завжди є найважливішим фактором у будь-якій грі: чи грає весело? Або я створюю випадковий світ, який не нудний і, отже, не веселий?

Що також буде цікавим, і це могло б бути частиною покоління цивілізацій у будь-якій грі, спочатку місцевість чи ні, що станеться, якщо розбити 2 великих міста поруч? Що це означає? Вони воюють? Чи масові торгові операції між двома процвітаючими країнами? Які вороги ховаються в лісі того лісопильного заводу?

Я думаю, що одне є певним, якщо ви намагаєтеся будувати рельєф на базі "міст", і саме ця місцевість буде безпосередньо впливати на населення вказаного міста, як в ландшафті, так і в природних ресурсах (а може бути, і в красі).

Я не впевнений, чи насправді я щось відповів, чи це було доречно, але це дуже цікава концепція, і я хотів би почути, куди ви з цим попрямуєте.


0

Я б генерував функції гри, одночасно, як частину одного процесу. Існує ряд способів побудови рельєфу на основі правил. Ця розмова на YouTube із розробок "Шлях до вигнання" - досить хороший приклад: https://www.youtube.com/watch?v=GcM9Ynfzll0 . Також для менш заздалегідь побудованого підходу це виглядає цікаво: https://www.youtube.com/watch?v=RAtdFKiqs34 . Ви можете використовувати шум перліна, щоб генерувати висоту для кожної вершини вороного та йти звідти

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.