2009-07-20 5 views
0

Je crée un jeu d'espace dans actionscript/flex 3 (flash). Le monde est infiniment grand, parce qu'il n'y a pas de cartes. Pour que cela fonctionne, je dois dynamiquement (programmer) rendre l'arrière-plan, qui doit ressembler à un espace ouvert. Pour donner l'impression que le monde est réel et rendre certains endroits différents des autres, je dois pouvoir ajouter des filtres tels que des différences de couleur et peut-être même une sorte de transformation brumeuse - ceux-ci seraient ensuite ajoutés et changés aléatoirement. Le joueur est capable de "faire défiler" la "carte" en volant sur les côtés de l'écran, de sorte qu'une certaine partie du monde n'est visible qu'à la fois mais le joueur peut aller n'importe où. Le défilement fonctionne en déplaçant tous les objets à l'exception du joueur dans la direction opposée, ce qui donne l'impression que c'est le joueur qui s'est déplacé dans cette direction. L'arrière-plan doit également être déplacé, mais doit être différent sur le nouveau terrain découvert (créé dynamiquement). Maintenant, ma question est comment je ferais quelque chose comme ça, quel genre de choses dois-je utiliser et comment puis-je les implémenter? La performance doit également être prise en compte, car beaucoup plus d'objets seront dans le jeu.Comment rendre dynamiquement l'arrière-plan de l'espace dans actionscript3?

Répondre

1

Vous ne devez avoir des vues que pour les objets situés dans la zone visible. Vous pourriez vouloir utiliser un quad tree pour cela.

L'arrière-plan devrait peut-être être composé d'un ensemble de tuiles, que vous pouvez répéter plus ou moins au hasard (avez-vous vraiment besoin d'un arrière-plan, en fait?). Utilisez la même technique ici que vous utilisez pour les objets. Donc à la fin, vous finissez par avoir un modèle pour les objets et les carreaux ou les particules (que vous générez au début). De cette façon, vous n'ajouterez que quelques flottants (vous pouvez obtenir des performances supplémentaires si vous ne calculez pas les positions des objets qui sont loin.) Le quadrillage devrait vous aider, mais je pense que cela ne devrait pas être nécessaire. Si un objet ayant une vue quitte la scène, libérez la vue et utilisez l'arborescence pour vérifier si de nouveaux objets apparaissent.

Si vous utilisez beaucoup d'objets/de particules, pensez à utiliser un object pool. Si les objets se déplacent uniquement et ne sont pas pivotés/mis à l'échelle, utilisez DisplayObject::cacheAsBitmap.

+0

Merci encore. J'utilise des techniques pour ne charger que les objets qui sont proches, et les objets qui quittent la zone visible sont également déchargés. Pourriez-vous expliquer comment générer un arrière-plan aussi dynamique? – Tom

+0

Je veux dire quelque chose comme http://flashden.net/item/dust-particles-effect-background-animation/30399 - juste que l'arrière-plan ne devrait pas bouger quand le joueur reste immobile. – Tom

Questions connexes