Войти
ФлеймФорумПроЭкты

Spectrum style по-современному [исследовательский проект] (17 стр)

Страницы: 116 17 18 1922 Следующая »
#240
13:20, 16 мая 2018

gamedevfor
В большинстве платформеров количество двигающихся спрайтов небольшое. Фигачить весь задник каждый фрейм явно медленнее будет, чем ресторить фон под спрайтами как небольшой список боксов. А запоминать фон - тоже контрпродуктивно, особенно учитывая, что спрайты друг над другом могут рисоваться, в одном заполненном фоне будет другой спрайт который опять же подчищать надо. К тому же фон и так есть "чистый".

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


#241
13:35, 16 мая 2018

Dexus
> ресторить фон под спрайтами
Это ж будет лажа, если два спрайта перекрывают друг друга.

Dexus
> Мышь с восстанавливающимся фоном я году в 93м ещё делал.

Алгоритм вечен и даже сейчас актуален.

#242
13:53, 16 мая 2018

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

Вот есть игра Spooked. На ютубе очень короткий видос, прохождения просто не существует. В детстве кучу времени на неё убил но так и не прошёл. Примечательна тем, что она идёт в 50fps, и дико бесявая (вероятно даже более бесявая чем underwurld). Эти 50fps обеспечиваются как раз рисованием спрайтов через XOR, и что их мало на экране.

#243
13:57, 16 мая 2018

skalogryz
> т.е. конфликта атрибутов ждать не придётся?

Боюсь, современные геймеры не поймут. В комментах к спектрумовским Ютубо-роликам они это называют крипотой. :)

Разве что только в некоторых игровых жанрах это может быть фичей, а не багом... Киберпанк, кибер-ужастики...

> т.е. конфликта атрибутов ждать не придётся?

Задача исследования - не копировать Спектрумовские игры, а сделать ЛУЧШЕ. Улучшить графику будет тяжело, если жестко учитывать клэшинг.

В принципе можно, конечно, 3D игры просто делать двухцветными, как это было на Спектруме.

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

#244
14:45, 16 мая 2018

Не, нравится мне всё-таки ассемблер 8-битный.
Четыре функции по цене одной:

; mul_u8x8
; in:  d, e - множители,
; out:  hl <- d * e
mul_u8x8  ld hl, 0

; mac_u8x8
; in:  hl - накопитель (начальное значение)
;  d, e - множители
; out:  hl <- hl + d * e
mac_u8x8  push bc
    push de
    ld a, d
    ld d, 0
    jp mac_u8x16.ent

; mul_u8x16
; in:  a, de - множители
; out:  hl <- a * de
mul_u8x16  ld hl, 0

; mac_u8x16
; in:  hl - накопитель (начальное значение)
;  a, de - множители
; out:  hl <- hl + a * de
mac_u8x16  push bc
    push de
.ent    ld b, 8
.loop    srl a
    jr z, .quick_end
    jr nc, .skip
    add hl, de
.skip    sla e
    rl d
    djnz .loop
.end    pop de
    pop bc
    ret
.quick_end  jr nc, .quick_skip
    add hl, de
.quick_skip  pop de
    pop bc
    ret
И ведь все такие писькомерства на современных процах практически не имеют смысла. А вот на древности дремучей сэкономил пару байт - и сердцу радостно. xD

#245
15:05, 16 мая 2018

=A=L=X=
Да есть какая-то прелесть в поимитивных процессорах, вытягивать такты и байты, это вполне подвластно возможностям человека. А вот в современных процессорах вытягивать такты и байтов вручную - это уже чересчур - всё перенесено в более высокоуровневые языки и компиляторы... а вся эта радость ручного оптимайза полностью отвалилась...

#246
15:38, 16 мая 2018

Dexus
> Давай код со спрайтами 16x16 хотя бы

+ Спрайт 32x32 - с запасом и маской :)

Пояснeние:
Регистры HL указывают адрес, куда нужно выводить. Не координаты, а именно адрес.
Но, есть одна особенность HL = SSSYYYYY YYYXXXXX.
Здесь биты «SSS» - шифтинг. Т.е. в трёх старших указывается, на сколько пикселей спрайт сдвинуть вправо.
Неудобно? Это так кажется на первый взгляд.
Если «BC=$2000», то одной «ADD HL,BC» спрайт смещается вправо. Если «CF» чист, значит спрайт остаётся в пределах 8 пикселей. Иначе, инкремент «L» уже и переход на следующее знакоместо.
На практике - удобно и компактно!
Важно:
В «DE» адрес спрайта должен быть всегда выравненным. Так как 32x32 - это 128 слов (XOR-байт и AND-байт), то разумно эти 256 байт хранить в памяти «ровненько»…

