LINUX.ORG.RU

Ищу особый 2D движок


0

0

Ищу особый 2D движок.

Он должен уметь рисовать картинки с маской прозрачности. (То есть не настоящая прозрачнасть с уровнями, а упрощённая с простой маской указывающей какие пикселы на картинки не видны).

Он должен уметь убирать картики с экрана. Особо важно чтобы такая оптимизация : уметь убирать картинки с экрана без перерисовки всего экрана, всего кадра. Это как в изометрических движках типа Fallout-2. Там если на экране передвинится персонаж, то перерисовывается лишь кусочек экрана вокруг персонажа.

Я ищу подобный движок, но двухмерный, вид сверху, камера сверху.

Большей частью придётся рисовать, добавлять, убирать большое множество картинок.

Я уже делаю свой движок, но хотелось бы найти оптимизированный, быстрый. Чтобы не делать велосипед.

Вы встречали такие ?

>Это как в изометрических движках типа Fallout-2.

Вспомнился FIFE Engine, но я не знаю, насколько он под остальные требования подходит.

anonymous ()

А чем например SDL не устраивает? ЕМНИП в нем все вышеперечисленное есть. Плюс десятки дополнений, практически на любые нужды. Правда таки подпилить его под себя немного придется

cx ★★ ()

> Он должен уметь убирать картики с экрана. Особо важно чтобы такая оптимизация : уметь убирать картинки с экрана без перерисовки всего экрана, всего кадра.

А ты действительно уверен, что тебе это надо ? Тем более, если «придётся добавлять, убирать большое множество картинок.» Опиши поподробнее, что ты делаешь.

runtime ★★★★ ()

Не указаны используемые технологии (SDL, OpenGL, что-то еще) и даже язык программирования.

Lucky1 ★★★ ()

Маска, о которой вы говорите называется bitmap-mask или colorkey/chromakey. Способ перемещения спрайта (прямоугольная область с маской или без) без перерисовки всего содержимого называется dirty boxes.

Все это часто использовалось на слабых компьютерах или телевизионных приставках. К примеру Zx-Spectrum 48 - там обновлялась только нужная часть экрана. Но уже в Zx-Spectrum 128 использовался теневой буфер и целая пачка команд push ;)

Сколько раз за кадр и какой кол-во объектов будет перемещаться. Вероятно. вам проще рефрешить все содержимое экрана (теневого буфера) со всеми видимыми в данный момент времени объектами.

andreyu ★★★★★ ()

В современном мире умные люди такие вещи делают на OpenGL. Потому что софтварный блиттинг как был тормозным, так и остался - разрешение экранов растёт, глубина цвета тоже выросла. А видеокарты специально обучены делать это эффективно и быстро, без всяких грязных хаков и ассемблерных вставок.

Хотя, кто знает, может ОПу именно низкоуровневые грязные хаки и интересны.

infernape_evolution ()
Ответ на: комментарий от simple_best_world_web_master

По описанию да не спорю но я лично за SDL

enep ★★★★ ()

>если на экране передвинится персонаж, то перерисовывается лишь кусочек экрана вокруг персонажа.

Уже даааааааааавно не актуально - полностью картинка рефрешится легко с частотой под сотню ФПС. Советую Qt - там самый оптимизированные рендеринг + активно развивается и обещают еще нехило допилить, одной строчкой переход на OpenGL. Да и вообще либа может оказаться полезной ;)

theos ★★★ ()
Ответ на: комментарий от andreyu

> Вероятно. вам проще рефрешить все содержимое экрана (теневого буфера) со всеми видимыми в данный момент времени объектами.

Угу, особенно есть там альфаблендинга много. 10 слоев уже неплохо бьют по FPS

simple_best_world_web_master ()
Ответ на: комментарий от infernape_evolution

Покажи мне современные видеокарты на блюрей-проигрывателях. А красивые менюшки с альфаблендингом всем охота иметь.

