Mon jeu fonctionne bien sur la plupart des téléphones (56 FPS), mais d'autres gèrent le jeu à ~ 25 fps. Dans mon jeu, j'ai 3 systèmes de particules et autant que je puisse dire le problème vient d'ici. Ma question: est-ce une bonne idée d'arrêter les particules de frai si je détecte les FPS plus bas que, disons 30? Un si le FPS est plus élevé, il s'agit de courir normalement. Je ne suis pas sûr que cela puisse causer des problèmes. Y a-t-il une autre solution? P>
4 Réponses :
Essayez de définir "Android: thème =" @ style / thème.nobackground "pour votre activité dans Manifeste. Il désactive l'arrière-plan de l'arrière-plan Système redistriburé.
Ne forgez pas de créer THÈME.XML: P> < Pré> xxx pré> p>
Je pense que ce que vous dites est applicable pour les applications. Je ne vois pas comment cela est lié à Andengine.
Je vous suggérerais de courir toutes les fonctionnalités graphiques de votre jeu, lorsqu'il peut être rendu à 30 images de 30 images. Si vous voyez une vitesse de trame de moins de 30 ans, vous devez éteindre des graphiques non vitaux, par exemple. particules. p>
C'est exactement ce que j'ai écrit dans la description, donc ça ne m'aidait pas. Avez-vous essayé cette méthode? Est-ce que c'est une bonne idée? Parce que pour obtenir le FPS, je dois enregistrer le compteur sur le moteur, puis vérifier chaque seconde si les conditions sont satisfaites.
Bien sûr c'est une bonne idée. Croyez-moi, je préférerais un jeu sans effets graphiques spéciaux qu'un jeu qui a un mauvais FPS. Vous pouvez vérifier si le téléphone est la première ou la deuxième génération, si elle est d'abord, alors n'affichez pas les graphiques spéciaux (puisqu'il causera probablement un FPS faible). S'il s'agit d'un téléphone de deuxième génération, affichez des graphiques spéciaux. Vous pouvez également utiliser d'autres méthodes pour voir si le téléphone peut produire le FPS souhaité, vous pourriez avoir une sorte d'étalonnage.
Je peux penser à plusieurs choses que vous pouvez faire pour aider à atténuer ce problème. P>
Vous pouvez utiliser votre méthode pour détecter le FPS, puis supprimer les systèmes de particules si nécessaire. Cependant, vous n'avez pas à sonder cela chaque seconde - vous pouvez le faire une fois toutes les dix secondes environ. Si vous avez un faible taux de trafic, vous savez que le téléphone va en souffrir de temps en temps, alors vous n'avez plus besoin de sonder davantage de sonder - vous pouvez réduire les particules et arrêter le sondage. p>
ou, vous pouvez utiliser la méthode de vote avec plusieurs "niveaux" d'effets de particules, de sorte que cela ne peut pas gérer le niveau supérieur, déposez le niveau de complexité suivant, etc. P>
En outre, vous pouvez même permettre à l'utilisateur d'ajuster manuellement les effets de particules, c'est-à-dire dans un menu d'option, permettez-leur de les changer à un réglage bas ou à quelque chose. P>
Peut-être que vous pourriez également profiler des déviés sur le temps d'exécution, c'est-à-dire combien de cœurs, de la puce graphique, etc. et ajustez en conséquence. P>
Assurez-vous que vos particules sont optimisées, etc., vous n'avez donc pas de tailles de texture inutiles quand elles pourraient être plus petites, etc., mais je suis sûr que vous avez probablement fait cela! P>
Merci pour votre réponse, les particules sont optimisées, les «niveaux» ne peuvent pas être mis en œuvre car je ne peux pas ajuster le nombre de particules de création après la création, mais je vais essayer la dernière méthode que vous avez décrite, vérifiant probablement le GPU et GL. version.
Essayez de sauter des cadres si la fréquence de trame est plus basse, mais ne sautez pas trop de cadres sinon il entraînera une mauvaise expérience utilisateur. Vous trouverez ci-dessous le code permettant de déterminer si le thread exécute à temps, sinon il saura que les cadres (pas plus de 5): laissez-moi savoir si cela fonctionne. P> p >
Ce n'est pas la façon dont l'antengine fonctionne et appeler le thread.sleep bloquera l'interface utilisateur générant une mauvaise expérience utilisateur.