2016-04-18 13 views
1

Jedes Spiel muss optimiert werden. Also, hier sind meine nächsten Fragen.Libgdx - preformance zwickt

Ich habe 4 Bildschirme ein Menü, einen Shop, einen Spielbildschirm und einen Game Over Screen. Und jeder lädt eine Tonne Texturen. Soll ich stattdessen 4 Texturatlanten machen, 1 für jeden Bildschirm, und packen Sie die Texturen entsprechend. Gibt es viel Leistungssteigerung?

Auch sollte ich die Bildschirme herumreichen, anstatt sie zu entsorgen und jedes Mal neu zu erstellen? Wenn ich sie wiederverwende, werde ich mehr RAM verwenden, also irgendwelche Gedanken?

Ich bekomme aktuell eine Pixmap bereits entsorgten Fehler, der etwas mit freier Schriftart zu tun hat. Also beabsichtige ich, eine freie Schriftart in Asset Manager zu speichern, ich habe es vorher nicht gemacht, weil es nicht funktioniert hat. Gibt es eine spezielle Möglichkeit, die Generatorschrift zu speichern?

+0

Versuchen Sie, die Bildschirme schneller zu laden? Oder haben Sie höhere FPS? ps: Wenn Sie mehrere verschiedene Schriftarten (oder Größen) verwenden und die Speicherleistung erhöhen möchten, sehen Sie sich die Schrift für die Distanzfelder an. –

+0

Ye wenn ich Bildschirme ändere, lasse ich die Transparenz auf 0 und dann auf 1 gehen, und es ist viel zurückgeblieben, dann habe ich ein if (delta <0.04) gemacht, damit es die ersten paar Frames überspringt, jetzt sieht es glatt aus, aber Ich will es noch besser. Ich verwende nur 1 Schriftart und 1 Größe, also was wäre der beste Weg, um es zu speichern? –

+0

1 Font 1 Größe wäre am besten, um nur eine Bitmap-Schriftart zu generieren und diese in Ihren Atlas zu legen. Verzögerung wird normalerweise verursacht, indem neue Objekte erstellt oder große oder viele Texturen geladen werden. Also, wenn Sie sie nur vorher laden und Ihre Objekte während eines Ladebildschirms erstellen, haben Sie deutlich weniger Verzögerung –

Antwort

0

Ich bin nicht sicher, was Sie tun, da Sie keinen Code geschrieben, aber dies ist in der Regel, was ich in meinen Spielen tun:

public MainGame extends Game{ 
    MenuScreen  menu; 
    ShopScreen  shop; 
    GameScreen  game; 
    GameOverScreen gameOver; 

    public void create(){ 
     menu  = new MenuScreen(this); 
     shop  = new ShopScreen(this); 
     game  = new GameScreen(this); 
     gameOver = new GameOverScreen(this); 

     this.setScreen(menu); 
    } 

    public void render(){ 
     super.render(); 
    } 

    public void dispose(){ 
     menu.dispose(); 
     shop.dispose(); 
     game.dispose(); 
     gameOver.dispose(); 
    } 
} 

Und in jedem Bildschirm, sieht der Konstruktor wie folgen aus:

MainGame game; 

public GameScreen(MainGame game){ 
    this.game = game; 
} 

So dass, egal wo in den Bildschirmen, kann ich dies tun:

game.setScreen(game.gameOver); 

Was Ihre Texturen, ich würde nicht wissen. Ich habe nie viele Texturen in einem Spiel verwendet, aber ich würde annehmen, dass das Minimieren der Menge von Texturen das Spiel schneller laufen lassen würde. Denken Sie darüber nach, wenn Sie viele Texturen haben, muss das Spiel immer nur eine dieser Texturen durchlaufen und jeden einzelnen Render-Methodenaufruf rendern. Wenn Sie eine kleinere Zahl verwenden, wird die Anzahl der Bilder reduziert, die bei jedem Render-Methodenaufruf gerendert werden müssen.