Войти
Unreal EngineФорумОбщее

Симуляция attribute clash на ZX Spectrum (unreal engine 4)

#0
13:39, 2 янв. 2020

Всем привет! Есть идея воспроизвести несколько старых игр с ZX Spectrum, особенностью которого, как мы знаем, является конфликт атрибутов.

Возможно ли как-то воспроизвести данный эффект без излишней сложности (не вмешиваясь в алгоритм игры, скажем, через некий фильтр), или требуются танцы?

Кстати, вот пример такой любимой, но позабытой игры.

+ Показать

Спасибо.


#1
(Правка: 15:42) 15:38, 2 янв. 2020

yolkfolk
> Возможно ли как-то воспроизвести данный эффект без излишней сложности
да. Суть заключалось в том что можно было задать цвет графики и бэкграунд двумя различными цветами, но только для точек 8x8. Поэтому если вы создадите шейдер в котором будете передавать два цвета для точчек 8x8  или больше,получится тоже самое.
То есть цвет для белых(или цветных) точек один цвет. А то что на текстуре прозрачное, рисовать вторым.
Это актуально для 2д, вы вроде как раз таким и занимаетесь.

#2
(Правка: 16:45) 16:08, 2 янв. 2020

Вот спасибо! Теперь понятно, куда копать. Правда, возникает вопрос с определением второго цвета: ведь игра по сути трёхмерная и одна из осей героя (например, Z) не совпадает с бэкграундом. То есть получается, нужно регулярно определять цвет бэкграунда, чтобы его передавать в шейдере.

#3
19:24, 2 янв. 2020

Поэтому процесс игры и делился на экраны. У каждого экрана был изначально задан background для каждого фрагмента - черный по умолчанию (если не установлен другой принудительно). Бэк, в основном использовался для заставок, но иногда его реально применяли для расцветки. То есть, разделите свой уровень на экраны, затем каждому элементу дайте цвет. А бэк, используйте там, где надо нарисовать тоже самое, но как бы на цвете: свет от факела или показать цвет комнаты (обои) и т.д. То есть это был вспомогательный цвет. Или для того чтобы блок смотрелся естественно в другом цвете. К примеру, подчеркнуть его тень.

#4
(Правка: 20:31) 19:59, 2 янв. 2020

Salamandr
> То есть, разделите свой уровень на экраны, затем каждому элементу дайте цвет.
Ну, это всё понятно. Вопрос был немного в другом:

yolkfolk
> Возможно ли как-то воспроизвести данный эффект без излишней сложности

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

Идеальным было бы создание фильтра, который сразу осуществлял вывод в цветовом формате "Спектрума" (вне зависимости от самой игры). Но пока я ещё не придумал такой алгоритм.

#5
(Правка: 20:35) 20:27, 2 янв. 2020

всё должно быть белым)
а белый можно смешать с любым другим "без потерь" и "искажений".
То есть у нас либо есть точка, либо её нет (прозрачный участок). А цвет, отображения на экране уже задается шейдером.

Для текстур:
То есть можно использовать какой то нейтрайлный цвет (как в Doom, там был дико-розовый для прозрачности). И соответственно любой другой определять как наличие точки
Изображение
То есть все текстуры получаются монохромные, только черный и только белый например.

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

#6
14:21, 3 янв. 2020

Спасибо!
А не подскажете тогда, как это могло быть реализовано здесь:

+ Показать

Вопрос об отображении. 3д-модели и окружение, вероятно, чёрно-белые, а сверху накладывается какой-то фильтр? Или все объекты добавлены в одну группу и работа также ведётся через шейдеры?

Unreal EngineФорумОбщее

Тема закрыта.