Un "The Binding of Isaac" Like

Recherche Graphiste

Le problème exposé dans ce sujet a été résolu.

Bonjour les agrumes ! :)

Depuis quelques jours, le jeu n’avance pas. Du tout.

Rassurez-vous, la motivation n’est pas partie. Par contre, je ne sais plus trop quoi faire.

J’ai un peu commencer la création de ce jeu par hasard… sans jamais avoir joué à des jeux du même style. :D Du coup, aujourd’hui, je ne sais pas trop quoi ajouter pour rendre le jeu fun.

J’ai donc besoin de vous.

Actuellement, il est très loin d’être terminé. Je pourrais ajouter de nouveaux ennemis, de nouveaux boss etc, mais cela ne rendra pas le jeu fun. Car oui, aujourd’hui, le jeu n’est pas fun du tout. On va dans une salle, on tue 4 monstres, on va dans la salle suivante, on en tue encore 4, puis salle suivante il y à un coffre avec un équipement, et on continue comme ça jusqu’à la clé, puis la salle du boss, et on recommence.

Ajouter des nouveaux ennemis ne changera pas grand chose je pense. Et comme je n’ai jamais joué à des jeux de ce style, je ne sais pas où je vais.

J’aimerais donc avoir votre aide pour savoir ce qui serait sympas d’ajouter au jeu. Sachant que j’aimerais que le jeu soit le plus fun possible, mais je ne voudrais pas que le développement dure encore trop longtemps.

C’est mon premier jeu, et j’aimerais avoir quelque chose de fini rapidement pour éviter de trop tarder et que la motivation ne baisse sur la durée. Je recherche donc les choses qui sont les plus importantes.

Pouvez-vous donc me dire ce qu’il faudrait faire sur le jeu, selon vous, pour avoir un produit fini et fun ? Même si le jeu est court, c’est pas extrêmement grave. C’est mon premier jeu, je pourrais toujours en faire d’autres plus long par la suite. :)

Merci !

+0 -0

La portabilité ? ah ah :) je dis ça parce que je n’arrive pas à le lancer sous Wine mais c’est pas grave, les vidéos me permettent de répondre.

On va dans une salle, on tue 4 monstres, on va dans la salle suivante, on en tue encore 4, puis salle suivante il y à un coffre avec un équipement, et on continue comme ça jusqu’à la clé, puis la salle du boss, et on recommence.

C’est justement ça le problème. Tu ne varies pas beaucoup les patterns, le nombre de monstres, leurs diversités, les items que tu peux loot. Puis les salles sont de mêmes tailles. On ne suit pas une histoire à ce que j’ai pu comprendre et par-dessus tout ça manque de Level Design. Les pièces se ressemblent, y’a pas pièges, de challenges ni de concessions à faire (dans The Binding of Issac, on hésite parfois entre prendre une clé plutôt qu’une bombe). Mais honnêtement je trouve le rendu actuel déjà sympathique, vraiment ; tu peux continuer sur ta lancé ! :)

La portabilité ? ah ah :) je dis ça parce que je n’arrive pas à le lancer sous Wine mais c’est pas grave, les vidéos me permettent de répondre.

J’arrive à le lancer avec Wine, mais j’ai une fenêtre beige vide, et rien d’autre. Je vois passer du d3d11 dans la console, du multiple buffer et autre joyeusetés. Avec du Mono en prime. Je prédis que le port va être très compliqué et que le jeu a été conçu avec des outils assez spécifiques à Windows. :D

+1 -0

J’ai un peu commencer la création de ce jeu par hasard… sans jamais avoir joué à des jeux du même style. :D Du coup, aujourd’hui, je ne sais pas trop quoi ajouter pour rendre le jeu fun.

C’est ça le problème, non ? Et la solution semble simple : arrête de bosser sur ton jeu quelques jours et va jouer à "The binding of Isaac" ou d’autres jeux du même style, en te demandant si ça te plaît et ce qui te plaît.