simple_best_world_web_master ()
Ответ на: комментарий от simple_best_world_web_master

> Угу, особенно есть там альфаблендинга много. 10 слоев уже неплохо бьют по FPS

Кто мешает в наше время использовать аппаратное ускорение? OpenGL вам в руки - и альфаблендинг, и скейл, и вращение, и освещение, и куча прочего.
Ну а раньше приходилось использовать MMX для растеризации с альфой.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Покажи мне OpenGL на блюрей-приводах (которые поддерживают Java), покажи его в недорогих медиацентрах, покажи его на мобильных телефонах среднего класса, покажи его в веб-браузерах (до WebGL как до луны, а флеш/сильверлайт уже сегодня)

Да, автору треда наверняка OpenGL подойдет, но платформа не указана, кто знает... Я вот одно время сильно трахался с мобильными платформами, где мегагерцов то мало будет, а от опенгл одно название

simple_best_world_web_master ()
Ответ на: комментарий от simple_best_world_web_master

Могу добавить, что OpenGL скушает гораздо больше системной памяти под внутренние буферы глубины и текстуры в 32-х битном ARGB. Что для задач автора может обернуться увеличением требований к железу и следовательно сужением ЦА. Тем более, что под игры стиля Фоллаута 1/2 (псевдо)трёхмерная графика и не нужна.

Более того, используя одни только растровые операции производительность может быть в разы больше, чем с помощью OpenGL. Хоронить программные 2D движки ещё ой как рано. Почитайте для ознакомления вот эту статью с Qt Labs: http://labs.trolltech.com/blogs/2010/08/24/improving-the-rendering-performanc...

Dendy ★★★★★ ()

OpenGl на sdl при желании можно запускать без иксов, на мой взгляд самый оптимальный вариант, сам юзаю.

pozitiffcat ★★★ ()
Ответ на: комментарий от Dendy

> Более того, используя одни только растровые операции производительность может быть в разы больше, чем с помощью OpenGL.

Да, особенно вращение, освещение, скейл.

Хоронить программные 2D движки ещё ой как рано.


Кто говорит о похоронах?

andreyu ★★★★★ ()
Ответ на: комментарий от simple_best_world_web_master

> Покажи мне OpenGL на блюрей-приводах (которые поддерживают Java), покажи его в недорогих медиацентрах, покажи его на мобильных телефонах среднего класса, покажи его в веб-браузерах (до WebGL как до луны, а флеш/сильверлайт уже сегодня)

Послушайте, я вам ничего не обязан показывать. Это вы своим друзьям и родителям говорите «покажи».

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

> Да, особенно вращение, освещение, скейл.

Кстате, оно получается обычно таким отвратительным, что порой так и охота пререндернуть все повороты, дабы было все красиво и сглажено. И кстати, авторы e17 именно так и делают, если им надо что-то вращать, то в ресурсы кладут все возможные позиции. Простые эффекты света можно сделать масками/лайтмапами, в 2D это достаточно просто.

Послушайте, я вам ничего не обязан показывать. Это вы своим друзьям и родителям говорите «покажи».

Да не вопрос, ответ я и сам знаю, просто это я отвечал на:

Кто мешает в наше время использовать аппаратное ускорение? OpenGL вам в руки

simple_best_world_web_master ()
Ответ на: комментарий от andreyu

>> Более того, используя одни только растровые операции производительность может быть в разы больше, чем с помощью OpenGL.

Да, особенно вращение, освещение, скейл.


Воращение и скейл не входят в растровые операции. Если действительно нужно применить операции, приводящие к тесселяции с помощью матриц - обычно делается пререндер и ложится в кеш, а далее опять таки - блит через растр.

При грамотной организации такого API можно добиваться потрясающих результатов, таких как в Starcraft, Total Annihilation или, если брать посовременнее, Black Mirror 2.

Dendy ★★★★★ ()

> Ищу особый 2D движок.

Стуканись мне в ICQ 557320759, помогу чем смогу

Esh ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.