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 - координаты
колонка таблицы pos содержит декартовы координаты каждого атома, где [0,0] - центр сцены
единицей измерения выбран стандартный игровой диаметр атома. в молекулярной физике этой единице измерения примерно соответствует Ангстрем, равный диаметру атома водорода, и равный шагу кристаллической решетки большинства кристаллов
настоящий ангстрем имеет размер 10-10м, однако наши “игрушечные” атомы имеют гораздо большие размеры
например, в Protobiome размер атома примерно соответствует размеру живой клетки организма, а в симуляции Planet один атом соответствует примерно футбольному мячу, а в крупномасштабной симуляции Cosmos - один атом может соответствовать целой звезде
- rgb - цвет
колонка таблицы rgb описывает цвет каждой частицы стандартным для компьютеров способом - мы указываем количество красного, синего и зеленого, чтобы получить итоговый оттенок, например:
[1,1,1] - белый [1,0,0] - красный [0,1,0] - синий [0,0,1] - зеленый [0.5,0.5,0.5] - серый [0,0,0] - черный
Этот процесс называется “render” или “visualization”
-
vel - вектор скорости
-
size - размер частицы
…
animate() - расчет следующего кадра симуляции
forces
chemics
phase
Basics of programming and simulations for everyone
Model, Render, Interface
- memory
- variables
- mathematics
- iterations
- arrays
- objects
- conditions
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?
- definition
- update
User Interface
interaction
- joystick
- mouse
- keyboard
- monitor
- audio
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