Флейм
GameDev.ru / Флейм / Форум / Матричная разработка. Размышления о новой парадигме игровых движков (2 стр)

Матричная разработка. Размышления о новой парадигме игровых движков (2 стр)

Поделиться
Advanced: Тема повышенной сложности или важная.
Страницы: 1 2
ZegalurПостоялецwww18 июля 201715:21#15
галерея прикольная :)
http://www.dangermouse.net/esoteric/piet/samples.html

генератор простых чисел:
Изображение

аппроксимация пи:
Изображение

slatazanПостоялецwww19 июля 20170:38#16
Virtex
Наверно, у тебя сбой в терминах - матрицы нужны для графических нужд. А у тебя, нечто _опора_на_таблицу, где ячейка базовой таблицы, может содержать чилд-таблицу.

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

VirtexПостоялецwww7 дек. 20171:31#17
Еще вореция идеи.

Пиксель-функции

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

Движок игры в каждом кадре вызывает функцию pixel с координатами всех пикселей поочередно.

Если не пользоваться визуальным матричным редактором (типа Excel), а описывать код для всех ячеек в одном текстовом файле, то для реализации такой схемы удобно использовать функциональные или логические ЯП - позволяющие осуществлять перегрузку функций по значению параметров. Примеры такого кода:

pixel (0, 0) :- <тут всякий код для вычисления этого пикселя>.

pixel (3, 4) :- <тут всякий код для вычисления этого пикселя>.

// Плюсы хитрой перегрузки - одной строчкой кода заливаем весь 1-й экранный столбец красным цветом
pixel (1, _) :- red.

// Заливаем нечетные ячейки во 2-м столбце синим, а четные - зеленым
pixel (2, Y) :- if odd(Y) then blue else green.

// Вычисляем пиксель через другие пиксели, как в Excel
pixel (5, 1) :- pixel (0, 0) + pixel (3, 4) + pixel (1, 1).

// Отрисовка движущегося объекта
pixel (X, Y) :- <тут код, не привязанный к конкретным координатам, и, например, сравнивающий их с координатами некоего игрового объекта - при совпадении возвращает его цвет>.

// Отрисовка другого движущегося объекта.
// Заголовок функции такой же, как у той, что выше. Они вызовутся обе.
pixel (X, Y) :- <некий код, но для другого объекта>.

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

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

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

Также виртуальными пикселями могут быть не изображения, а динамические объекты. И тогда ячейки матрицы могут не цвет вычислять, а какое-либо состояние объектов.

* * *

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

В качестве разминки можно подумать, как выглядел бы шутер на таком движке. :)

Правка: 7 дек. 2017 1:55

БаберПостоялецwww7 дек. 20171:44#18
Virtex
> Пиксель-функции
  Подкину тебе идею "нейро-пиксель-функция"
VirtexПостоялецwww7 дек. 20171:48#19
Бабер, и чо там? нейросети? :)

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

БаберПостоялецwww7 дек. 20171:51#20
Virtex
> Бабер, и чо там? нейросети? :)
  Да, если тебе покажется мало просто "пиксель-функций"

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

Правка: 7 дек. 2017 1:55

gamedevforПользовательwww7 дек. 201721:48#21
Нужно добавить нейросети, блокчейн, бигдата, машинлининг.
VirtexПостоялецwww8 дек. 20170:46#22
Тыщ-пыщ-ололо, я водитель НЛО. Матрица пиксель-функций в действии:

Изображение

Я там в формулах использую время (функция tics у меня считает кадры), это позволяет динамически менять цвет пикселей, создавать эффект мерцания и иллюзию движения.

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

Матрица пиксель-функций | Матричная разработка. Размышления о новой парадигме игровых движков

Я еще подумаю, как прицепить другие фишки матричного движка, описанные в данном треде. Может, функционал Пролога там пригодится.

* * *

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

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

Но это без геймплея пока...

Страницы: 1 2

/ Форум / Флейм / Разработка игр

2001—2017 © GameDev.ru — Разработка игр