Все новости
Это интересно
Сейчас читают
Игры
Аватар Evernews Evernews

Doom запустили на регулярных выражениях — один кадр рисуется несколько минут

0
0
Поделиться
Телеграфировать

Без распараллеливания процесс будет идти еще дольше.

Doom запустили на регулярных выражениях — один кадр рисуется несколько минут

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

Строка весит 96 мегабайт, внутри находятся виртуальные регистры процессора, оперативная память, кадровый буфер, данные WAD-файла Doom и другие данные. Технически, рассказывает Артем, все устроено довольно просто.

Артем Лыткин

Драйвер применяет к строке фиксированный упорядоченный список правил поиска с заменой: на каждом шаге срабатывает первое совпавшее правило, и срабатывает ровно один раз. Больше в системе не считается ничего, на стороне хоста нет ни интерпретатора, ни арифметики, и если удалить все правила, от машины останется просто текстовый файл.

Правила набора реализуют небольшой 32-битный процессор, где сложение идет через таблицу-сумматор на 512 записей, перенос протаскивается группами захвата, а выборка инструкции устроена как буквальный прыжок на точное число символов вглубь секции программы, посчитанное из счетчика команд. DOOM скомпилирован под этот процессор связкой 8cc и ELVM.

Работает такое решение очень медленно. Один из тестовых роликов записывался с помощью 5 машин, работавших параллельно, при этом обсчет одного кадра занимал 3 минуты. Зато картинка, которую выдает эта система, полностью совпадает с тем, что можно увидеть в реальной игре.

Исходники необычного проекта опубликованы в открытом доступе.

Читать далее
Ну на этот-то раз GTA VI выйдет вовремя?
Выйдет без переносов
2395 голосов, 20.3%
Нет, снова перенесут, но не дальше 2027 года
6306 голосов, 53.3%
Нет, перенесут на 2028 год или дальше
3123 голоса, 26.4%
Теги: Игры
Аватар Evernews
Evernews
8090 подписчиков