Créer son jeu pour 0 € ou le blog d'un créateur indépendant fauché.

Créer son jeu pour 0 € ou le blog d'un créateur indépendant fauché.

Par krys64 Blog créé le 21/11/10 Mis à jour le 04/11/15 à 21h48

Pourquoi s'embêter à monter un studio de jeu vidéo à coups de millions et d'équipes surdimensionnées alors qu'il est si simple de tout faire soi-même ?
Vous suivrez sur ce blog les aventures d'un créateur indépendant qui va édifier petit à petit son projet de jeu afin de conquérir le monde.

Ajouter aux favoris
Signaler

Pour créer un niveau de mon jeu avec tous les éléments qui s'agencent dynamiquement, j'utilise un bon vieux système de tableau qui a la forme suivante :

private var myMap1 = [
0, 0, 11, 0,11,11, 8, 1,  2, 0, 0, 5, 0, 0,  2, 3, 4, 0, 0, 1,4, 5, 0, 1,  2, 3, 4,
0,11,  0,11, 0, 0, 0, 8,  2, 3, 0, 0, 0, 0,  2, 3, 4, 0, 0, 1,4, 5, 0, 1,  2, 3, 4,
0, 0,  0, 0, 4, 0, 4, 1,  4, 0, 0, 10, 0, 0,  2, 3, 4, 0, 0, 1,4, 5, 0, 1,  2, 3, 4,
0, 0,  0, 0, 0, 0, 0, 1,  2, 8, 0, 0, 10, 0,  2, 3, 4, 0, 0, 1,4, 5, 0, 1,  2, 3, 4,
0, 0,  0, 0, 0, 0, 0, 1,  2, 8, 0, 0, 0, 10,  2, 3, 4, 0, 0, 1,4, 5, 0, 1,  2, 3, 4
];

Chaque chiffre correspond à un élément du décor qui va être intégré dans le niveau. Par exemple :

Par exemple les 2 hamburgers correspondent au 2 "11" que l'on peut voir en partant de la gauche du tableau.

Ensuite un script parcours le tableau et fait le travail. Cependant, le tableau étant en dur dans le code, j'ai cherché un moyen de l'externaliser et heureusement tout est prévu. Je créé un fichier .txt que je place au niveau da ma structure de projet. Ensuite j'appelle le fichier comme suit :

import System.IO; // Je fait un appel des classes de lecture/écriture d'Unity

private var fileName = "level1.txt"; // Je définie l'emplacement du fichier, ici un lien relatif

function Start(){
// au démarrage du jeu
    var sr = new StreamReader(Application.dataPath + "/" + fileName); // on créé un stream depuis l'application mère vers level1.txt
    var fileContents = sr.ReadToEnd(); // Dans cette variable, on place le contenu du .txt
    sr.Close(); // on stoppe le stream

    var _chars= fileContents.Split(","[0]);// on enlève toutes les virgules, ce qui créé des blocs de chaines

    var _array:Array=new Array(); // on créé un nouveau tableau
      for (_char in _chars) { // on scanne la variable _chars et à chaque bloc de chaine...
          _array.push(parseInt(_char )); // on place le bloc dans le tableau en transformant la chaine de caractères en entier numérique
    }
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::
    myMap=_array; // on retourne le tableau final
    GoPanel(); // on lance le panneau d'intro
    generateObjects(); // on génère le niveau
}

Ainsi, je peux changer et créer tous mes niveaux sans avoir besoin de recompiler l'application juste en modifiant le fichier.txt ou en en créant de nouveaux. Voilà une bonne technique de fainéant assez connue ;).

Ajouter à mes favoris Commenter (1)

Commentaires

beauregard
Signaler
beauregard
La compilation sous Unity est si longue que ça ? Avec Purebasic, la compilation es très rapide, même chose pour le dev retro sur les console Lynx et Megadrive.

Archives