Alors me revoilà après une dizaine de minutes à jouer à Binding of Isaac (j’ai pris celui à 5€ sur Steam, mais il n’est pas impossible que j’achète les autres, car c’est vraiment chouette !).

Avec si peu de temps de jeu, je n’ai pas pu voir réellement ce qu’offrait Binding of Isaac… mais j’ai quand même pu voir ce qui n’allais pas sur mon jeu.

Déjà, première impression, Binding of Isaac est plus "rapide". Le personnage se déplace plus vite, il attaque plus vite, les monstres se déplacent plus rapidement.

Ensuite, le nombre de salles dans le donjon : Quand de mon côté j’en ai environs 14, Binding of Isaac en à au alentours de 8~9 (je sais plus exactement). Et ça, ça change nettement !

Parce qu’il vaut mieux avoir 8 salles différentes et funs que 14 identiques et ennuyantes.

C’est bien une chose que j’ai remarqué : Les salles sont clairement toutes différentes. Il y à des obstacles ici et là, avec des monstres placés à tel ou tel endroit stratégique avec un comportement particulier, des fois il sont immobiles et ne se contente que de tirer lorsqu’ils voient le joueur, etc…

Au final, on à envie de continuer car on se demande ce que l’on aura après. Et comme la difficulté est bien plus élevé que dans mon jeu, on hésite à continuer ou à aller directement jusqu’au boss.

Aussi, j’aime beaucoup ce système de bombe. N’ayant joué que 10 minutes, ce que je vais dire est peut être faux, mais j’ai l’impression que les bombes sont un élément central du jeu. Elles sont difficile à récupérer, mais elles permettent de détruire des obstacles pour obtenir des coffres, que l’on ne peut pas obtenir autrement. Aussi, elles font énormément de dégâts aux boss.

Bref, je vois tout plein de chose qui ne vont pas dans mon jeu.

Je vais donc corriger tout cela en copiant Binding of Isaac en m’inspirant de ce que fait Binding of Isaac : C’est à dire des salles variées, avec des mobs variées, et des boss variés et bien scriptés !

Je vais donc plancher sur tout ça (et puis je vais continuer ma partie de Binding of Isaac en même temps :p )


Parce que tu débutes et que tu es seul. Partant de là c’est pas tout le temps évident de prendre du recul. ;)

Ge0

Effectivement. Mais j’ai pu obtenir votre aide extrêmement précieuse, donc je ne suis pas si seul que ça. :p

+0 -0

Mais, qu’est ce que c’est que ça ? :p

# AI | Mob: Eye

function update(aiInfos, aiAction)
    if aiInfos.state == "wait" then
        if aiInfos.generalTimer <= 0 then
            aiInfos.state = "changedir"
        end
    elseif aiInfos.state == "changedir" then
        aiAction:chooseRandomDirection(aiInfos, 4)
        aiInfos.generalTimer = math.random() + math.random(2, 3)
        aiInfos.state = "move"
    elseif aiInfos.state == "move" then
        if aiInfos.collide == true then
            aiInfos.state = "changedir"
        end

        if aiInfos.generalTimer == 0 then
            aiInfos.generalTimer = math.random() + math.random(2, 3)
            aiInfos.state = "changedir"
        end
    end
end

Réponse : Je m’essaye au Scripting en Lua pour les mobs.

Je suis passé à Tiled pour les salles du donjon. Avant, voici comment ça se passait :

  • Le donjon se génère, et créé des salles avec un pattern ID (1, 2, 3, …)
  • Lors de l’entrée dans une salle, on regarde la pattern ID et on créer les bons mobs
  • Les mobs étaient dans le code (c’est à dire un ID pour chaque et la fonction createMob(mobID) renvois une instance de Mob avec les bonnes variables - vie, vitesse, type d’IA etc)
  • Le fond de la salle est une simple image
  • Les murs était des GameObject vide avec une boite de collision seulement

