IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XNA/Monogame Discussion :

Erreur lors d'une tentative de création de fichier xnb


Sujet :

XNA/Monogame

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Par défaut Erreur lors d'une tentative de création de fichier xnb
    Bonjour à tous, et à toutes.

    Et oui me revoila encore un peu bloqué dans l'exploration de XNA.
    Je cherche à présent à créer facilement des fichiers xnb sans devoir passer par la case visual studio. (Et oui je vois mal des graphistes tester leur développement en devant utiliser visual studio pour intégrer leurs ressources

    Bref, j'ai créer sur ma classe map un reader et un writer comme il faut.
    Et à coté une classe qui va me servir à faire la compilation de mes ressources.

    dont voici le source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class XnaCompiler
        {
            private ConstructorInfo[] constructors;
            private MethodInfo addWriter;
            private MethodInfo compileContent;
            private string cheminContent;
     
            public XnaCompiler(string cheminContent)
            {
                this.cheminContent = cheminContent;
                constructors = typeof(ContentCompiler).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance);
                addWriter = typeof(ContentCompiler).GetMethod("AddTypeWriter",BindingFlags.NonPublic | BindingFlags.Instance);
                compileContent = typeof(ContentCompiler).GetMethod("Compile",BindingFlags.NonPublic | BindingFlags.Instance);
            }
     
            public void compilerCarte(Map map,string repertoireRelatif)
            {
                ContentCompiler compilateur = constructors[0].Invoke(null) as ContentCompiler;
     
                Map.MapWriter writer = new Map.MapWriter();
                addWriter.Invoke(compilateur, new object[] { writer });
     
                string repertoireFinal = Path.Combine(cheminContent, repertoireRelatif);
     
                using (FileStream stream = new FileStream(
                    Path.Combine(repertoireFinal , map.NomCarte+".xnb"),
                    FileMode.Create))
                {
                    compileContent.Invoke(compilateur, new object[] {
                        stream,
                        map,
                        TargetPlatform.Windows,
                        true,
                        repertoireFinal ,
                        repertoireFinal 
                    });
                }
            }
    Pour tout cela je me suis inspiré de ce qui est écrit sur la page web http://nickgravelyn.com/2008/10/crea...own-xnb-files/

    Mais lorsque je cherche à lancer la compilation de mon objet map, j'obtiens l'erreur : Une exception a été levée par la cible d'un appel. de type TargetInvocationException.

    Cela se produit sur le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    compileContent.Invoke(compilateur, new object[] {
                        stream,
                        map,
                        TargetPlatform.Windows,
                        true,
                        repertoireFinal ,
                        repertoireFinal 
                    });
    quand je regarde sur la console avant le targetInvocationException j'ai une erreur de type ArgumentNullException. Pourtant avec le débugueur, je n'ai visiblement aucun de mes arguments qui n'est pas initialisé.

    SInon sur l'explorateur de fichier, j'ai mon fichier xnb que je cherche à créeer, mais avec une taille de 0 octet.

    Si vous avez une idée de l'origine de ce problème merci d'avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Par défaut
    Je n'ai pas réussi à utiliser ce code, aussi j'ai essayé de m'inspirer du code que j'avais trouvé il y a quelque temps.

    J'en ai parlé sur le post : http://www.developpez.net/forums/d75...-image-bitmap/

    Mais en utilisant cette librairie, je me retrouvais avec un problème de mémoire partagé qui était mal utilisé. Notamment parce que cette méthode fait un ce qui a pour effet de réinitialiser les services et tout le contexte graphique associé à la carte graphique (qui ne peut être alloué qu'une fois).

    Résultat cela fait planter lorsque suite à mon importation j'essayais d'afficher des sprites. En enlevant le dispose, je n'ai plus l'erreur. Mais je me retrouvais avec des carrés noirs à la place des sprites. Ce qui n'est pas du plus bel effet il faut avouer bref, devenant complétement ...

    J'ai fait une bidouille en attendant que quelqu'un ou que je trouve une solution...

    pour ceux que cela intéresse, je lance via la ligne de commande la compilation des mes ressources pour lesquels j'ai besoin de créer les fichiers xnb. Et oui, un graphiste n'a pas à utiliser visual studio pour gérer ces graphismes...

    (l'idée étant d'arriver à ce que cette librairie puisse réutilise les services/device initialisé via ma classe game... mais je n'ai pas réussi à trouver comment )

    Donc je ne met pas résolu, vu que c'est pas une solution propre.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par défaut
    Salut,

    Tiens, cela pourra surement t'aider :
    http://www.ziggyware.com/readarticle.php?article_id=183

    Bonne chance

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Par défaut
    Heu sur le fil de discution que j'ai évoqué, j'ai écrit :

    Citation Envoyé par estacado Voir le message
    Je vais noter ici ma petite reflexion sur le sujet...

    En fait, la nuit portant conseil :p j'ai eu l'idée de charger la Texture2D en même temps que mon image dans ma picturebox. J'ai vu qu'il fallait que je regarde du coté de la compilation dynamique de fichier xnb... en m'inspirant de l'utilitaire fourni ici http://www.ziggyware.com/readarticle.php?article_id=183 cela devrait être possible

    Aprés sur mon composant je n'ai plus qu'à réutiliser ma Texture2d en affichant seulement la zone qui m'interresse et le tour est joué.

    Je fais mes tests des que j'ai un peu de temps et je vous tiens au courant
    C'est la méthode que j'utilise pour générer mes fichiers XNB. Le soucis étant que je suis obligé de lancer cette génération en ligne de commande... car si je l'inclus dans mon éditeur, j'ai un problème de ressource partagé.

    Je suppose que c'est le device qui se retrouve utiliser de manière conflictuelle entre le compilateur de fichier xnb, et mon éditeur afin d'afficher les ressources sur sa fenêtre...

    Mais je n'ai pas réussi à les faire cohabiter de manière saine, d'où l'utilisation en mode console du compilateur.

    à moins que quelqu'un est une autre idée plus satisfaisante.

  5. #5
    Membre expérimenté Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Par défaut
    Un passage par MSBuild pour générer les fichiers XNB ? Le designer devra installer Visual Studio et le Game Studio, mais ne sera pas forcé de les utiliser. Ou du moins, il les utilisera en mode masqué.

    Ca lui permettra en plus de pouvoir tester plus finement tes programmes (Debug / Release).
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par défaut
    Exuses moi, je n'avais pas lu l'autre post.

    Mais ce tuto permet une compilation XNB sans avoir besoin de Visual Studio, ce n'est pas ce que tu recherches ?

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/10/2009, 09h41
  2. [XL-97] Erreur 13 lors d'une tentative de suppression de doublons d'une listbox
    Par Michel Delapouaitte dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 15/04/2009, 11h28
  3. Réponses: 4
    Dernier message: 08/03/2009, 21h11
  4. Réponses: 4
    Dernier message: 04/08/2007, 14h23
  5. erreur lors d'une création de base
    Par LuckySoft dans le forum Oracle
    Réponses: 2
    Dernier message: 03/07/2006, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo