Marble Match-3 - ещё игра на конкурс (игра выпущена)

Entertainment for 5 minutes, hours, days
  • А ФПС около 12 держится.
    Понятно. Ну, я ожидал, что с производительностью будут проблемы, т.к. совершенно бесцеремонно не жалел вычислительных ресурсов. У меня весь кадр (512х512, 32 bit) перерисовывается, еще и с альфа-каналом, пиксели смешиваются... оптимизирую. Собственно, уже оптимизировал, теперь кадры рисуются только при необходимости (пока обдумываем ход - картинка статична, отрисовки нет). Кое-чего еще исправлю и залью.

    Еще при отрисовке высчитывается много лишнего (и одинакового каждый кадр), пожалуй, запихну всё это в память, пусть лучше там будет еще мегабайт картинок, чем эти самые картинки попиксельно будут каждый раз пересчитываться.
    Roman Shuvalov
  • Попробовал для интереса запустить на своем IBM ThinkPad 600E с Intel Pentium II 366Mhz под капотом. Ну в общем получил около 3 ФПС :)
    to infinity and beyond
  • punk_joker wrote:Попробовал для интереса запустить на своем IBM ThinkPad 600E с Intel Pentium II 366Mhz под капотом. Ну в общем получил около 3 ФПС :)
    Интересно, а Heliothryx пашет быстрее? Там разрешение не 512х512, а 320х180 (в 4.5 раза меньше). Апскейл до размеров окна конечно есть, но он менее ресурсоёмкий, чем смешивание полупрозрачных цветов.
    Roman Shuvalov
  • .
    Last edited by Mario_r4 on Sun Jan 04, 2015 9:47 pm, edited 1 time in total.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Обновление
    - немного улучшена производительность
    - перерисовка теперь происходит только при необходимости, уменьшается нагрузка на процессор
    - изменил размер и масштаб игрового поля
    - небольшие косметические изменения

    Ссылка прежняя: Marble Match-3 (лежит в SVN, собирается в ISO)

    В планах
    - взрывы покрасивей
    - заменить шарики на красивые кристаллы
    - перерисовывать только часть экрана, чтобы еще чуточку повысить производительность и снизить нагрузку на процессор
    Roman Shuvalov
  • Думаю кристаллы и их анимацию можно прорендрить при запуске и частично во время простоев игры в спрайты, чтобы во время игры просто доставать нужные из оперативки. Обычно в подобных играх так всегда делали (да, и производительность улучшит).
  • Конечно всё именно так и делается, при запуске всё один раз генерируется и потом достаётся из оперативки. В том числе все кадры взрывов. Но например у меня есть текстура фона и полупрозрачное игровое поле. Раньше они смешивались каждый кадр, а сейчас я завёл просто еще одну текстуру фона - в ней хранися дубликат фона с уже нарисованным игровом полем, таким образом смешивание этих текстур делается только один раз. Но и хранить данные приходится дважды.
    Roman Shuvalov
  • Есть много вариантов... Например, хранить только изменения... Софтрендер позволяет бОльшую гибкость при прочих ограничениях... Кстати, могу материала по теме олдскульного демокодинга нахамячить тебе, но только в сыром виде (выдирать долго, а я ленивый)...
  • хранить только изменения
    И чтобы получить картинку, опять нужны вычисления :)
    Кстати, могу материала по теме олдскульного демокодинга
    Спасибо, но я как-нибудь сам. Многое уже сейчас неоптимально, когда (и если) оптимизирую очевидные вещи - тогда уже буду прибегать к более суровым методам.

    Сейчас одна из серьёзных проблем - невозможность вывести в окно часть картинки. То есть если у меня есть большой буфер, я не могу легко вытащить произвольный прямоугольник из него. Седьмая функция выводит только "готовую картинку". Поскольку вывод построчный, можно вырезать несколько строк, это частично решит проблему. Но по закону подлости кристаллы падают вертикально, и мне была бы куда полезней возможность перерисовать столбцы, а не строки.
    Roman Shuvalov
  • .
    Last edited by Mario_r4 on Sun Jan 04, 2015 9:47 pm, edited 1 time in total.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Mario_r4 wrote:ф.65.
    Ну ёшкин же ж крот, а.
    Спасибо.

    P.S. Пора мне отучиваться делать преждевременные выводы по названию и краткому описанию функций. Про сканкоды не читал, думая, что там только про преобразование сканкодов в символы и обратно. А оказалось, что события KeyDown/KeyUp как раз ими ловятся. Про вывод с палитрой не читал, думая, что там не будет ничего про вывод графики с числом бит на пиксель > 8. И уж точно не ожидая там найти вывод фрагмента изображения.

    P.P.S. Потребление ОЗУ сейчас снизится на 768 кб :) Больше не будет преобразования буфера BGRA -> BGR.
    Roman Shuvalov
  • ALPINE: Have you seen the KolibriOS game "pharaohs crypt" ?
    It's a similar game which works very smoothly :)
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
  • Haven't seen... I thought there is no match-3 game on KolibriOS yet :(

    About smoothness: I'm working on it, release version will get smooth (not step) animation. As a bonus, my game have procedural-generated textures and very small size (about 11 kb versus pharaohs' 65 kb) :)
    Roman Shuvalov
  • Ok, just wanted to let you know.
    Good luck to you!
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
  • Who is online

    Users browsing this forum: No registered users and 2 guests