Aujourd’hui, comme ça se passe (c’est encore en cours de test) :

  • Le donjon se génère et créé les salles sans Pattern ID
  • Le fichier "rooms_pattern.json" est lu, pour connaître les différents patterns et combien de salle doivent être généré avec ce pattern
  • Lors de l’entrée dans la salle, on charge la map (en vrai, elle est préchargée) Tiled
  • On regarde les Objets dans cette map, et pour chaque, on regarde le nom de cet objet
  • On regarde dans le fichiers mobs.json si un nom correspond
  • Si oui, on appelle createMob(mobName) qui créer un mob générique, mais lui attribue l’IA, la vie etc selon le fichier JSON

Ce système avec Tiled me permet de créer des salles extrêmement variée très simplement. De plus, une même salle peut avoir des variantes, donc les décors peuvent changer ! :)

Les mobs :

[
    {
        "name": "mob_necro",
        "texture": "mobs/necro/necro.png",
        "life": 3,
        "ai": "skelnecro"
    },
    {
        "name": "mob_eye",
        "texture": "mobs/eye/mob_eye.png",
        "life": 5,
        "ai": "eyemob"
    },
]

Les salles :

[
    {
        "map": "room1_",
        "nbRooms": 1,
        "nbVariants": 2
    },
    {
        "map": "room2_",
        "nbRooms": 2,
        "nbVariants": 1
    },
    {
        "map": "room3_",
        "nbRooms": 3,
        "nbVariants": 1
    }
]

Une salle pendant sa création (le nom des mobs correspond à ceux dans le fichier json)

Demo
Demo
+0 -0

Je vous avez dit que ce projet, je le faisais par passion et pour plein d’autre raisons, mais aussi et surtout pour apprendre ?

Et bien ce projet m’a jusqu’à présent apporté énormément de nouvelles connaissances ! :)

Grâce à ce projet et à ce projet uniquement, j’ai pu apprendre :

  • Ce qu’était un Game State et comment l’utiliser
  • Ce qu’était l’Entity Component System et comment le développer
  • Ce qu’était l’Observer Pattern et comment ça fonctionne
  • Comment le JSon pouvait être utile pour le contenu du jeu
  • Comment intégrer Lua pour créer des IA
  • Et maintenant, comment rendre le jeu moddable !

Alors pour cette dernière chose, c’était clairement pas indispensable. Surtout que je pense pas que beaucoup (personne ? :p ) de gens vont s’amuser à modifier le jeu.

Mais je voulais surtout savoir si j’arriverais à faire ça, comment ça marche, etc…

Et, surtout, le fait d’avoir intégré le contenu en JSon et l’IA en Lua, j’ai pu faire ce système de Mod en un rien de temps, en modifiant juste deux/trois trucs dans le code, sans le rendre plus gros/moins lisible. Tout était déjà pratiquement en place.

J’apprend énormément avec ce projet. :)

Donc maintenant, il est possible pour le joueur de :

  • Ajouter des nouvelles salle et modifier la génération du donjon
  • Ajouter de nouveaux mobs avec leurs propres animations et leurs propres IA
  • Ajouter de nouveaux items (bientôt avec leurs propre utilité)
  • Ajouter de nouveaux coffres avec leurs propres contenu

Le tout, sans modifier les fichiers du jeu, mais simplement en renommant le dossier "mods-disabled" en "mods" puis en modifier les fichiers qui sont dedans. En plus, j’ai écrit un petit PDF sur mon temps libre ou je n’avais pas envie de coder, qui explique tout comment faire ! :D

Bon, c’est juste pour apprendre et découvrir de nouvelles choses hein, ce système de modding ne sera, je pense, pas très utile. Mais vous pourrez vous amusez si vous le voulez !

Sinon, chose assez importante que je n’ai pas dit :

La portabilité ? ah ah :) je dis ça parce que je n’arrive pas à le lancer sous Wine mais c’est pas grave, les vidéos me permettent de répondre.

