|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.10.2010, 21:50 | #1 | |
Форумчанин
Регистрация: 25.06.2009
Сообщений: 163
|
Скорость рисования и остальная скорость
Здравствуйте. Вот у меня возник такой вопрос по поводу организации рисования и остальных рассчетов в игре. Как можно догадаться, все это дело происходит в таймере, в одном и том же и рисование, и все остальные рассчеты. И происходило так до того момента, пока я не прочитал то сообщение в соседней теме:
Цитата:
При таком методе на более слабых компьютерах игра будет замедляться, но работать она, как мне кажется, будет безо всяких графических рывков. Но вот замедление очень плохо может сказаться на сетевой игре, где это может вызвать некоторые проблемы с синхронизацией. Впрочем, с сетевой игрой я еще мало знаком. Другой же метод - раскидать графику и остальные рассчеты по разным таймерам, и тогда на более слабых компьютерах, как мне кажется, будут заметны рывки, но вот скорость игры замедляться не будет. Что же делать и как правильно оформлять это дело? Другой вопрос состоит и в том, как просчитывать перемещения и остальные характеристики врагов и прочих объектов? Просчитывать ли их в цикле, последовательно, друг за другом или же каким-то образом организовать несколько потоков в игре, которые параллельно просчитывали бы каждый свой массив? Сказывается ли это на оптимизации игры и если да, то сильно ли или же нет? Последний же вопрос заключается в следующем: какова норма FPS (кадров в секунду) для 2D-игры, написанной на OpenGL? Основные характеристики компьютера: 512 mb видеокарты, 2048 mb оперативной памяти и двухъядерный процессор со скоростью ~1900 Mhz в каждом ядре. |
|
10.10.2010, 23:30 | #2 |
Форумчянин
Форумчанин
Регистрация: 05.04.2009
Сообщений: 446
|
Например, в фреймворке Asphyre, которым я пользуюсь, отрисовка и обработка кадров разделены на две процедуры - ProcessEvent и RenderEvent. Частота повторения первых регулируется, а вторых - нет (только ограничение ФПС), т.е. торможения из-за торможения отрисовки нет. Как это организовать самому - без понятия
Nobody expects Spanish Inquisition!
|
11.10.2010, 09:39 | #3 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
Сможете причаститься к прямому выводу графики (через HDC и пр.) - забудете о тормозах отрисовки. Изучил этот вопрос на практике. P.S. В журнал отправил статью о работе с графикой на низком уровне с удобной собственной надстройкой. Выйдет - прочтите обязательно.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
11.10.2010, 15:56 | #4 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Проблема отпадёт при организации высисления промежутка времени между предыдущим и текущим срабатыванием. Получаете коэффициент (в мс, скажем) и умножаете его на ваши перемещения и т.д. Получите равномерное движение, не зависящее от задержки срабатывания таймера.
Изобретатель велосипедов
|
11.10.2010, 16:34 | #5 | |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
В On-Line игре дела обстоят проще. Вся динамическая математическая модель игрового мира расположена на сервере, а в клиентской части, собственно, модель игрового момента и подготовка/отрисовка готового кадра по данным пакета сервера.
Однопользовательская игра содержит в себе обе модели, но так как следить за множеством пользователей и хранить для них динамические параметры не приходится, то, как заметил Alex Cones, это мизерное время, ..."жрет" ресурс именно подготовка и вывод графических данных. Вы смело можете организовать цикл с последовательной обработкой объектов и в самом конце тела таймера вызвать процедуру вывода графических данных на экран - рукописную процедуру, в которой обрабатываются объекты, выполняется сбор графических кадров, определяется расположение на плоскости, подготавливаются слои, и в финале - вывод на экран готового игрового кадра. Достаточно 30 кадров в секунду для отличного восприятия происходящего. Цитата:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 11.10.2010 в 16:37. |
|
12.10.2010, 00:09 | #6 | ||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Цитата:
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
||
12.10.2010, 08:16 | #7 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
12.10.2010, 17:08 | #8 | ||
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
21 век на дворе, какие 800х600. Без аппаратного ускорения никуда, но само по себе оно, кстати, не панацея.
Цитата:
Цитата:
Код:
Ну это всё лирика, короче говоря: утверждение, что "торможения из-за торможения отрисовки нет" не совсем верное - оно есть, но как только графика расчехляется, for i:= 1 to Amount do FOnProcess(Self); тут же скармливает все накопившиеся расчёты процессору. 3К-GET
пыщь
Последний раз редактировалось JTG; 12.10.2010 в 17:43. |
||
12.10.2010, 21:07 | #9 | ||
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Цитата:
Ответьте на вопрос: вы бы играли в такую игру, если бы действия происходили как бы в "реалтайме", а изображение по отношению к нему было дискретным, при том, что игра на одного пользователя? ...вы рискуете из-за видео-карты потерять всякий интерес к играм из-за временных проблем с отрисовкой. Если модель игрового пространства жестко связана с отображением графики, вы на время получите максимум неудобства, но не потеряете контроль. Именно исходя из этого в однопользовательской, замедление игрового цикла вместе с графикой приветствуется, разумеется этого нужно избегать, но это предпочтительнее потери визуального контроля. Вспоминаем Morrowind, на том же Celeron 450 и видео-карте i740 получал тормоза, когда видел перед собой множество объектов и большие пространства, но никогда не видел слайд-шоу, из фрагментов быстрых действий по которым ориентироваться невозможно, ...таймер изменения модели пространства замедлялся в зависимости от тормозов видео-карты. В 2D аналогично. Вспоминаем Age Of Empires (первый), ...осада противника большими силами с применением десятка катапульт. В режиме лимита населения наблюдается замедление игрового процесса, но нет никакого дискретного отображения событий, которые в модели игрового пространства происходят в "реалтайме", ...имеет место снова синхронизация и подстройка под возможности видео-карты. Для закрепления информации, ...математическая модель игрового пространства просчитывается во много раз быстрее чем позволяет построить и показать готовый кадр видео-карта, по той простой причине, что она считается в системе более мощной, чем располагает видео-карта, т.е. в системе CPU + OЗУ, ...вот если бы видео-карта обладала такой вычислительной мощью ) Вот и делайте выводы, однопользовательская игра это одно, сетевая - другое.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 12.10.2010 в 21:11. |
||
12.10.2010, 21:46 | #10 | ||||
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Цитата:
Цитата:
Цитата:
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
||||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
wi-fi и скорость | stenl1 | Компьютерное железо | 19 | 01.06.2010 17:48 |
Скорость рисования графиков | Master07 | Общие вопросы C/C++ | 3 | 16.07.2009 21:45 |
Скорость | bakanis | Работа с сетью в Delphi | 6 | 05.04.2009 12:39 |
Скорость скачивания | Терминатор | Свободное общение | 3 | 30.03.2009 19:03 |
Скорость проигрывания | Bigtyoma | Мультимедиа в Delphi | 0 | 30.09.2008 15:57 |