P.S.: Собственный код с «блэкджеком и…»…
Если задействовать «IX», «IY» или побольше теневых регистров, можно ещё упростить…
Но, «РЛК»-закалка даёт о себе знать - работаю как спартанец…

#247
15:58, 16 мая 2018

Alikberov
> На практике - удобно!
Нет. Координаты в пикселях - удобно. А всякие эти перестановки - нет.
Плюс, ты спрайт заполняешь по столбцам, дважды обрабатывая одни и те же адреса (как для левой так и для правой сдвинутой половины). Это просто швах, чел... 32х32 не нужно, такие большие спрайты практически никогда не используются на zx. 2x2 знакоместа - вполне себе стандартно и охватывает 90% случаев.

> Но, «РЛК»-закалка даёт о себе знать - работаю как спартанец…
Это скорее привычка, крайне вредная для zx. Поэтому такой швах и генеришь тут:)

#248
16:01, 16 мая 2018

Alikberov
Dexus

Да хватит уже накаливать градус. Вот-вот разосрётесь. А смысл?

#249
16:12, 16 мая 2018

Dexus
> 32х32 не нужно, такие большие спрайты практически никогда не используются
Тo 8x8 - мало, то 32x32 - много. Оказывается, Спектрумщикам угодить так сложно… O_o
Код отладил и написал, можно сказать, на заказ и скоро…

P.S.: Сейчас замерю скорость только и…
Вывод 35840 спрайтов 32x32 занял чуть больше 8 минут!
Итого: 75 спрайтов в секунду - ужасные тормоза!!!
Вывод 42240 спрайтов 16x16 занял более 3 минут.
Итого: 211 спрайтов в секунду - 4 спрайта в кадр.

#250
16:34, 16 мая 2018

Alikberov
> Тo 8x8 - мало, то 32x32 - много.

Было порядком хороших игр с большими спрайтами, тот же Freddy Hardest или Navy Moves

#251
16:49, 16 мая 2018

0iStalker
Есть испанские игры с огромными анти-клэшинговыми спрайтами, типа Astra Marine Corps. И шлепались они по знакоместам - им не нужна пиксельная точность. И рисуют картинку они кстати очень медленно, потому что каждый фрейм в оффскрине рендерят целиком весь экран, и кидают в экран достаточно примитивно (не через стэк). То есть в технологическом плане это такая же хрень каки какой-нибудь Benny Hill, Popeye, или Trap Door, только спрайты не цветные кляксы, а с дизерингом. Тормозная огромная мазня, короче :) пардон.
Но вот эта - ну и сколько ФПС там? Дай бог 5.

Вот от той же студии Dinamic


Скорость на уровне, спрайту маленькие.
Возьми тот же Rex, или Myth - эталоны качества, спрайты маленькие.

И тот же savage - огромная тормозная но очень красочная графика, которая шлёпается по знакоместам.

#252
22:05, 16 мая 2018

Alikberov
> Вывод 35840 спрайтов 32x32 занял чуть больше 8 минут!
> Итого: 75 спрайтов в секунду - ужасные тормоза!!!
> Вывод 42240 спрайтов 16x16 занял более 3 минут.
> Итого: 211 спрайтов в секунду - 4 спрайта в кадр.

Плохой из тебя танцор на ZX. Не твоя это платформа. )))

#253
22:29, 16 мая 2018

gamedevfor
Ну на ZX и не с такими тормозами "танцевали" :) Шустрость - это уже потом стала появляться, когда начали вылизывать код, когда набили руку.

Свою процедуру для 2х2 я всё-таки сделаю, пока подготавливаю основу.
Думаю делать с одной таблицей для смещения в 4 пикселя (512 байт). Не для каждого из 7. Пока набросок такой:
0 - как есть
1 - один сдвиг вправо
2 - два сдвига вправо
3 - таблица + один сдвиг влево
4 - таблица
5 - таблица + один сдвиг вправо
6 - два сдвига влево
7 - один сдвиг влево

#254
23:06, 16 мая 2018
Dexus
Ну на ZX и не с такими тормозами "танцевали" :) Шустрость - это уже потом стала появляться, когда начали вылизывать код, когда набили руку.

Страницы: 116 17 18 1922 Следующая »
ФлеймФорумПроЭкты

Тема в архиве.