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

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

Страницы: 116 17 18 1921 Следующая »
DexusУчастникwww16 мая 201813:20#240
gamedevfor
В большинстве платформеров количество двигающихся спрайтов небольшое. Фигачить весь задник каждый фрейм явно медленнее будет, чем ресторить фон под спрайтами как небольшой список боксов. А запоминать фон - тоже контрпродуктивно, особенно учитывая, что спрайты друг над другом могут рисоваться, в одном заполненном фоне будет другой спрайт который опять же подчищать надо. К тому же фон и так есть "чистый".

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

Правка: 16 мая 2018 13:25

gamedevforПостоялецwww16 мая 201813:35#241
Dexus
> ресторить фон под спрайтами
Это ж будет лажа, если два спрайта перекрывают друг друга.

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

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

Правка: 16 мая 2018 13:35

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

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

VirtexПостоялецwww16 мая 201813:57#243
skalogryz
> т.е. конфликта атрибутов ждать не придётся?

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

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

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

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

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

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

=A=L=X=Постоялецwww16 мая 201814:45#244
Не, нравится мне всё-таки ассемблер 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

Правка: 16 мая 2018 14:51

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

Правка: 16 мая 2018 15:05

AlikberovПостоялецwww16 мая 201815:38#246
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» или побольше теневых регистров, можно ещё упростить…
Но, «РЛК»-закалка даёт о себе знать - работаю как спартанец…

Правка: 16 мая 2018 16:04

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

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

Правка: 16 мая 2018 16:02

=A=L=X=Постоялецwww16 мая 201816:01#248
Alikberov
Dexus

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

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

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

Правка: 16 мая 2018 17:22

0iStalkerМодераторwww16 мая 201816:34#250
Alikberov
> Тo 8x8 - мало, то 32x32 - много.

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

Правка: 16 мая 2018 16:34

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

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

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

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

Правка: 16 мая 2018 19:19

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

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

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

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

Правка: 16 мая 2018 22:30

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

Правка: 16 мая 2018 23:07

Страницы: 116 17 18 1921 Следующая »

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

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