|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.05.2013, 20:59 | #71 |
Почетный нуб
Форумчанин
Регистрация: 07.05.2013
Сообщений: 155
|
Beermonza, интервал равен 10.
|
13.05.2013, 22:14 | #72 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Ой-йой-йой-йой-йой. Windows с библиотекой GDI, через которую в финале всё равно через функцию BitBlt выводится изображение не может работать быстрее 16 мс, поэтому ставить меньше 16 мс смысла нет. Смена кадров, соответствующая общепринятой стандартной величине "24 кадра/сек." - 32 мс.
Посмотрим на FPS производительность, если бы вывод изображения выполнялся аппаратными средствами видеокарты: Интервал 10 мс ~ 100 fps; Интервал 16 мс ~ 64 fps; Интервал 32 мс ~ 32 fps; Объект TTimer использует стандартные виндовые команды SetTimer и KillTimer, процесс работы которых сопровождается "наброской" времени по 16 мс, если в теле процедуры код не успевает выполниться за указанный интервал. Т.е. быстрее 16 мс в принципе не будет, а если код не успеет в 16 мс, следующий кадр будет только через 32 мс. Это и есть причина рывков и мерцаний. Объект TTimer не реагирует на интервалы 1,2,3,4 ...15, это бесполезно, только на кратные 16. У меня в игре установлен интервал - 32 мс, чего достаточно, если учесть, что анимация выполнена по стандарту для 2D на 24 кадра/сек. ...поставь 16, 32, посмотри что происходит с изображением и с загрузкой CPU. Теперь по оптимизации. Вот этот код можно облегчить, если вынести статические величины за цикл: Код:
width div 40+1 height div 40+1 image1.width div 80 image1.height div 80 Запиши их до цикла в переменные: Wdiv40 Hdiv40 ImgWdiv80 ImgHdiv80 ...тогда тормозящих вычислений в цикле не будет. Оптимизируй все коды отрисовки. Выноси за циклы все статичные выражения и их составные части. Старайся избавиться от умножения и деления в циклах - это самые тормозные операции.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 13.05.2013 в 22:37. |
14.05.2013, 07:07 | #73 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,883
|
Я, к сожалению, предполагал, что всё именно так печально...
Собственно потому и предлагал определиться с целью и либо "дотерзать проект" учебными пробами (для учебной цели) либо рефакторить сразу (при нацеле на игровой проект). Собственно, и хотел помочь, ибо вижу рвение и желание работать, но на данном этапе без должной теоретической подготовки и практики на примерах, кодирование будет только выливаться в килотонны лапшекода. Для начала всё же советовал бы поизучать пачку тем этого раздела (где есть код и обсуждения), например http://programmersforum.ru/showthread.php?t=146277 (там мой древнючий пример есть) ну и прикреплённые темы обязательно. Потом могу познакомить с более прогрессивными методами оптимизации (в пределах текущего инструментария - GDI ), есть наброски, вроде приложения на с полноэкранной графикой и с анимацией на GDI съедающий 0-2%цпу Безотносительно выше написанного - используйте типы (енумы, сеты, "массив"-ные), структурирование(модули, записи/классы), константы, подпрограммы, уменьшение времени жизни сущностей, областей видимости и связности. Читайте основы, вроде http://www.transl-gunsmoker.ru/p/97.html Возможно, стоит начинать работать с ООП. Я говорю это потому, что я видел, когда многообещающие ребята, невзирая на советы более опытных, начинаю делать по своему, энергии им не занимать и они пластают сотни килобайт кода из лапши методом копипасты по заветам Мао. И это плохо и для них самих и для окружающих, поэтому советую "наиграться" сколько интересно будет и переходить к серьёзным подходам. |
14.05.2013, 07:54 | #74 |
Почетный нуб
Форумчанин
Регистрация: 07.05.2013
Сообщений: 155
|
Beermonza, спасибо за совет! В четверг выложу новую версию с новой отрисовкой и чем-нибудь еще.
phomm, не соглашусь с вами. Люди дают мне советы по улучшению игры, я их проверяю. Если это относится к лагам и багам, пытаюсь убрать. Например, человек 3 попросили создать главное меню, сделал. Попросили улучшить отрисовку, не сделал, так как ничего, в том числе и загрузка ЦП не изменились при улучшении кода отрисовки. Ребят, забыл сокеты, появился вопрос: сделал TServerSocket и TClientSocket. Код TServerSocket при создании: RihtenServer.Port:=1337; RihtenServer.Active:=True; RihtenServer.Open; Код TClientSocket при создании: RihtenClient.Host:='127.0.0.1'; RihtenClient.Port:=1337; RihtenClient.Active:=True; RihtenClient.Open; Проблема в том, что сервер не создается, ну и, конечно, вследствие этого клиент ругает меня ошибкой с номером вроде бы 10049. Какую команду добавить к серверной части? Давно не пользовался сокетами, забыл. Последний раз редактировалось ruN00b; 14.05.2013 в 21:40. |
15.05.2013, 12:20 | #75 | |
Участник клуба
Регистрация: 11.08.2012
Сообщений: 1,226
|
Beermonza, а разве не лучше ли будет использовать Application.OnIdle вместо TTimer?
UPD: Цитата:
Зато какая скорость! FPS 450 Последний раз редактировалось Kix.IV; 15.05.2013 в 14:37. |
|
15.05.2013, 12:39 | #76 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Насколько я могу предположить, он тогда будет занимать 100% свободного процессорного времени.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
15.05.2013, 17:06 | #77 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Попробуй объяснить, зачем молотить один и тот же кадр 15 раз подряд, если в сцене ничего не изменяется? ...объяснений и нет, это "шобы було", тот же момент, что и с фотоаппаратами "О! 15 мегапикселей, значит круто!", а что оно нафиг не нужно осознают не все
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
15.05.2013, 17:40 | #78 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
Что бы где-нибудь в левом-верхнем углу вывести гордую надпись "450 FPS".
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 15.05.2013 в 17:43. |
|
15.05.2013, 17:47 | #79 |
Участник клуба
Регистрация: 11.08.2012
Сообщений: 1,226
|
Не совсем.
Например, в примере, что вы выложили, если убрать ограничение в 16 мс, то скорость игры увеличится. При FPS 450 скорость игры увеличивается в раз 7. Я бы не предложил этого, если бы это было абсолютно бессмысленно. |
15.05.2013, 18:19 | #80 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Анимированное 2D и FPS характеристика видеокарты - вещи несовместимые. Вывод на экран считается по модели изменения мира. Если никакие текстуры не меняют кадр и не смещаются, то выводить подряд такую статичную картинку множество раз просто бессмысленно. На счет скорости игры. Да, есть любители скоростных игр, или просто "прикольно" посмотреть в убыстренном темпе как происходят события, но если это не предусмотрено разработчиком, накой это нужно? Главная ошибка большинства разработчиков, которая прослеживается и сегодня - это небрежное отношение к ресурсам. Берутся готовые прожорливые блоки и из них совершенно безбашенно собирается монстр потребления ресурсов. Потом вам интеллигентно рекомендуют сменить железо на более мощное, хотя достаточно просто произвести оптимизацию в коде игры, ...но! лень, и производители железа просто рады, когда вас отсылают за их новыми продуктами. Вот и я вижу игру, которая со свистом должна летать и на 8-битной приставке к телевизору образца 1992 года, а вместо этого вижу дикую загрузку CPU современного двухядерного процессора по 1.8 ГГц каждое, и рваное движение картинки на экране. Это неправильно, и нужно бороться с помощью оптимизации.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 15.05.2013 в 18:23. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi RPG | ruN00b | Мультимедиа в Delphi | 1 | 07.05.2013 09:40 |
RPG-SpaceInvaders | revaldo666 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 9 | 08.02.2012 18:04 |
Delphi-клиент для Online RPG "Dragon Knight" | apromix | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 0 | 23.05.2009 12:48 |
3D-RPG | Кронос | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 25 | 12.05.2007 11:21 |