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

Ещё Марк Аврелий, римский император и философ подмечал:

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

Современные симуляции часто стремятся к идеалу, но теряют важный аспект реальности — её несовершенства.

Природа протекающих процессов

Но что такое несовершенства, как и природные процессы, которые они нарушают, по самой сути?

Стивен Вольфрам, автор небезызвестного Wolfram Alpha, известный своими работами в области вычислительных систем, однажды сказал: "All the wonders of our universe can in effect be captured by simple rules," что можно перевести как "Все чудеса нашего мира можно описать простыми правилами."

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

Для упрощения понимания, давайте рассмотрим такой процесс, как рост папоротника.

Основные элементы L-системы:

  1. Аксиома: Начальная строка, с которой начинается процесс.

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

Пример L-системы для папоротника:

  • Аксиома: X

  • Правила:

    • X → F-[[X]+X]+F[+FX]-X

    • F → FF

Каждый символ "X" заменяется более сложным узором, а "F" заменяется на "FF", что удлиняет линии.

Процесс:

  1. Начнем с аксиомы "X".

  2. Применим правила преобразования.

  3. На следующем шаге заменим каждый "X" и "F" согласно правилам.

  4. Повторяем процесс несколько раз.

Визуализация: В результате этих итераций получается сложный фрактальный узор, похожий на листья папоротника. Компьютерные алгоритмы, такие как turtle в Python, могут визуализировать этот процесс.

Пример на Python:

import turtle

def draw_fern(iterations, axiom, rules, angle, length):
    stack = []
    for i in range(iterations):
        next_axiom = ''
        for char in axiom:
            next_axiom += rules.get(char, char)
        axiom = next_axiom

    for char in axiom:
        if char == 'F':
            turtle.forward(length)
        elif char == '+':
            turtle.right(angle)
        elif char == '-':
            turtle.left(angle)
        elif char == '[':
            stack.append((turtle.position(), turtle.heading()))
        elif char == ']':
            position, heading = stack.pop()
            turtle.penup()
            turtle.goto(position)
            turtle.setheading(heading)
            turtle.pendown()

# Параметры папоротника
iterations = 5
axiom = 'X'
rules = {'X': 'F-[[X]+X]+F[+FX]-X', 'F': 'FF'}
angle = 25
length = 5

turtle.speed(0)
draw_fern(iterations, axiom, rules, angle, length)
turtle.done()
Результат визуализации
Результат визуализации
Цветные 3д варианты визуализаций похожи на реальные растения
Цветные 3д варианты визуализаций похожи на реальные растения

Хаос и порядок

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

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

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

Порядок встречает хаос и порождает вариации

Проблема симуляций

Современные симуляции часто стремятся к идеалу, что делает их неестественными и предсказуемыми. Процедурная генерация контента и физические движки как Unity или Unreal Engine позволяют создать красивые миры, но они часто лишены той случайности, которая делает наш мир таким интересным. Реальность симуляций слишком гладкая и предсказуемая, и это становится проблемой.

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

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

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

Мой интерес к продвинутым симуляциям

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

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

Для создания действительно динамичных и живых миров, нужно учитывать множество факторов. Например:

Атмосферные явления:

  • Моделирование ветра: Ветер влияет на рост растений, движение объектов и климат. В современных играх, таких как "The Legend of Zelda: Breath of the Wild", ветер влияет на движение листьев, травы и даже на полет стрел.

  • Осадки и климат: Дождь, снег и другие погодные условия должны влиять на окружающую среду. В игре "Red Dead Redemption 2" погодные условия динамически меняются, влияя на поведение персонажей и животных.

Гидрологические процессы:

  • Приливы и отливы: Влияние гравитации Луны на уровни воды в океанах и морях, что влияет на экосистемы прибрежных зон.

  • Текущие и стоячие воды: Моделирование течений рек и озер, а также испарения и осадков.

Биологические взаимодействия:

  • Экосистемы: Взаимодействие различных видов растений и животных, конкуренция за ресурсы.

  • Пищевые цепи и хищничество: Как хищники и жертвы влияют на популяции друг друга. В игре S.T.A.L.K.E.R. используется система искусственного интеллекта A-Life, которая делает мир более динамичным и непредсказуемым. Например, мутировавшие собаки могут сбиваться в стаи и нападать на бандитов, что иногда приводит к тому, что игрок приходит в совершенно пустую деревню, потому что всех врагов уже перебили. Это создает уникальные сценарии, где экосистема и различные фракции взаимодействуют без вмешательства игрока, добавляя реализма и динамичности в игровой процесс​​

Физические взаимодействия:

  • Эрозия и отложения: Влияние ветра и воды на изменение ландшафта со временем.

  • Тепловое расширение и сжатие: Влияние температуры на материалы и их свойства. В игре "Frostpunk" игрокам приходится учитывать экстремальные погодные условия и их влияние на город и жителей.

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

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

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

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

Заключение

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

Ещё 60 лет назад компьютеры, такие как IBM System/360, занимали целые комнаты и могли выполнять только простейшие вычисления. Сегодня наши смартфоны обладают мощностью, о которой тогда можно было только мечтать. Что уж там, мой первый компьютер 15 лет назад имел 256 мегабайт оперативки, а сейчас на моем самсунге s23 ultra умещается 12 гб, что в 48 раз больше и в тысячи раз больше чем на старых ЭВМ. Прорывы в области искусственного интеллекта, машинного обучения и вычислительных мощностей за последние годы поразительны. Технологии, которые позволяют создавать реалистичные 3D-игры даже на мобильных устройствах, сегодня доступны каждому.

 IBM System 360
IBM System 360

Прогресс технологий идет такими темпами, что то, что кажется невозможным сегодня, становится реальностью уже завтра. Первые транзисторы, изобретенные в 1947 году, были размером с человеческую руку, а сегодня миллиарды транзисторов помещаются на одном чипе. Например, NVIDIA недавно выпустила новый чип для машинного обучения Blackwell, который содержит 208 миллиарда транзисторов на одном чипе. Я пытался графически изобразить разницу между 208 000 000 000 и цифрой 1, но потерпел сокрушительное поражение, поэтому полагаюсь на ваше воображение.

Дженсен "Куртка" держит в руках мощности целого завода
Дженсен "Куртка" держит в руках мощности целого завода

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

Понравилась статья?
Подпишись на меня

Комментарии (2)


  1. azTotMD
    04.06.2024 18:24

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

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


  1. dv0ich
    04.06.2024 18:24

    Всё плохо с симуляциями, до сих пор. Недавно играл в расхваленный Cyberpunk 2077 на околотоповом компе - всё та же стерильно-пластиковая картинка, что и 15 лет назад в играх, разве что разрешение выше. В RDR2 получше с картинкой, но движения живых существ всё такое же неестественно дёрганое.

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

    Про какую-то психологию, экономику и прочие аспекты я вообще молчу.

    Не знаю, как выйти из этого явного тупика. Либо наращивать вычислительные мощности на порядки и тупо делать всё в лоб, либо придумывать какие-то совершенно новые подходы в программировании. А возможны ли они на тьюринговских машинах? Может, квантовые компы - то что нужно для полноценных симуляций?