Simulation Theory

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

Все компьютерные симуляции работают по общим принципам:

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

Затем, на основе данных таблиц, мы вычисляем новые числа, которые характеризуют состояние элементов Вселенной в следующий момент времени, и записываем их в таблицу вместо старых значений. в SST рассчет нового состояния Вселенной на основе старого называется “animate”, потому что именно он “оживляет” статичную картинку, превращая изображение в анимацию

model(t) => update formulas => model(t+1)

Таким образом, мы вычисляем состояние симуляции кадр за кадром, и наша виртуальная Вселенная развивается. Каждый отдельный момент времени называют “frame”, “tick” или “timestep”. Поэтому, время в виртуальных симуляциях измеряется не в секундах, а в кадрах, как на кинопленке

В каждый момент времени мы можем использовать данные из таблиц, чтобы нарисовать текущий кадр симуляции на экране. Этот процесс называется “render” или “visualization”.

Таблицы чисел

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

Например, таблица Cosmos.Node

pos[x,y]vel[x,y]rgb[x,y,z]size
[0,0][0,0][1,1,1]1
[1,0][1,0][1,0,0]1

описывает 2 атома

колонка таблицы pos содержит декартовы координаты каждого атома, где [0,0] - центр сцены

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

настоящий ангстрем имеет размер 10-10м, однако наши “игрушечные” атомы имеют гораздо большие размеры

например, в Protobiome размер атома примерно соответствует размеру живой клетки организма, а в симуляции Planet один атом соответствует примерно футбольному мячу, а в крупномасштабной симуляции Cosmos - один атом может соответствовать целой звезде

колонка таблицы rgb описывает цвет каждой частицы стандартным для компьютеров способом - мы указываем количество красного, синего и зеленого, чтобы получить итоговый оттенок, например:

[1,1,1] - белый [1,0,0] - красный [0,1,0] - синий [0,0,1] - зеленый [0.5,0.5,0.5] - серый [0,0,0] - черный

Этот процесс называется “render” или “visualization”

animate() - расчет следующего кадра симуляции

forces

chemics

phase

Basics of programming and simulations for everyone


Model, Render, Interface

how simulations works

describe model on start
loop {
   physics
      animate model - update internal variables with mathematically calculated values (apply basic school physics formulas)
   graphics
      render model to visualize it
   UI
      show UI
      update model from user input
}

how to describe model?


User Interface

interaction

take ideas from reality (cosmos, geology, chemistry, physics, biology, technology)

Wikipedia is a very good source of examples, because our reality works by the same principles as SST. Wikipedia also is very structured and even contains physics formulas

insight

Actually, you can just walk to the nature, watch on the landscapes, animals and even fill yourself

for example, try to feel how your motor commands to the muscles move your internal body structures and how gravity influences on resulting body movement

feel mass and speed of every part of your body, how internal bones and muscles work together, what constraints and degrees of freedom has your body