nzeemin(27.12.2022)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Hydro Fool
https://nzeemin.github.io/skoolkit-g...asm.html#27862
200+ комнат
Используются описатели комнат переменной длины.
Один байт на длину описателя.
Один байт на тип комнаты (16 типов) и цвет.
Тип комнаты - это тоже описатель переменной длины.
Основная часть описателя - предметы и их расположение в комнате.
- - - Updated - - -
Commando - вертикальный скроллер, прокрутка вниз
https://nzeemin.github.io/skoolkit-g...asm.html#37430
Уровень это последовательность объектов, которые появляются по мере движения вперёд.
Задаётся только положение объектов рельефа, но не врагов, враги спавнятся сами. Например, если стоит камень определённого вида, то за ним появится враг.
- - - Updated - - -
Bruce Lee под Atari 8-bit и Commodore 64
https://forums.atariage.com/topic/28...omment=4236353
Тайлы размером 4x8 (растянуты до 8x16 на экране), набор тайлов уровня закодирован через RLE для компактности.
vlad-kras(26.12.2022)
Насколько я помню на форуме уже дизассмили этого самого Саботёра - можно спросить того, кто это делал как оно там сделано.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Alex Rider может расскажет, вот тут его тема была - https://zx-pk.ru/threads/24604-saboteur-2-remake.html
@Alex Rider, рассказывайте про формат карты в Саботере 2![]()
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Рассказываю, пока по памяти, без подробностей, которые надо доставать из кода. Если надо будет, гляну позже. Краткий ответ на вопрос: скрипты.
Все игровое пространство разбито на комнаты (экраны), каждый имеет свой однобайтовый номер (тип, идетификатор). Итого, имеем матрицу номеров комнат.
Тип комнаты задает ее отрисовку (почти всю, что-то иногда дорисовывается логикой). Некоторые комнаты повтоярются, особенно в подземелье.
Есть 256 спрайтов фона и 256 спрайтов переднего плана, они состоят из тайлов.
Комнаты бывают 2 типов: надземные и поздемные.
Надземная комната - это скрипт из команд в духе "положи спрайт фона N в X,Y", "нарисуй горизонтальную линию из тайлов N переднего плана из X,Y длины L", "заполни тайлом фона N прямоугольник от X,Y размером W,H".
Типов комнат подземелья мало того, что не густо, так там еще, насколько я помню, "двойная" спрайтовая система: комнаты разбиваются на 6 блоков (3x2 блока), комната кодируется 6 байтами - номерами блоков, а сами блоки задаются теми же скриптами. Иногда в комнатах скриптами дорисовываются какие-нить лампы, например.
Всякие интерактивные и меняющиеся объекты задаются логикой, разбросанной в игре примерно везде - пихаются в тайломапы напрямую и отрисовываюстся в следующем цикле отрисовки. В моей версии чуть более собранно в кучу для оптимизации.
Если интересны подробности - задавайте вопросы, но ответить могу сильно не сразу.
Последний раз редактировалось Alex Rider; 27.12.2022 в 13:06.
ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.
Barmaley_m(01.01.2023), Bedazzle(27.12.2022), mastermind(29.12.2022), nzeemin(27.12.2022), Rus(27.12.2022), vlad-kras(27.12.2022), Xela(27.12.2022)
Когда-то был разговор про Саботёра 2 и ракету - я даже делал снапку где подправил экран с ракетой так, чтоб к ней можно было пройти.
Действительно, там это всё строится типа скриптов и надпись NINA на ракете например пришлось выкладывать по букве, а вот пробить проход к ней - всего-лишь "пустой" прямоугольник шлёпнуть в стену (нужный размер указав). Где-то на форуме вроде выкладывал файл...
Дело было вечером, делать было нечего...
https://disk.yandex.ru/d/gEbTnSopXnLggw
ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.
Целей было несколько:
* понять не осталось ли каких-то скрытых возможностей в версии 128К.[хотя это вряд ли]
* изучать ассемблер не только по доступным мне книгам, но и на практике на основе знакомой игры с несложной графикой, анимацией и кодом.
* затем, разобравшись в структуре кода, перегнать всё в SkoolKit т.к. удобно видеть графику и разделенный на логические блоки код.
* создать множество учебных примеров, постепенно подключая всё новые и новые блоки в EmuzWin(где-то временно убирая/меняя код) по такой схеме, чтобы в конце выйти на всю игру:
просто текст в Главном меню стандартным шрифтом;
всё предыдущее + игровой шрифт;
... + картинка Ниндзя в Главном меню;
... + таблица High Scores;
... + выбор управления;
... + выбор миссий;
... + AY;
... + нижняя рамка;
... + объекты фона и листать их клавишами;
... + построить комнаты с объектами фона и листать их;
... + карту игрового пространства и перемещаться переключая их;
... + добавить тайлы Ниндзя, его движение по комнатам;
... + работа лифтов, консолей, мотоцикла;
... + добавить ящики с оружием и возможность использовать предметы;
... + добавить врагов Ниндзя;
... + включить нанесение урона и подсчёт очков, таймер;
... + проверка условия выполнения миссий;
... + убрать некоторые ошибки.
И если бы всё получилось, то можно было бы оформить гайд "Как смогли написать игру Saboteur2 на ассемблере".
N.B. как смогли, так и написали![]()
Этот проект старый и долгий, с большими перерывами и окончательно заброшенный ещё где-то в 2018 году. Что-то получилось, что-то нет. А может вы делали комментарии, когда в свою очередь разбирали код. Было бы интересно сравнить и посмотреть свои пробелы и ошибки, т.к. не все части кода до конца смог понять зачем были нужны и как работают.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)