2013-11-09 1 views
2

Я пытаюсь внедрить систему освещения на основе плитки в свою игру, сохраняя при этом оптимальную производительность. В настоящее время без освещения у меня около 700-800 кадров в секунду. Когда я делаю освещение, fps падает примерно до 300-400.Проблемы с производительностью освещения на основе Java Tile

оказывает огни, используя g.fillRect() с цветом Color (0,0,0, alphaValue)

Код:

for (int y = startY; y<endY; y++) { 
    for (int x = startX; x<endX;x++) { 
     g.setColor(new Color(0, 0, 0, 255/lightData[y][x])); 
     g.fillRect((x*Tile.width)-Camera.x, (y*Tile.height)-Camera.y, 
        Tile.width, Tile.height); 
    } 
} 

LightData [у] [х] является значение от 1 до 8.

Мне интересно, есть ли еще один способ более эффективного освещения. Любая помощь будет принята с благодарностью.

+0

В среднем большинство мониторов не смогут идти в ногу с частотой 300 кадров в секунду, некоторые хрипы между 25-60, как правило, будут более чем достаточно. – MadProgrammer

ответ

1

Хотя я понимаю вашу озабоченность, вы можете сделать что-то, называемое «преждевременная оптимизация». 300-400 FPS - это много, как правило, вы в порядке даже с «только» 30. Когда вы начинаете реализовывать игру, и двигатель прост, вы получите безумные цифры на FPS, каждая добавленная функция сделает падение FPS. Но если вы закончите какую-то разумную сумму (например, 50), я бы не стал слишком беспокоиться. Начните оптимизировать, как только у вас есть все функции, и вы увидите, что он медленный, или хотите больше отполировать двигатель.

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

Что вы можете сделать, однако, чтобы предвычисления это:

255/lightData [у] [х]

Вместо того чтобы хранить 1-8 в lightData, магазин 255/1, 255/2 и т.д. Отдел довольно дорог. Это, вероятно, не принесет много, но это что-то и должно быть легко сделать. Вы даже можете дойти до того, что темные/освещенные плитки будут загружены в буфер и вытащить их из этого.

+0

FPS только такой высокий, потому что я собираюсь на мощном ПК с 8 гб RAM и мощный процессор. На ноутбуке, таком как macbook pro 2010, я только достигаю ~ 125 FPS. Является ли этот номер прекрасным даже для такой простой игры? – grimrader22

+0

Это абсолютно нормально для любой игры. Насколько я знаю, минимум составляет около 25 (обычно рекомендуется 30). См. Мои правки для некоторых подсказок оптимизации. – PeterK

+0

Удивительное спасибо! – grimrader22