parallelno (15.11.2022)
Ага, приходится постоянно бить себя по рукам и писать в коде TODO. Какое-то представление что должно получится вроде имеется. Идею игры обдумал с детьми еще на этапе бенчмарков. Представление об игровых движках тоже какое-то есть. Но если честно то уровень изврата чтобы выцарапывать скорость я себе не представлял.
Еще апдейт. Пофиксил и оптимизировал востановление бэка, коллизию с тайлами. Добавил обработку колизий герой-монстр. Добавил обработку демеджа, добавил простенький UI для отображения жизни героя.
jerri, придумал как сэкономить на сортировке по высоте. Можно чтонить быстрое но не обязательно эффективное использовать. Типа сортировку пузырком и делать один проход по списку оъектов за апдейт. За несколько апдейтов будет все отсортировано. Так как частота перемещивания спрайтов по высоте не высока, то поидее должно работать.
И еще хочу попробовать чекать колизии монстров с героем каждый второй апдейт. По идее тоже будет чуть быстрее. И делать это с учётом сортировки по высоте.
Последний раз редактировалось parallelno; 18.11.2022 в 11:46.
Очередной апдейт.
Перелопатил билд систему. Теперь добавлять новых мостров и разпределять данные по страницам квазидиска стало легко как никогда. Это позволило положить спрайты героя для левого и правого направления в разные страницы, так как в один сегмент (~32K) они уже не влезают.
билд скрипт теперь готовит статистику. Можно видеть где что и сколько памяти осталось. Показана ниже:
Добавил новых монстров для лучшего понимания потребления памяти и времени на прешифт. Иногда монстрики делают лунную походку Майкла Джексона. Это ок, мозги у них пока такие же простые как у скелета.Код:; ram-disk data layout ; bank0 addr$0000 [400 free] - sprites: ['heroR', 'skeleton', 'scythe', 'hero_attack01'] ; bank0 addr$8000 [32768 free] - empty: ; bank1 addr$0000 [7672 free] - sprites: ['knight', 'burner', 'vampire'] ; bank1 addr$8000 [0 free] - $8000-$9FFF tiledata buffer (collision, copyToScr, etc), $A000-$FFFF back buffer2 (to restore a background in the back buffer) ; bank2 addr$0000 [18046 free] - sprites: ['heroL'] ; bank2 addr$8000 [19856 free] - music: ['song01', 'gigachad16PlayerRD'] ; bank3 addr$0000 [26532 free] - levels: ['level01'] ; bank3 addr$8000 [6136 free] - $8000-$9FFF code library. $A000-$FFFF back buffer rom size: 23372 bytes ($5b4c)
Добавил новых тайлов для лучшего понимания потребления памяти.
Улучшил анимацию атаки героя.
Последний раз редактировалось parallelno; 01.12.2022 в 10:04.
Обновил AI скелета и его косы. Скелет теперь умеет следить за героем, у него появилось радиус зрения, он умеет выжидать добычу, атаковать и отдыхать после охоты. Коса может отскакивать от препятствий и дамажить героя.
Исправил скрипт для экспорта анимаций. Теперь коса вращается правильно и ноги у монстриков перебирают все кадры.
Обновил логику огонька и добавил ему новых спрайтов для атаки.
Добавлен арт и логика рыцаря. Он становится в защитную стойку если видит противника. Добавлен новый прожектайл вампира. Немного ускорено и пофикшено
переработал все скрипты для экспортера данных. теперь можно сохранять анимации в верхние сегменты банков квазидиска. сделал статистику того что сохраняется в квазидиск чуть более детальную. можно видеть сколько занимает памяти каждый ассет и сколько пустого места осталось.
переработал формат спавн данных. теперь уровень может иметь больше комнат. Добавил анимарованные объекты на заднем фоне, факел и флаг. Они очень экономно рисуются, прямо на экран минуя бэк буфер, апдейтятся по одному за кадр, а не все сразу как мобы и пули. рисуются только когда есть переход на следующий кадр анимации.
Для примера внизу статистика по памяти квазидиска ту что выдают скрипты после билда проекта.
Код:; ram-disk data layout ; bank0 addr0 [ 1054 free] description: ; hero_r_sprites [14466], skeleton_sprites [10140], scythe_sprites [1626], hero_attack01_sprites [5226], ; bank0 addr8000 [32304 free] description: ; backs_sprites [464], ; bank1 addr0 [ 5554 free] description: ; knight_sprites [16398], burner_sprites [9600], bomb_slow_sprites [960], ; bank1 addr8000 [ 0 free] description: $8000-$9FFF tiledata buffer (collision, copyToScr, etc), $A000-$FFFF back buffer2 (to restore a background in the back buffer) ; bank2 addr0 [10162 free] description: ; hero_l_sprites [14466], vampire_sprites [7884], ; bank2 addr8000 [19856 free] description: Music player and songs ; song01 [12542], gigachad_player_rd [370], ; bank3 addr0 [26212 free] description: ; level01 [6300], ; bank3 addr8000 [ 6136 free] description: $8000-$9FFF code library. $A000-$FFFF back buffer ; sprite_rd [173], draw_sprite_rd [544], utils_rd [87], sprite_preshift_rd [1538], ; [101278 total free]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)