Realizzo un gioco libGDX che utilizza effetti particellari per le esplosioni. Funziona piuttosto bene con i nuovi telefoni, ma con i telefoni più vecchi (testati su HTC Desire) quando ci sono più di un paio di esplosioni sui fps dello schermo in modo abbastanza significativo.Ottimizzazione degli effetti particellari per i telefoni più lenti
ci sono due opzioni attualmente sto valutando:
Ci sono un sacco di particelle per effetto riducendo così che conta può essere un'opzione, ma preferirei non per la coerenza e ragioni estetiche.
Utilizzo di un'animazione generata dall'esecuzione dell'effetto particella e salvataggio di ciascun fotogramma. Questo sarebbe bello e sarebbe coerente. Potrebbero esserci problemi con le dimensioni dell'immagine. Inoltre non riesco a vedere come questo possa essere fatto con l'implementazione delle particelle libGDX.
Qualche idea?
EDIT: Alcuni frammenti di codice: Dopo aver caricato l'effetto nella classe Assets:
particleFire.load(Gdx.files.internal("explosion.p"),Gdx.files.internal(""));
carico l'effetto particella nel costruttore dell'oggetto proiettile. Sto facendo questa creazione di oggetti nel ciclo di rendering principale che so essere un candidato per l'ottimizzazione.
explosion = new ParticleEffect(Assets.particleFire);
Nel thread di rendering questo metodo viene chiamato per disegnare gli effetti.
private void drawBlasts(float delta){
for(Missile projectile : world.missiles){
if (projectile.missileState == State.EXPLODING){
if(projectile.stateTime==0.0f) {
projectile.explosion.start();
continue;
}
projectile.explosion.setPosition(projectile.position.x, projectile.position.y);
projectile.explosion.draw(spriteBatcher, delta);
}
}
}
Un frammento di explosion.p
- Delay -
active: false
- Duration -
lowMin: 1000.0
lowMax: 1000.0
- Count -
min: 0
max: 100
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 250.0
highMax: 250.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 800.0
lowMax: 800.0
highMin: 1000.0
highMax: 1000.0
relative: false
scalingCount: 3
scaling0: 1.0
scaling1: 1.0
scaling2: 1.0
timelineCount: 3
timeline0: 0.0
timeline1: 0.66
timeline2: 0.9931507
EDIT 2: Questi effetti sono additivi quindi c'è una buona punta di miscelazione corso troppo.
Ho aggiornato l'OP. Ci sono alcune ovvie ottimizzazioni con la creazione di oggetti di cui sono a conoscenza, ma non penso che siano il problema. Il frame rate inizia a diventare un problema a 8 o 9 sugli effetti dello schermo con una galaxy Samsung. Circa 5 su HTC Desire. – barconr
Ho aggiornato il mio OP – LiamJPeters