Я написав щось подібне до того, що ви шукаєте, для автоматизованого клону в стилі заставки Civilization 1. Для запису я написав це на VB.net, але оскільки ви нічого не згадуєте про мову чи платформу у своєму питанні, я буду зберігати це абстрактно.
"Карта" вказує кількість континентів, відхилення розмірів континенту (наприклад, 1,0 підтримувало б усі континенти з однаковою приблизною площею суші, до 0,1 дозволяло б континентам існувати з 1/10 масою найбільшого континенту), максимальною площею суші (у відсотках) для генерування та центральний упереджений характер земель. "Насіння" розподіляється випадковим чином навколо карти для кожного континенту, зважене до центру карти відповідно до центрального зміщення (наприклад, низький зсув створює розподілені континенти, схожіші на Землю, де, як високий центральний ухил, буде схожий більше на Пангея). Тоді для кожної ітерації росту «насіння» призначають плитки землі згідно алгоритму розподілу (докладніше про це пізніше) до досягнення максимальної площі землі.
Алгоритм розподілу землі може бути настільки точним, як ви хочете, але я знайшов більш цікаві результати, застосовуючи різні генетичні алгоритми та перекочуючи кістки. «Гра життя» Конуея - це справді легко. Вам потрібно буде додати ДЕЯКУ глобально усвідомлену логіку, щоб уникнути речей, як континенти, що переростають один у одного, але здебільшого речі піклуються про себе. Проблемою, яку я виявив із використанням більш фрактальних підходів (що було моїм першим схильністю), було те, що результати виглядали занадто зразковими, або призвели до занадто багатьох сценаріїв, що вимагають правил обхідного способу, щоб отримати результат, який все ще не відчував себе достатньо динамічним. Залежно від алгоритму, який ви використовуєте, ви можете застосувати «розмиття» проходу над результатом, щоб усунути такі речі, як рясна плитка одного океану та квадратних узбережжя. У випадку, якщо щось подібне до континенту, що породився в оточенні кількох інших, і де вже не було де рости, перенесіть насіння в нову точку на карті та продовжте зростання. Так, це може означати, що іноді у вас трапляється більше континентів, ніж планувалося, але якщо це дійсно щось, чого ви твердо не хочете, то іншим способом уникнути цього є упередження алгоритмів зростання, щоб вони сприяли зростанню в напрямку з найменшою близькістю до інших насіння. У гіршому випадку (на мою думку, у будь-якому випадку), ви можете позначити серію як недійсну, коли насінню нікуди не залишилось рости та генерувати нову карту. Просто переконайтеся, що ви встановили максимальну кількість спроб, тому якщо вказується щось нереально (наприклад, розміщення 50 рівних зважених континентів на дошці 10х10), це не витрачає вічно на пошук дійсного рішення.
Я не можу поручитися, як це роблять Civ і т. Д., І, звичайно, не охоплює таких речей, як клімат, вік землі тощо, але граючи з алгоритмом росту насіння, ви можете отримати досить цікаві результати, що нагадують континенти, архіпелаги тощо. Ви можете використовуйте той самий підхід для створення "органічних" річок, гірських хребтів тощо.