![]() |
Вопрос о тайловых картах
Привет всем кодерам спектурмистам.
У меня есть несколько глупых вопросов: Code:
GETILE:Карта там массив 128x20 А вопрос следующий: Если кто помнит, то в CJ Antics слоненок находится по середине, но как только достигает одного из краев, карта скроллируется возвращая его обратно на середину. Как лучше организовать игровой цикл? рисовать карту всегда (более 100 000T на прорисовку) или рисуем один раз, а потом обновляем по мере необходимости, т.е. если нужен скролл, но фон под спрайтами нужно будет сохранять.. Например в Stormlord скролл постоянный, но и карта там рисуется подругому... |
рисовать карту постоянно полностью имеет смысл при большом количестве движущихся по ней спрайтов (когда затраты на запоминание и восстановление фона становятся больше, чем время рисование карты), либо при анимированных тайлах карты. если игра типа CJ Antics - то действительно проще под этими 2-3 спрайтами фон запомнить.
|
Quote:
Я тут поизучал код Stormlord и понял что там карта рисуется постоянно,причем тоже не очень быстро, а попиксельный скролл (вернее 2-х пиксельный) реализован четырьмя наборами "декранченых" тайлов и хитрым их рисованием (если интересно: #8cda). Вобщем думаю.... |
У меня еще один вопрос: как лучше всего представить анимированные тайлы? в смысле, наверное обычным индексом уже не обойтись???
|
Quote:
Например, тайлы воды занимают индексы 16-19 (4 кадра), тогда процедура пересчета индекса будет примерно: Code:
;a- old index |
ну я пробовал 2 варианта - либо каждый кадр менять саму графику тайлов, либо есть процедура, которая подставляет номер нужного тайла в анимацию... млин, непонятно вышло =)
1 вариант - карта 1 2 3 4 5 - тайлы 1,2 анимированные каждый кадр в наборе графики (ну типа шрифта =) меняем графику для этих 2х символов - так сделано к примеру в Boulder Dash 2 вариант - та же карта, только выглядит 255 254 3 4 5 - 255 и 254 собсно номера анимированных тайлов вот - перед выводом на экран вырезаем окно нужных размеров из общей тайловой карты (карта же наверняка больше экрана), и при этом подставляем вместо 255 номер выводимого тайла (то есть существует табличка 255 = (0,1,1,2,3,1,0), в которой для каждой анимашки записан порядок показа тайлов) - для упрощения кода проще всего сгруппировать все анимации в начало или конец индексов. первый вариант хорош для случаев, когда анимация редкость, второй в принципе универсален. и немного в сторону от вопроса - тайловые карты лучше всего (имхо) рисовать в Mappy (редактор под Win с кучей возможностей). анимация в нем реализуется как раз вторым способом. |
Круто! Спасибо!
И еще вопрос: "Собираемые предметы", если их очень много, где лучше хранить, в тайловой карте ??? (их тоже хотелось анимировать) Добавлено через 10 минут Vitamin, спасибо! |
ну если их много совсем, как в том же БолдерДаше алмазов - то да (прямо в карте) - а если типа Диззи - то наверно лучше отдельно - печатать спрайты поверх карты уже.
|
psndcj, спасибо!!!
|
В Stormlord (1) и многих других играх использовался метод вывода графики без "теневого" экрана, сразу в экранную область (#4000-#5aff). Методика следующая:
1. Обрабатываются спрайты: записываются в спец массив линий. 2. Рисуется карта: рисуется линия тайлов, если в линию "попадают" спрайты, то рисуются они и т.д. обрабатываем каждую линию. Такая методика позволяет рисовать спрайты практически без мерцания. (На некоторых эмулях все же видно) У меня, возник вопрос: как происходит отсеивание и сортировка спрайтов в массив линий? Кто нибудь может рассказать о данной методике? И... если можно, поподробней... |
| All times are GMT +4. The time now is 21:03. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.