2016-07-19 5 views
1

J'ai récemment commencé à travailler sur un jeu de plateforme 2D en Java, et je pose une question liée à la performance.Performance du jeu de plateforme Java

Dans mon jeu, j'ai un monde (relativement petit pour l'instant).

Mais plus de la moitié + du monde n'est pas visible à la caméra des joueurs, mais je suis toujours peindre le monde entier (même les parties invisibles).

Voici ce que je suis en train de faire. Donc, la question est, serait-il plus rapide d'avoir une vérification d'if-statement si c'est sur l'écran avant de peindre?

Répondre

1

Oui.

Faire une vérification pour voir si c'est sur un écran ne devrait pas prendre plus de 1 ou 2 étapes.

tout peinture vous oblige à dessiner chaque pixel à l'écran, peu importe que ce soit utilisé ou non.

1

Si gameObject.paint(g); implique beaucoup d'appels de dessin, très probablement le branchement (chèque) permettrait d'économiser plus de travail que cela coûte. Cependant, si c'est uniquement comme un appel de dessin pour peindre un sprite, votre bibliothèque effectuera déjà une telle vérification pour éviter les dépassements de mémoire tampon et la vôtre serait redondante. Cela dit, si vous commencez à rencontrer des problèmes de performance ici, alors je recommande d'utiliser une sorte de structure de données. Un simple est une grille comme ceci:

enter image description here

Lorsque vos éléments se déplacent, les retirer des cellules de la grille qu'ils occupent et les insérer à la nouvelle (s) qu'ils occupent. Cela devrait simplement impliquer de manipuler quelques entiers si vous implémentez ceci efficacement.

Puis, quand vous voulez dessiner des éléments sur l'écran, dessiner seulement les éléments dans les cellules de la grille qui se chevauchent. Cela vous empêchera de boucler tous les éléments du monde du jeu. Cela est également pratique pour la détection de collision accélérée si vous en avez besoin.

Un quad-tree est une alternative que pour mettre à jour un peu plus cher, mais il peut fournir une meilleure qualité de recherche si les éléments de votre jeu sont peu distribués.