Некоторые принципы построения архитектуры вселенной №2 возьмём из вселенной №1, смотри цитату ниже. Это разбиение пространства на кубики. Делается оно с целью возможности параллельной обработки на процессоре или видеокарте. Таким образом физика в нашем проекте не ограничена по быстродействию. Насколько я знаю, до сих пор не существует компьютерных моделей физики, которые можно неограниченно параллелить.
talash писал(а):Архитектура вселенной №1.
Итак, с целью возможности параллельной обработки, делим нашу вселенную на ячейки - кубики. Каждая ячейка может обрабатываться независимо в многопоточном режиме. Дафния занимает одну ячейку. Каждая ячейка состоит из следующих элементов:
Тип
Цвет
Два набора фотонов
Тип - это может быть стена, корм, пустота или наблюдатель(Дафния).
Цвет - задаётся для всех типов ячеек, кроме пустоты. У пустоты цвет игнорируется. Цвет Дафнии тоже не важен, пока она одна во вселенной. В будущем сделаем возможность существования множества существ на одном сервере.
Два набора фотонов - нужны для параллельной обработки ячеек. В чётные кванты времени для каждой ячейки обрабатывается чётный набор фотонов, например, если это пустота, то берётся информация о пришедшем фотоне и, в зависимости от направления, переносится в соседнюю ячейку в соответствующее место в нечётном наборе фотонов. У каждой ячейки количество мест в массиве фотонов соответствует количеству соседних ячеек, таких ячеек 26 (учитываются также соседи по диагонали). В нечётные кванты времени обработка происходит аналогично.
Таким образом достигается распараллеливание вычислений без использования мьютексов. Пока Дафния одна, физику можно обрабатывать только вокруг неё. В результате я получил на не самом быстром процессоре (даже не на видеокарте) внушительное быстродействие, порядка 20000 квантов времени в секунду.
viewtopic.php?f=14&t=272
2. Как обеспечить изотропность пространства?
Нужно постараться сделать пространство изотропным, используя минимальный объём памяти. Будем пытаться добиться не идеальной изотропии, а лишь статистической. То есть, мгновенно изотропия может нарушаться, но в среднем должна быть одинаковой. Для этого мы возьмём протон, состоящий из одной ячейки пространства. Он будет испускать по всем направлениям "полевые фотоны" каждый квант времени. Сначала на первом шаге проекта наше поле не будет ослабевать при удалении от протона. Нужно добиться, чтобы в большую сферу, в центре которой расположен наш протон, равномерно(в среднем) прилетали полевые фотоны.
3. Дальнейшие шаги сильно зависят от успеха шага 2. Пока их расписывать не будем.