Только что получил несколько сырых идеек насчет движка и решил поделиться.
Этот фрактальный воксельный мирОн имеет "фрактальные" целочисленные координаты: координаты, координаты внутри координат и координаты внутри них, и т.д.
Первые я буду называть супер-координатами, или координатами первого порядка, а все остальные - второго, третьего, ..., последнего.
Всем им соответствует воображаемые пространственные объекты, которые я буду называть вокселями n-го порядка (или супер-вокселями, если n = 1).
*** Иллюстрация! ***
Никто не знает, сколько на самом деле порядков, ведь архитектор этого мира предусмотрел неограниченное их количество. Прагматика и прочая травматика требуют только 3 порядка для полноты, но я упрощу теорию более того, ведь главное - уловить принцип.
Итак, у нас только 2 порядка координат и соответственно 2 порядка вокселей, то бишь
координаты и
супер-координаты,
воксели и
супер-воксели. Так и будем их называть, чтоб не путаться с порядками.
Супер-воксели имеют размер наибольшего в мире глайдера. Полагаю, это Мастодонт.
Расположение глайдера может быть нечетко задано при помощи 27 супер-вокселей, поскольку глайдер может пребывать в нескольких супер-вокселях одновременно (максимум 8, на стыке всех них), при этом центральный очевидно содержит центр масс глайдера.
Когда центр масс глайдера меняет супер-воксель, глайдер переносится из одного блока супер-вокселей в другой, стирая себя из 9 супер-вокселей и записывая в новые 9.
Таким образом, каждый супер-воксель хранит информацию обо всех глайдерах в непосредственной близости (и центров масс внутри себя).
Воксель делает почти то же самое в отношении вершин глайдера, при этом каждая из них определена точно как бы (почему как бы - читать поправку дальше).
Таким образом, каждый воксель хранит информацию обо всех вершинах внутри себя.
(Еще воксель хранит параметры атмосферы, соленость почвы, радиационный фон и пр.)
*** Иллюстрация! ***
Это изображение глайдера и его вокселей. Ярко-зеленые воксели содержат 1 и более вершин.
Каждый супер-воксель периодически проверяется на взаимодействие объектов внутри себя друг с другом и объектами из соседних супер-вокселей.
Тест на взаимодействие углубляется до проверки коллизии вокселей, так, что воксели содержат вершины разных объектов. Если это правда, происходит тудуц (*to do C. - to do collision).
Чтобы не грузить комп, архитектор сделал для каждого глайдера воксельную модель, прогнав вершины через простенький цикл.
Таким образом, каждый глайдер имеет воксельную модель размером с супер-воксель.
(При этом ярко-зеленые воксели хранят информацию о температуре, повреждениях и жизненно-важных узлах)
По мере того как глайдер двигается и 27 супер-вокселей непусты, воксельная модель накладывается на воксельный мир, с погрешностью до 1 вокселя по всем направлениям (т.е. нужно проверять соседние воксели подобно тому, как это производилось с супер-вокселями).
Таким образом, архитектор использует единый алгоритм для теста на коллизию n-го порядка.
(Разумеется, для ясности терминологии я решил, что тест на коллизию должен иметь порядок, как и соответственный ему порядок вокселей)
То бишь:
1. Тест глайдеров внутри супер-вокселя и по соседству
2. Тест вершин глайдеров внутри вокселя и по соседству
* * *
n. Реализация физики столкновений на основании форм контактирующих поверхностей и пр. данных
Пока все.
Добавлено:Хотя последняя часть, вероятно, хрень. Говорю же, сырое. (Почти что размышление вслух)