2014-05-18 1 views
0

Depuis un an, je travaille sur un constructeur urbain isométrique. Jusqu'à présent, je n'ai utilisé aucun cadre en dehors d'un clone PureMVC libre.Est-ce que Starling vaut la peine d'être implémenté pour mon MMO AS3?

J'ai entendu parler de Starling mais je n'ai joué qu'avec ça récemment. D'après mes recherches, l'amélioration des performances est phénoménale, mais cela me force à gérer mes ressources de manière plus serrée. À l'heure actuelle, j'exporte des animations de bâtiments, un bâtiment à la fois, en ~ 16 images/pngs. Celles-ci sont recadrées, redimensionnées et exportées dans Photoshop par un script, puis importées dans Flash, puis exportées en tant que swf, pour être chargées/préchargées/postloadées à la demande.

Les cadres sont trop grands pour faire un sprite avec eux, par bâtiment. Je crois que c'est appelé un atlas.

Ces png sont ensuite mélangés entre lock() et unlock(). Après les bâtiments + les acteurs qui se promènent sont triés, c'est-à-dire.

Je ne suis pas sûr si juste using starling.Movieclip pour les bâtiments, où au lieu de charger les pngs, je construirais un symbole de MovieClip avec ses cadres. Donc, le bliting ne serait même pas nécessaire. À moins d'ajouter des blix sur Starling améliorerait encore plus la performance. Cela permettrait des caractéristiques plus grosses telles que des effets de particules, peut-être un peu d'éclairage.

Google ne m'offre pas une réponse étroite, donc je demande ici.

Répondre

0

Google n'offre pas de réponse claire car il n'y en a pas. Cela dépend beaucoup de ce que vous avez fait, de vos connaissances et de vos objectifs. L'utilisation de Starling apporte des avantages ainsi que des inconvénients. Votre idée de ressources changera totalement. Si vous avez vraiment une énorme quantité d'actifs, les mettre en GPU sera un processus très lent. Vous devez commencer à partir de là - apprendre ce que Starling fait, comment les ressources sont gérées avec et ce que vous devez changer afin de faire la transition entre les deux.

Si cette tâche n'est pas si difficile et si fastidieuse, vous obtiendrez une optimisation des performances. MAIS encore cela dépend de votre code actuel. Votre code actuel est vraiment important dans cette situation, car s'il est parfaitement optimisé, votre gain ne sera pas si élevé (mais le sera toujours). Si vous devez basculer entre les graphiques régulièrement ou si vous devez disposer d'actifs dynamiques (comme les images par exemple), vous devez garder à l'esprit que le téléchargement vers GPU est la partie la plus lente lorsque vous parlez de Starling et de Stage3D.

Encore une fois, il n'y a pas de réponse claire. Vous devez penser à la mémoire et à la limite du GPU, au temps de téléchargement du GPU, ainsi qu'à la gestion des actifs. Vous devez également penser à la façon dont votre code est construit et si vous allez avoir un impact si vous faites le changement (si votre code dépend fortement de la structure de MovieClip, avec tous ces cadres et toutes ces choses), il sera difficile pour toi. L'une des choses les plus difficiles que j'ai combattues avec Stage3D a été la mise en œuvre de l'interface utilisateur - il y a presque seulement l'interface utilisateur de Feathers qui vous prendra quelques semaines pour vous entendre. D'autre part, Starling fonctionne plutôt bien, en particulier sur les appareils mobiles. J'ai été capable de maintenir un 45fps stable sur une application de l'interface utilisateur lourde avec beaucoup de contenu de chargement dynamique et plusieurs écrans sur un ancien iPhone 4S, que je trouve génial. Les derniers appareils mobiles sont à 60 fps.C'est à vous de décider, mais je vous conseille d'avoir un projet expérimental de longue durée à tester, puis de commencer à appliquer cette approche à vos projets habituels. J'ai fait le plongeon pour l'utiliser dans un projet régulier et très serré, et c'était un cauchemar. Tout a bien fonctionné, mais j'ai pensé que j'aurais une crise cardiaque - le commutateur n'est pas si facile :)

0

Je suggère d'utiliser DMT pour pixelliser vos actifs vectoriels en sprites Straling à l'exécution, et il gardera également votre DisplayTree! ce qui signifie que vous aurez toujours les relations parent/enfant que vous aviez dans vos actifs Flash.

DMT ne reproduira pas les actifs, et pixelliser les vecteurs de texture dans les atlas qu'une seule fois (Cache est enregistré)

vous pouvez le trouver ici: https://github.com/XTDStudios/DMT

Questions connexes