|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.05.2011, 13:54 | #31 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Действительно, если первая не задевает вторую, то взрываются по очереди. Значит, тут все хорошо. Просто в оригинал почти не играл и не помню, а проблема синхронных событий у объектов одного типа мне знакома по реализации анимации, вот и заподозрил)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
24.05.2011, 00:40 | #32 |
Пользователь
Регистрация: 08.03.2011
Сообщений: 91
|
Жаль, что ни кто не поможет с оптимизацией
Всё будет так, как должно было быть, даже, если будет наоборот.
|
31.05.2011, 23:04 | #33 |
Пользователь
Регистрация: 08.03.2011
Сообщений: 91
|
Хотя бы литературы подскажите, ли кда копать, что бы оптимизировать
Всё будет так, как должно было быть, даже, если будет наоборот.
|
01.06.2011, 10:44 | #34 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
я бы посоветовал НЕ генерить карту из тайлов за каждый прогон.
попробуй сделать карту единым битмапом в памяти. и создай буфер размером с экран. в картобитмапе всегда хранить всю карту с неизменяющимися объектами/текстурами - травой, синими штуками (блоки вроде). в экранобуфере хранить только её кусок , текущий вид экрана с неподвижными объектами, при скролировании карты (при смещении вида карты) копировать из картобитмапа целый кусок в экранобуфер, а поверх него уже рисовать изменяющиеся объекты. по идее вполовину быстрее должно быть. ещё замени везде trunc (что-то / 64) на (что-то div 64). для round также. всё равно у тебя не используются нигде вещественные числа, и загружать проц лишней кучей операций с точкой , да потом ещё округлением - неслабо ест... массивы картинок и операции "вручную" с лентами (многокадровыми картинками) лучше позаменяй на Timagelist всяко получше будет... а то куча канвасо-операций по вырезке и вставке это очень плохо, а Timagelist всё это умеет. пример работы с Timagelist'ом могу тебе подогнать, но полагаю, и сам можешь разобраться. |
01.06.2011, 15:10 | #35 | |
Пользователь
Регистрация: 08.03.2011
Сообщений: 91
|
Цитата:
примерно можешь с можешь показать, проще будет разобраться
Всё будет так, как должно было быть, даже, если будет наоборот.
|
|
01.06.2011, 15:15 | #36 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
phomm, для начала предложения существуют прописные буквы (А, Б, В, Г и т.д.)
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
01.06.2011, 18:01 | #37 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
Простите, я уже почему-то привык к написанию с маленькой, знаю, что надо исправляться, буду стараться и исправлюсь))
Я написал вполовину - ибо подразумевал, что при постоянном смещении персонажа, а в данной игре так происходит почти всё время, будет выполняться смещение вида карты и отрисовка картинок, в первом(нынешнем) варианте всех, а во втором часть браться из готового, а часть всё равно рисоваться, ну вот этакая "половина" )) Тем более , я считаю, большинство операций с канвасом и так съедают многое... и здесь не получится существенного роста (в разы) по графике, потом опять же TTimer, он же вроде 18,6 Гц - т.е. 54 мс - значит быстрее всё равно не добиться перерисовки, надо и таймер менять. Вобщем, много тут узких мест... Пример на TimageList - только пример, ни разу ни рабочая поделка (чтобы не ругали за такое, писал очень давно, проводил пробы... сейчас так криво не пишу...) Основное, что там нужно смотреть, это Imglstar - массив имейджлистов, каждый лист соотвествует определенному игрообъекту, коих много ) Последний раз редактировалось phomm; 01.06.2011 в 18:05. |
02.06.2011, 16:16 | #38 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
TTimer может работать и на 1 мс, все зависит от быстроты кода внутри него. У меня, например, TTimer поддерживал 30 мс, и 15 мс (сравнивалось с быстрыми таймерами), но между ними вариантов нет, это связано с тормозностью некоторых функций. Он оттягивает время, если код не успевает выполниться, и вроде накидывает по 15-16 мс, пока не узнает, что код выполнен. Отчетливо я видел разницу 16, 32, 48, 65 и т.д., а промежуточные значения на скорость анимации никак не действовали. Но, если в таймер этот запихнуть только счетчик, то он с интервалом 1 мс насчитает 1000 как и положено за 1 с.
Цитата:
От Canvas нужно уходить, если дело касается масштабного сбора задника через малые промежутки времени, с учетом большого количества анимированных объектов.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 02.06.2011 в 16:30. |
|
02.06.2011, 17:15 | #39 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,886
|
Спасибо, действительно идея теперь мне ясна, прирост налицо. Можно ли развить мысль и пробовать заводить больше буфер, чем на одну клетку ? Ведь так можно вообще просто весь задник выводить, но будет уже медленнее, конечно, ибо вывод дольше. Так ли это ?
И ещё такое уточнение, ведь есть принципы, по которым происходит обрезка вывода, если он не входит в экран, тот же ClipRect у Canvas? Может быть, они спокойно позволили бы оперировать выводом всего буфера (задника всей карты) без потерь производительности ?? |
02.06.2011, 17:59 | #40 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Вывод в форму стандартными средствами всегда проверяет выводимое изображение на предмет выхода за границы размеров рабочей обрасти. Нужно так рассчитать размер клеток и экрана, чтобы его размеры по ширине и высоте были кратными 4-м (GDI использует стандартные регистры).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 | 666dart666 | Помощь студентам | 11 | 04.11.2010 17:57 |
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism | savva-paladin | Софт | 18 | 02.10.2010 20:24 |
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? | redred | Общие вопросы Delphi | 10 | 11.12.2007 10:43 |
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? | dagarik | БД в Delphi | 7 | 22.10.2007 17:54 |
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' | Nemesisking | Компоненты Delphi | 7 | 08.09.2007 03:27 |