Понимаю, что затыкаю преждевременно спровоцированный допаминовый фонтан, но есть один неприятный момент. Мячик часто пролетает в опасной близости от стен, кирпичей, бонусов, шапок итд, их не задевая. Поэтому его придется отрисовывать честно с маской и наложением, иначе он будет затирать собой соседние кирпичи, стены, бонусы и шапки. Удачно, что мячик такой маленький, да и все равно надо определять коллизии (хотя с этим еще вроде нет однозначности), так что это будет не слишком сильным ударом по общему времени цикла.
Больше игр нет
Мячик сам по себе вписан в квадрат 8x8, но семь его фаз дают в результате прямоугольник 8x16.
Бонус сейчас для простоты тоже 8 пикселей в ширину. Можно сделать его шириной в кирпич.
- - - Добавлено - - -
А как лдпуш мешает отрисовывать мячик честно с маской и наложением (которых пока нет, но будут же когда-нибудь)? Разве что несколько геморройно.
Он по-прежнему помогает, но выгода от метода заметно уменьшается.
- - - Добавлено - - -
Я видел Арканоиды, где мячики были суперпробойными, где их могло быть тьма как много, но вот никогда не видел, чтобы вдруг мячик превращался в нормальное такое ядро размером 2х4 кирпича. Это был бы зачетный бонус![]()
Больше игр нет
У меня в планах много бонусов - в виде падающих и прилипающих к ракетке якорей, например, или примерзающего к кирпичам мячика.
FPS целевого нет, есть желание сделать быстро и с переливающимися врагами.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
К слову о FPS, древний CGA-Арканоид, в который я рубился на Поиске, имел весьма переменный FPS. Может быть этого не было заметно на нормальной писишке, но на Поиске это ощущалось очень хорошо и даже помогло мне пройти его до конца. Я вообще тормоз и будь он сильно быстрее я б не справился.
О, а можно мячик-расстегайчик на веревочке? А то задалбывает ловить его снизу ракеткой.
(или это раскидайчик? чего-то у меня все смешалось)
Больше игр нет
Мячик-расстегайчик - это мячик-раскидайчик моего детства после аутопсии.
В приличных арканоидах есть некое подобие, временное примерзание к ракетке. Но можно и на веревочке, если освоить-таки Брезенхема.
А под FPS вы, наверное, имеете в виду "постоянную скорость геймплея независимо от количества движущихся объектов"?
Примерно да. Например целевой FPS 50. Надо посчитать, сколько спрайтов уместится в кадр. Если дизайн позволит иметь больше спрайтов, чем уместится в кадр, то произойдет замедление в два раза (а если намного больше, то и в три и больше).
- - - Добавлено - - -
В идеале надо еще и изменения тайлов учитывать, например выбивание кирпичей, но это одномоментные события, если на них чуть тормознет - это не критично, т.к. практически незаметно.
- - - Добавлено - - -
На всякий случай уточню, что я про случай с ожиданиями ГК после каждого цикла обновления, или с прерываниями, привязанными к ГК.
"лдпушной" вариант вывода цветного битмапа 8x8 занимает 270 тактов:
Скрытый текст
BumpBitmap8x8
; преамбула
di
mvi a, ENROM
out BANKING
; сохранить SP в HL
lxi hl, 0
dad sp
xchg ; теперь старый указатель стека в DE
lxi hl, SCREEN+8
; выводим первый столбик, снизу вверх
;lxi sp, SCREEN+8
sphl
lxi bc, 0102h
push bc
lxi bc, 0304h
push bc
lxi bc, 0506h
push bc
lxi bc, 0708h
push bc
; выводим второй столбик
;lxi sp, SCREEN+8+256
inr h
sphl
lxi bc, 090ah
push bc
lxi bc, 0b0ch
push bc
lxi bc, 0d0eh
push bc
lxi bc, 0f00h
push bc
; восстановить SP
xchg
sphl
; постамбула
xra a
out BANKING
ret[свернуть]
Вспоминая ранее сделанные выкладки про ~157 тактов на растровую строку, получим 256*157/270=148 (примерно) спрайтов 8x8 за видимую часть кадра.
Последний раз редактировалось tnt23; 16.04.2019 в 22:03.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)