|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.08.2009, 19:50 | #31 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
Я перерисовываю всю карту, целиком по новой Я понял что вы имеете ввиду. Но как мне это сделать?
|
13.08.2009, 20:05 | #32 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну смотри...ты же знаешь где находится твой персонаж и в каком месте его надо рисовать?
вот и перерисовывай только персонажа и то что под ним(над ним тоже придется) то есть не весь ландшафт...а только клетки на которые накладывается персонаж... это менее ресурсоемко Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
13.08.2009, 20:20 | #33 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
Хм... Это почти вообще не занимает ресурсов. Как сделать под ним я понял. Но над ним.... Это уже потяжелее... Подумаю над этим... Придется проверять близ-лежащие клетки, но это ограничивает унивирсальность игры и высоту обьектов, что уже хуже.
|
13.08.2009, 20:21 | #34 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Shadow_1329, ну-ка уточни, что у тебя выполняется.
Вот твой перс начал двигаться с одной клетки карты в другую, ...значит собрать поверхность карты нужно заново только тогда когда перс встанет на следующую клетку, и притом один раз, до следующей. Все это время, пока идет смещение персонажа в начале отрисовки карты ты должен переносить в буфер прежний собранный кусок, поскольку один большой отрисуется быстрее чем множество мелких тайлов. Ты просто смещаешь на пиксели эту подложку под ногами, а объекты рисуешь каждый раз заново. Теперь как ты переносишь подложку в буфер? ...канвой? ...решение не идеальное, есть код на ассемблере, если нужно опять напишу сюда. Почему нужно рисовать все заново?, ...потому, что в игре, где много объектов со своей анимацией отрисовка по частям сжирает больше ресурсов чем кадра с нуля.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
13.08.2009, 20:31 | #35 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
Он у меня не из клетки в клетки двигается а свободно. Просто отрисовка идет опираясь на клетки + смещение внутри клеток. Прорисока вначале была на канве. Заменил на BitBlt. Особой разницы не почуял. Вернулся к канве. При необходимости могу все вернуть обратно на BitBlt.
|
13.08.2009, 20:56 | #36 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Не не не, не имеет никакого значения мышью или клавиатурой. Твой персонаж располагает координатами в пространстве, относительно массива карты - это грубые смещения на 1 клетку, именно в эти моменты нужно готовить новую подложку, ...а "свободное" движение пока нажата клавиша - это пиксельные смещения, в это время идет переброс заготовленного фрагмента. Понятно?
Пожалуйста код покажи, попробуем всем скопом разобраться.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
13.08.2009, 20:58 | #37 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
Подумаю над этим до завтра... Не сразу все переварить=)
Начет кода - коменты добавлю=) И его приведу в человеческий вид=) Последний раз редактировалось Shadow_1329; 13.08.2009 в 21:00. |
14.08.2009, 06:49 | #38 |
Форумчанин
Регистрация: 23.02.2009
Сообщений: 237
|
Вод вобщем код(кусок кода передвижения и кусок прорисоки)
Код:
|
14.08.2009, 11:08 | #39 | |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Цитата:
|
|
14.08.2009, 11:43 | #40 |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 684
|
ну, как я понял, в каждый момент, когда вызывается UpDatelevel() у тебя перерисовывается вся карта. Перерисовывай только то, что видно на экране, раз карта со скроллингом. Это уже + к производительности. Но об этом уже говорили
Далее: раз ты перерисовываешь карту в массиве, то как она перерисовывается? сверху вниз, слева направо? Если да, то сначала рисуй подложку (траву), потом персонажа, а уже потом объекты на карте. Тогда если персонаж будет находиться за объектом, то изображение этого объекта будет поверх персонажа. По крайней мере мне так кажется, но может быть я и ошибаюсь
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой? Последний раз редактировалось Wicort; 14.08.2009 в 11:59. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как можно самому сделать так, чтобы программы грузились с диска, до загрузки ОС? | Лукманов Александр | Софт | 1 | 18.04.2009 12:14 |
оптимизировать для максимальной скорости выполнения программы, т.е. заменить ее кодом на ассемблере | gusluk | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 10.12.2008 04:21 |
Увеличение и уменьшение картинок | zzzzz | Мультимедиа в Delphi | 2 | 30.08.2008 20:53 |
запуск программы после загрузки Windows | matus | Windows | 3 | 25.04.2008 11:16 |
отслеживание загрузки программы | ГОСЕАН | Общие вопросы Delphi | 4 | 13.12.2007 18:04 |