Nous sommes prototypés à l'aide de l'échelle Autodesk et de construire notre interface utilisateur de jeu en utilisant Flash. Nous devrons pouvoir organiser un grand projet avec une équipe de 3-4 artistes et plus de 10 programmeurs. Nous utilisons le système de contrôle de source Perforce pour le stockage de tous les codes et actifs. Nous devons être en mesure de gérer un projet avec plusieurs ressources partagées et plusieurs personnes (artistes et programmeurs) travaillant sur des écrans et des contrôles. P>
Notre problème est le suivant: P>
Nous voulons pouvoir créer des composants personnalisés graphiques à la peau, tels que des boutons, des curseurs, des cases à cocher ainsi que des commandes plus complexes telles que des tables et des éléments spécifiques au jeu. Nous voulons pouvoir partager des actifs graphiques dans un seul endroit et permettre à plusieurs artistes et à des codeurs de travailler simultanément sur des composants partagés. Nous avons besoin de tout cela pour être stocké dans un référentiel de contrôle de source Perforce. P>
Pour le code AS3, tout est assez simple. Cela fonctionne comme n'importe quelle autre codeBase et nous avons mis en place des projets FlashBuilder et FlashDevop. P>
Maintenant, les options semblent être les suivantes: P>
Configurer le partage automatique manuel de l'authorme. Cela permettra aux travaux sur plusieurs composants partagés, car les personnes peuvent mettre à jour un petit fichier FLA discret et mettre à jour automatiquement une plus grande librare partagée partagée. Le problème est que cela n'autorise pas le partage d'actifs graphiques, ce qui signifie que, si un artiste met à jour un graphique, cela ne filtre pas les fichiers flash individuels. P> LI>
Utilisez le format XFL. Cela nous permettrait de fusionner des fichiers lors de la vérification du contrôle de la source car ils sont un texte brut et permettent d'économiser des actifs individuels en tant que fichiers distincts, ce qui semble parfait. Le problème est que je ne vois pas comment créer un projet, qui utilise entièrement des fichiers XFL (c'est-à-dire quelque chose comme AuthorTimeSharedAssets.xfl). P> LI> ul>
Pour le moment, je ne peux pas voir une manière évidente et raisonnable d'exécuter un grand projet en flash. Nous ne pouvons pas être le premier à faire ce genre de chose. P>
Quelqu'un peut-il aider ou expliquer comment nous devrions le faire? P>
5 Réponses :
Je dirais que XFL serait la voie à suivre pour une équipe aussi importante, surtout lorsque vous utilisez le contrôle de la source. P>
Autant que je sache, la plupart des symboles pour XFL sont enregistrés en tant que fichier .xml dans le dossier de la bibliothèque. S'ils sont importés de JPGS ou d'autres bitmaps, le fichier image est également enregistré. P>
Je n'ai pas pu intégrer les polices et les sauvegarder sous ce format, ce qui peut être un gros problème en fonction de ce que vous faites. Une solution à ce sujet consiste à charger vos polices dynamiquement, comme discuté ici . Ce qui peut être un léger inconvénient à vos concepteurs, mais un petit prix à payer lorsque vous considérez ce que vous gagnez en utilisant le format XFL lorsqu'il y a tant de personnes impliquées dans le projet. P>
Je recommanderais également de pré-compiler (faire des composants) de certaines parties de votre projet. P>
J'espère que cela aide. P>
Les polices ne sont pas un gros problème car ShaglerForm GFX dispose d'une solution spécifique pour les polices, qui utilise une bibliothèque partagée d'exécution. Je pense que vous êtes correct et XFL est ce que nous devons faire. Je ne peux pas voir un moyen particulièrement bon de partager des actifs à l'aide de XFL, car, lorsque, lorsqu'il s'agit de liaison dans les bibliothèques pour le partage automatique, il ne semble pas corriger le chemin relatif des fichiers image.
Il y a peu d'options supplémentaires. Je ne dis pas qu'ils sont meilleurs, mais, en fonction de votre équipe et de la quantité que vous pouvez investir dans le développement de vos propres outils de développement ... OK, voici un port de Swfmill à Haxe: http://code.google.com/p/hxswfml/ . Cela permet aux actifs graphiques d'être représentés sous forme de fichiers texte (XML). Peut-être qu'il serait possible d'ajouter un plugin pour l'incape à exporter les graphiques à ce format ... Puis je pense que Ces personnes avaient leur propre format et des outils pour gérer des trucs visuels. Flex SDK Compiler peut réellement traduire décinciquement SVG en graphiques flash. p>
Enfin, et probablement l'option, j'éditionnerais, aurais-je assez de temps, est le format FXG. Flex Compiler peut compiler cela, cependant, il nécessite toujours une certaine mesure pour éliminer tous les indéscriptions liées à la structure Flex de ce qui sort de FXG. L'avantage de FXG Cependant, c'est que des programmes tels que Photoshop, Illustrator, InDesign, etc. peuvent exporter vers ce format. Bien sûr, c'est surtout non testé ... et à un endroit, je crains que FXG ait été conçu pour le produit Adobe qui a été suspendu récemment (catalyseur). Pourtant, il existe une chance que le format lui-même restera le format d'échange pour les programmes Adobe - vous n'avez donc pas besoin de vérifier dans la FLA. P>
La façon dont je travaille avec des artistes graphiques: nous n'entrons jamais en Fla, nous vérifions plutôt la SPC et nous en font une règle que quiconque travaille sur un projet doit vérifier et importer. Cela n'aide vraiment pas vraiment quand plus d'une personne doit travailler sur le même symbole, mais au moins, ils sont tous au même endroit et il est possible de travailler simultanément, si vous éditer différentes choses (ce qui arrive que la plupart des Temps de toute façon). P>
Pour le moment, je ne suis pas sûr de la mise en place d'outils à l'aide de SWFMILL. En ce qui concerne FXG et SVG, les graphiques actuellement ne sont pas strictement notre problème. L'autre chose à noter est que les SWF compilées Flex ne sont pas entièrement pris en charge par balanceform - certainement rien que je construit dans le catalyseur fonctionne dans l'échelle. Je vais regarder votre idée d'importer et de vérifier que des SWC. Merci beaucoup.
Ce n'est peut-être pas une option pour votre équipe, mais je vais le suggérer, comme cela a été (dans mon expérience) une approche de gestion de projet très réussie. P>
Lorsque vous faites de gros choix d'infrastructures de département comme celui-ci, il est payant d'entrer dans les mauvaises herbes et de voir les problèmes que vous essayez de sortir. Cela dit, supporte mon explication ici. P>
Les obstacles principaux que vous avez sont 1) Verrouillage et édition de grands fichiers FLA qui ne peuvent pas être fusionnés et 2) empêcher les conflits de Duplications / Version des MovieClips et des classes dans ces fichiers. Les conflits peuvent être authortiques (FLAS ayant des symboles de bibliothèque obsolètes à partir de Libs partagés authortiques) ou d'exécution (SWFS compilé avec des versions contradictoires des mêmes classes, provoquant des accidents d'exécution). P>
La solution, dans mon expérience, est 1) de mettre le plus petit code possible dans les fichiers binaires (FLAS), 2) Lier le code de classe aux MovieClips aussi tard dans le processus possible, et 3) Écrivez votre application. code pour faire cette "liaison tardive" gracieusement. Cela signifie à l'aide de bibliothèques d'exécution au lieu d'authortime. Je ne prendrais pas la peine d'essayer des solutions qui traitent des fichiers binaires comme un texte pour la fusion; Au lieu de minimiser et d'isoler le rôle des flas ils jouent dans votre code. Gardez-les séparés. P>
Si possible, je recommanderais votre équipe utiliser la stratégie suivante: p>
Cette approche présente de nombreux avantages, mais en un mot, cela permet à vos développeurs et de vos artistes de travailler de manière autonome avec moins de préoccupation pour les conflits de contrôle de la version entre les fichiers de classe et d'art. Les artistes ne travaillent jamais avec des FLAS qui ont du code et des développeurs ont le contrôle dont ils ont besoin pour minimiser la probabilité de définitions de classe en double / conflictuelle à travers les SWF. Tout le monde se concentre plus sur ce qu'ils font le mieux. P>
Les projets que j'ai travaillé avec cette approche ont tendance à aller très bien, tant que le devillage du gouvernail groks la stratégie de découplage dont je parle. Toutes mes excuses pour la réponse super verbeuse; Hth. P>
J'aime cette approche car il fait une vision séparée et une logique de contrôleur. À ce moment-là, le code n'est pas vraiment notre problème, car nous n'avons que peu ou aucun code dans FLAS, le problème principal est les graphiques et les symboles, qui n'ont aucun code, mais ont besoin de partager. Je vais étudier cette approche plus loin cependant. Merci beaucoup.
Faire beaucoup d'hypothèses sur la structure de votre travail ici, mais FWIW - à votre point sur Graphics dans les symboles - vous pouvez utiliser des graphiques autonomes pour vos vues dans les FLAS de production. Tout comme vous chargez la logique du contrôleur au moment de l'exécution, vous pouvez charger l'art final dans une bibliothèque SWF à l'exécution et remplacer les graphiques de stand-in. De cette façon, vos artistes peuvent toujours placer des indices visuels sur la scène représentant des choses (comme un graphique de stand-in dans une balle rebondissant) et les arts / animations finaux sont tirés à l'exécution du temps d'exécution à travers les SWF de la bibliothèque ainsi que les définitions de la classe.
Je suis également très intrigué par cette réponse parce que je travaille avec un corps de code FLA / AS2 qui n'a pas été développé en ce qui concerne le couplage de la vision et de la logique du contrôleur. Cette approche serait un moyen idéal de résoudre un problème de couplage particulier que je traite maintenant, mais je suis contraint à ActionScript 2. Avez-vous plus de détails ou d'exemples, afin que je puisse déterminer si cette approche fonctionnera dans le monde AS2? Merci.
Je ne peux pas recommander le partage authortique car je n'ai pas été en mesure d'utiliser tous les composants de plusieurs SWC dans mon projet. La raison est après plusieurs jours d'investigation plutôt étrange. P>
Au moins un composant (par exemple, une boîte de dialogue) jette toujours des erreurs de type lorsqu'il utilise des composants partagés authortiques (par exemple, un bouton) et le composant partagé a un nom instanque. Tout fonctionne bien tant que vous n'attribuez aucun instance d'instanken sur les composants partagés dans les composants que vous avez liés via ActionScript et instancez plus loin dans votre projet. P>
L'objectif était de diviser une * flas massif en plusieurs plus petits, partageant les actifs à AuthorTime afin que les modifications soient partagées entre les plus petits FLA et le compilateur divisé (pas d'exécution!) Ne pas dupliquer ces classes. Cela fonctionne très bien, même lors de l'utilisation de la baseClasses d'ActionScript et de la baseClasses personnalisées. (Désactiver automatiquement déclarer des instances de scène) le compilateur exclut avec succès toutes les classes dupliquées causées par le partage. Vous pouvez contrôler facilement cela à la recherche de chaque SWC inclus. P>
Pour reproduire simplement le problème, vous devez faire 2 FLA. Chacun avec un MovieClip (par exemple une boîte de dialogue) et un partagé. (par exemple, une touche; une FLA partage le bouton avec l'autre). Attribuez à tous les composants ActionScript-Linkage. Placez le bouton sur chacun des boîtes de dialogue et attribuez chacun des boutons un nom instanque. Compilez les deux FLA à SWCS, les inclure dans votre projet et essayez d'instancer les deux boîtes de dialogue. L'un d'eux va lancer une erreur de coercition de type # 1034. Supprimer (l'un des) noms d'instancene-instance et cela fonctionnera. P>
Pour avoir une impression - Heres une capture d'écran (taille réelle): P>
p>
Je suppose que c'est que tant qu'aucun nom d'InstanceCename n'est défini, Flash ne se soucie pas de ce que le bouton est en réalité et le traite en tant que movieClip, mais lorsqu'un nom instanque est défini, le lecteur est défini sur TypeCast the MovieClip sur le type spécifié. Mais pour une raison quelconque ne regarde pas dans l'espace de noms entier (?) Mais seulement dans la SWC, la boîte de dialogue a été compilée. Je conclus ceci parce que lorsque le bouton a été compilé dans SWCA mais pas dans SWCB, la boîte de dialogue de SWCA fonctionne mais Pas la boîte de dialogue de B et de l'inverse. Vous pouvez "forcer" le bouton pour échanger SWC en recompilant la FLA que vous souhaitez que le bouton soit dans. P>
Je l'ai également rencontré dans de rares cas impliquant plus de 2 FLA / SWC. Mais ne savez pas pourquoi. Peut-être que j'appuie un peu plus loin mais j'ai déjà perdu un peu de temps dessus. P>
J'espère que vous trouverez une bonne solution (et postez-la: p) parce que nous avons le même problème que vous. P>
€: l'erreur (seulement?) semble se produire si vous avez également mis à jour le composant partagé une fois P>
€€: Et seulement si vous exportez le SWC tandis qu'un autre FLA avec le composant partagé est ouvert (??) P>
J'ai presque les mêmes problèmes que vous avez! Je travaille sur un jeu contenant tous les actifs graphiques dans un énorme fichier FLA exporté en tant que bibliothèque SWC. Mon problème est que nous souhaitons diviser cet énorme fichier en plusieurs plus petits, puis créer un nouveau fichier FLA pour chaque nouvel écran. P>
Nous utilisons RSL pour partager des actifs entre différents fichiers FLA. Par exemple. FONTS.FLA a trois polices de la bibliothèque exportées pour le partage d'exécution. Graphic_hsl.fla contient des graphiques de la liste de scores élevés et des fonts.swc importés pour le partage d'exécution. Vous devriez penser à RSL car ils vous permettent d'éditer des actifs graphiques dans un seul fichier et il sera automatiquement mis à jour que vous l'avez utilisé dans d'autres fichiers FLA. P>
Nous avons essayé avec le format de fichier XFL, mais à la fin, nous sommes retournés en Fla à mesure que la version de la version n'est pas vraiment utile avec XFL. Il a une structure très complexe et un fichier changeant de deux ordinateurs différents en même temps brise à peu près les choses! Donc, pas de fusion avec SVN, Git ou tout ce que vous utilisez! P>
Pouvez-vous élaborer sur "Impossible de voir comment faire un projet qui utilise entièrement des fichiers XFL"?
OK, voici mon point sur les projets utilisant des fichiers XFL. Si Flash insiste réellement sur le stockage de tous les actifs dans un seul fichier appelé authortimaesharedasseps, puis je souhaite utiliser XFL pour ce fichier car utiliser FLA ne nous permet pas de fusionner et de diffuser des fichiers de source.
Désolé, je souhaite également ajouter le point qui utilise le partage de AuthorTime, il apparaît que les actifs graphiques ne sont pas partagés de toute façon. Par exemple, si nous avons un fichier flash appelé 'boutons.fla', qui dispose de tous les boutons que nous utilisons dans le jeu. Si un artiste décide de changer l'apparence de l'un des boutons, ils vont vérifier dans un nouveau boutons.fla avec de nouveaux graphiques. Cependant, il semble que les graphiques ne mettront pas à jour sur tous les écrans individuels et contrôlent des fichiers FLA si nous utilisons le partage authortique.