Как делают 3D-игры на Playdate: разбор невозможного на монохромной консоли

Гаджеты Олег Васильевич Клод 23.07.2026 4 мин чтения 9 просмотров
Как делают 3D-игры на Playdate: разбор невозможного на монохромной консоли

Инди-разработчица Кристина Рамос (Cristina Ramos) 22 июля 2026 года опубликовала в Bluesky видео своего незавершённого 3D-проекта для Playdate, консоли, которую индустрия дружно записала в неспособные на объёмную графику. На ролике герой сначала лезет вверх по интерьеру помещения, а потом выбирается на крышу и прыгает между зданиями от первого лица, почти покадровая цитата из Mirror's Edge. И всё это на устройстве без видеокарты и с экраном, который знает ровно два цвета. Разберём по шагам, как здесь устроено 3D.

«Мне говорили, что на Playdate нельзя сделать 3D, и я это сделала. Потом говорили, что я ни за что не создам уличные уровни, как в Mirror's Edge, и я снова доказала обратное», написала Рамос. За её словами стоит инженерный подвиг. Ниже я покажу, где именно проходит граница, за которой Lua перестаёт справляться и в дело идёт C.

Что вообще такое Playdate

Playdate, карманная консоль от студии Panic из Портленда, железо для которой спроектировали вместе с Teenage Engineering. Вышла в 2022 году, стоила 179 долларов на старте (позже 199), по нынешнему курсу это примерно 15-17 тысяч рублей. В комплекте шёл сезон из 24 игр, которые выдавались по две в неделю. Фирменная фишка устройства, заводная рукоятка (crank) сбоку, помимо привычной крестовины и кнопок A/B.

Экран и железо: почему 3D казалось фантастикой

Экран, 2,7-дюймовый Sharp Memory LCD с разрешением 400×240 и глубиной цвета в один бит. Один бит. Это значит: только чёрный и белый, без единой градации серого. Подсветки нет, экран отражающий. Внутри процессор ARM Cortex-M7, 16 МБ оперативной памяти и полное отсутствие графического ускорителя. Вся картинка рисуется программно, силами одного CPU. Отсюда и репутация невозможной затеи.

Дизеринг: чёрное, белое и ничего между

Главный враг объёмной графики на Playdate, 1-битный экран. В обычном 3D ощущение объёма создают тени и плавные переходы яркости: дальняя стена темнее, ближняя светлее, на округлых поверхностях градиент. На Playdate такого инструмента нет физически. Пиксель либо горит, либо нет.

Решение сообщество нашло старое, как ранняя компьютерная графика: дизеринг. Полутон имитируется узором из чёрных и белых точек, и чем плотнее чёрные точки, тем темнее кажется область глазу с расстояния. Упорядоченные точечные и штриховые паттерны заменяют собой всю палитру серого. Отсюда и узнаваемый визуальный почерк 3D на Playdate, рябящая, почти газетная фактура поверхностей. Именно дизеринг отвечает за то, что на видео Рамос стены и крыши читаются как объёмные, а не как плоские силуэты.

Без видеокарты: как один Cortex-M7 рисует полигоны

Раз GPU нет, растеризацией полигонов занимается процессор, тот самый Cortex-M7. Каждый треугольник сцены нужно спроецировать, отсечь, залить узором и вывести на экран вручную, кадр за кадром. Чтобы это укладывалось в приемлемый фреймрейт, разработчики достают классический набор оптимизаций софт-рендера:

  • Backface culling: не рисуем грани, повёрнутые от камеры, их всё равно не видно.
  • Жёсткий лимит на число полигонов в кадре, сцены проектируют так, чтобы геометрии было мало, но она работала на силуэт.
  • Плоская заливка дизер-узором вместо попиксельного освещения.
  • Иногда отрисовка каркасом (wireframe), когда заливка слишком дорога.

Обходные техники вместо честных полигонов

Есть и обходные пути, не требующие честного полигонального рендера. Псевдо-3D в духе Mode 7, когда плоскость просто масштабируется и наклоняется. Рейкастинг, техника движков уровня Wolfenstein 3D и раннего DOOM, где мир строится из вертикальных полос. Кстати, DOOM на Playdate уже запускали, это и был первый громкий пример «невозможного», после которого сомневаться в консоли стало неприлично.

Lua или C: где проходит граница

SDK у Playdate бесплатный и двухъязычный: высокоуровневый Lua и низкоуровневый C, плюс симулятор для отладки. Lua хорош для прототипов и игровой логики, на нём быстро и приятно писать. Но 3D-математика (проекции, повороты, сортировка полигонов) и сам софт-рендер на Lua не влезают в бюджет кадра: интерпретируемый язык съедает слишком много тактов.

Граница проходит так: сценарий, интерфейс, управление на Lua; всё, что крутится в горячем цикле отрисовки, на C. Тяжёлые вычисления выносят в нативный код, иначе паркур по крышам превратится в слайд-шоу. Этот компромисс и отделяет милую 2D-игру выходного дня от 3D-демо, которое заставляет людей писать «этого не может быть».

Ограничение как творческий ресурс

История Playdate показывает, что жёсткие рамки не убивают творчество, а фокусируют его. Один бит цвета, нет GPU, 16 МБ памяти, и вместо жалоб появляется дизеринг, рейкастинг, аккуратно вырезанная геометрия. Разработчики находят консоли и вовсе неожиданные применения: одна из них, например, помогает Биг-Бену звонить точно по времени.

Нам в Sigma эта логика близка: самые интересные инженерные решения рождаются там, где кто-то отказался принимать «это невозможно» за ответ, будь то 3D на чёрно-белом экране или доступ к сайту, который «нельзя открыть».

Опрос 0 голос.

Что сильнее впечатляет в 3D на Playdate?

Коротко: как сделать 3D на Playdate

  1. Забудьте про серый, объём и тени имитируйте дизерингом (узоры из чёрных и белых точек).
  2. Готовьтесь к софт-рендеру: GPU нет, полигоны считает Cortex-M7.
  3. Экономьте геометрию: backface culling, минимум полигонов, при необходимости wireframe.
  4. Логику пишите на Lua, горячий цикл рендера на C.
  5. Рассмотрите обходные техники: рейкастинг или Mode 7 вместо честных полигонов.

Источники

Engadget, о 3D-демо Кристины Рамос для Playdate

Вопрос читателям

А вы бы стали играть в 3D-паркур на чёрно-белом экране 400×240, или это уже перебор?

Ответить в комментариях
NVIDIA снова повышает цены на видеокарты: почему дорожает железо и чего ждать покупателям
Читать следующую NVIDIA снова повышает цены на видеокарты: почему дорожает железо и чего ждать покупателям

Комментарии

0
?

Пока нет комментариев. Будьте первым!