J’arrive à le lancer avec Wine, mais j’ai une fenêtre beige vide, et rien d’autre. Je vois passer du d3d11 dans la console, du multiple buffer et autre joyeusetés. Avec du Mono en prime. Je prédis que le port va être très compliqué et que le jeu a été conçu avec des outils assez spécifiques à Windows. :D

Gabbro

Alors problème réglé ! En fait, je vous explique :

Il y à quelques années, je développais des jeux en Java avec LibGDX. Sauf que j’ai jamais vraiment réussi à aller au bout de mes jeux, car je manquait de compétences, que j’avais pas d’objectifs, et surtout que je faisais ça pour passer le temps quand j’avais rien trouvé à faire (alors qu’aujourd’hui, je pourrais faire d’autres choses, mais ce projet me tiens vraiment à coeur, pas comme les précédents :p ).

Quand j’ai commencé ce projet, je l’ai fait en Lua avec Love2D car la formation vidéo que je suivais apprenait ce langage.

Quelques jours après avoir commencé le projet en Lua, je me suis dit que j’aimerais bien le faire avec LibGDX en Java. J’aime beaucoup le Java et LibGDX. J’ai donc recommencé le projet avec ce langage. Sauf que, la suite de la formation vidéo était sur Monogame.

Ce que j’ai fait, c’est que j’ai développé le jeu en Monogame EN PLUS de LibGDX pour pouvoir continuer la formation vidéo.

J’ai donc surtout continuer la version Monogame du jeu, sauf que :

  • La suite de la formation ne m’interesse pas au final
  • Développer deux fois le jeu prend du temps et n’est pas utile

J’ai donc arrêté le développement de la version Monogame pour me concentrer sur la version Java.

Aujourd’hui, ça veut dire que :

  • Le projet va avancer plus vite
  • Le projet est actuellement un peu moins avancé que sur les vidéos (il manque en réalité les boss et miniboss, et les bonus des items, pas plus - donc une journée de travail)
  • Le jeu est jouable sur Windows, Mac et Linux
  • Je serait bien plus à l’aise pour coder (je connais bien Java, pas beaucoup C#)
  • J’ai pu corriger les erreurs de conception de la version Monogame

Donc au final, ça change beaucoup de chose pour moi, et le projet va mieux avancer, en plus d’être dispo sur tout les OS. Que du mieux donc !

+1 -0

Cela fait un moment que je n’ai pas donné de nouvelles du projet…

Malheureusement, je n’ai pas réussi à le mener jusqu’au bout.

Ce projet me tenait vraiment à cœur, et j’aurais bien aimé le terminer, mais je crois avoir, encore une fois, sous estimé le temps nécessaire et le travail à accomplir pour y parvenir.

C’était un projet un peu trop gros pour moi.

Cependant, je suis quand même content de l’avoir commencé, car il m’a appris tellement de chose sur le développement de jeu vidéo.

Il m’a aussi appris qu’un projet est toujours plus gros que ce que l’on imagine. Pour ce jeu, je me suis dit qu’il suffisait de générer un donjon, ajouter quelques ennemis et c’était terminé. Mais la réalité est bien différente.

Mais il m’a aussi montré une chose importante pour moi : Qu’au final, je préférais développer des jeux mobiles plutôt que des jeux PC.

J’avais donc commencé la création d’un jeu Android que j’ai, contrairement à ce projet, réussi à mener jusqu’au bout. La charge de travail à fournir pour ce dernier était beaucoup moins importante, et j’y ai pris encore plus de plaisir. En plus de ça, c’était assez agréable de voir mon jeu tourner sur mon téléphone.

Désormais, je pense que je ne ferais plus de jeux pour PC, mais uniquement pour smartphones.

Au final, je suis content de ne pas avoir trouvé de graphiste. Je me serais senti mal de lui annoncer la nouvelle, et de l’avoir fait réaliser des images pour rien.

Merci quand même à celles et ceux qui m’ont fait des retours sur le jeu. :)

Pour les personnes intéressées, je vous renvoie vers mon jeu Android : Lien vers le sujet ZdS.

+3 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte