|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.11.2009, 16:31 | #21 | |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Цитата:
|
|
17.11.2009, 16:38 | #22 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
Вот когда будет количество строк больше тысячи, тогда раскидаю, а пока что только хуже будет. Хотелось бы услышать мнение Beermonza по поводу 13 % загрузки ЦП(см. пост #18) и можно ли этого как-нибудь избежать? Только если выводить графику с помощью видеокарты или есть другой вариант? Также хотелось бы получить ответ от Beermonza по поводу подгрузки изображений во время вывода графики(см. тот же пост #18)
Последний раз редактировалось Манжосов Денис :); 17.11.2009 в 16:40. |
17.11.2009, 17:00 | #23 | ||
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Цитата:
Цитата:
http://www.programmersforum.ru/showthread.php?t=59037 Мое мнение: хватит насиловать канвас цель не стоит средств. Возможно и есть способы оптимизации, ассемблерные вставки и другое но дело в том что с таким выводом графики далеко не уйдешь. Да, он подходит для простеньких игр, но всегда будет тормозить, нагружать процессор и.т.д. К тому же никогда не будет альфа канала (сделать вроде можно с помощю ассемблера, но мне кажется знает его не каждый), поворота спрайтов, смешивания и других возможностей предоставляемых видеокартой. |
||
17.11.2009, 17:24 | #24 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
Я хотел делать игру на OpenGL, но там система координат другая. Возьмём тот же самый цикл вывода графики:
Код:
|
17.11.2009, 18:06 | #25 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Господа, ...о чем спор? Речь идет о 2D, лично я считаю достойным представителем этого класса игр - Age Of Empires II, но она у меня ест 100% CPU, хоть и на OpenGL, если не ошибаюсь. Моя же разработка рисует 4 слоя 1024 х 768 х 24bit с полным 24 битным альфа-каналом (не 8) и не через интервал 99 мс, а 31 мс, т.е. 25 кадров, как в кино. При все этом управляется с объектами, списками, динамически рулит ресурсами, и грузит CPU на 45%, ...я уже доволен, ...но мои анимированные деревья размером 455 х 500 не идут ни в какие сравнения с "имперскими", хотя игровой юнит почти такой же как и там, ...т.е. на лицо масштаб реальности.
Это типа похвастал )) ...на самом деле просто рассказал, что может простой оптимизированный код со вставками на ассемблере творить даже без библиотек и поддержки видеокарт. Денис, я так понимаю, ты из клана "пока жареный петух не клюнет в зад"? )))) ...серьезно, ...продумывай структуру движка сразу. Что касается загрузки ресурсов, не совсем помню где она у тебя расположена, при создании формы? ...как бы то ни было, нужно сперва проанализировать загружаемую карту, и определить какие ресурсы требуются. Тут цикл, ...пока пробегаем по клеткам карты, массив банка текстур, равно как и анимации - пуст. Натыкаемся на объект в клетке, считываем код, выполняем загрузку графики и данных с винта, ищем в банке первую свободную ячейку, заполняем ее записи по ее типу, на карту ставим вместо кода объекта - индекс ячейки в банке текстур - это ссылка. И так до проверки всех клеток. Каждый раз, при обращении к коду клетки, алгоритм ищет в банке текстур по записям "нет ли уже такого загруженного ресурса", если есть, то ставит индекс, если нет, то выполняет загрузку очередного ресурса. В итоге, у нас массив карты - массив ссылок на банк текстур и анимации, со всеми вытекающими вспомогательными данными в записях типа. Для существенного увеличения производительности и снижения нагрузки на CPU, нужно пользоваться специальной подложкой заднего фона. Допустим, это какая-то трава, как у меня. Известно, что большой заготовленный кусок, например 1024 х 768, отрисуется быстрее нежели множество кусочков по 50 х 50 в сумме с тем же объемом цельной площади. Посему, ...мы при сдвиге камеры на некоторый участок карты, делаем построение подложки из кусочков 1 раз, далее, пока нет сдвига камеры, каждый раз будет выводиться подложка целиком, а алгоритм построения будет пропускаться. Как только камера сместилась, алгоритм снова соберет подложку и отключится. Это очень эффективно. По поводу модульности. Шибко не увлекайтесь, ...отдельная процедура/функция внутри кода - ссылка на кусок кода. Модуль - обращение в реальном времени как к библиотеке. У меня нет модулей, и не будет, сам проект и есть движок игры, он все умеет, главное правильно создать ресурсы, и задать систему, как ими правильно пользоваться. Сначала создайте правильную и эффективную структуру загрузки и обработки ресурсов, а потом плавно избавляйтесь от канвы.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 17.11.2009 в 18:36. |
17.11.2009, 18:06 | #26 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Если мало опыта возьми любой движок с открытыми исходниками. При желании сможешь разобраться как работает, а если что будешь просто использовать. Никаких особенных отличий не будет даже от canvas (вместо canvas.draw будет например DrawTexture2D)
|
17.11.2009, 18:20 | #27 | |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
Цитата:
Я изначально знал, что будет в движке. Всё продумано, почему нет: вывод графики есть, работа с картой есть, звука пока нет, но будет. Вадим, этот проект не будет использовать OpenGL графики, может в других и заюзаю. Beermonza, я не понял насчёт так называемой подложки. Можете объяснить поподробней? Заготовленный кусок 1024х768 будет создаваться из более мелких кусков 50 x 50, ведь так? И смысл создавать заготовленное изображение, если будет играть анимация и наш кусок будет не нужен, потому как на нём старый кадр из анимации? |
|
17.11.2009, 19:27 | #28 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Тема плавно перетекает в эту http://www.programmersforum.ru/showthread.php?t=59037
Ну, так и быть. Что есть подложка? ...это задний фон, некоторая поверхность, то на чем потом рисуются объекты. Карта бывает разная, нужна то трава, то почва, то песок, то вода и пр. пр. пр. Это все в мелких тайлах (спрайтах). Камера цепляет сразу диапазон клеток карты. Для того, чтобы на видимый диапазон клеток карты натянуть самый первый растр - фон, ...нужно собрать его по циклу из кусков. При том, что у тебя 99 мс интервал кадровки, то эта процедура будет каждый раз тебе лепить задний фон по кускам, загружая CPU лишней работой, а если 31 мс будет, для гладкой анимации? Поэтому, есть метод: в первый раз после смещения камеры собрать подложку заднего фона, и выводить готовый кусок на всю видимую область, что захватывает камера от карты. Как только камера сместилась, у тебя новый диапазон клеток, ...пробегаем по ним, слепляем подложку фона, и ее используем. Каждый раз новый кадр начинается с помещения этой подложки, затем объекты. Вся анимация выглядит как нужно, но CPU уже не напрягается.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
17.11.2009, 20:07 | #29 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
Так...в-общем, подложка мне не нужна. У меня пустой, белый фон. Есть анимационные объекты - деревья. Каждый раз, когда перерисовывается экран, идёт расстановка объектов, кадр увеличивается, а значит подложка будет не в тему - в ней же содержится старый кадр. Тем более, это редактор, а не сама игра. Здесь объекты можно помещать на карту в реальном времени, и каждый раз создавать обложку, при добавлении нового объекта, нет смысла. Надеюсь, что мы понимаем друг друга Beermonza, а то мне уже кажется обратное? Тему про оптимизацию дочитаю, попробую также заменить файлы формата BMP на PNG - читал в некоторых темах про него.
|
17.11.2009, 20:50 | #30 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Вообще я смутно представляю что это будет за игра, в которой один слой.
PNG не разгрузит CPU, это метод хранения ресурсов в меньшем объеме, и только, ...в памяти они снова занимают полный объем.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi 7 проблема с Анимацией | Rus 47 | Помощь студентам | 1 | 26.05.2009 00:17 |
Помогите с анимацией проги! | Aboltus | Общие вопросы Delphi | 3 | 29.07.2008 23:21 |
Работа с анимацией в ACCESS | kuk132 | Microsoft Office Access | 1 | 17.07.2008 14:07 |
Задача с анимацией | KpeHDeJIb | Помощь студентам | 1 | 04.07.2008 20:23 |
Помогите с анимацией в Паскале | ЕвгениуS | Помощь студентам | 6 | 06.06.2008 15:10 |