Song of the Myrne

Un RPG au style rétro et plein d'humour sur lequel je travaille.

Myrne 6312

Un shooter en vue du haut et en coop, développé en 72h dans le cadre du 26e Ludum Dare

Song of the Myrne: What Lies Beneath

Une petite aventure en parallèle de Song of the Myrne

vendredi 26 juin 2015

Myrne: Beyond - Cuisiner


Salut les lecteurs !

Quelques news à propos de Beyond aujourd'hui. Pour le moment je travaille à un bon rythme sur le jeu (et ouais, c'est les vacances^^).

Du coup j'ai pu "terminer" la sauvegarde. J'en suis pas encore super satisfait mais on peut passer d'un niveau à un autre, bouger des objets, en prendre dans un level, les déposer dans un autre... sans que ça ne pose problème ou que les trucs soient réinitialisés/dédoublés/etc...

Donc c'est plutôt cool.

J'ai aussi ajouté un genre de journal de quête en jeu et j'ai pris à peu près 500 ans pour l'animer^^ (et c'est encore un peu brusque comme animation). Vous verrez ça dans la vidéo un peu plus bas.

J'ai aussi commencé à réfléchir au crafting.

Comme je l'ai probablement déjà écrit quelque part sur ce blog, j'aimerais bien éviter autant que possible les interactions avec des menus pour plus d'immersion.

Bon, je suis pas un gros fifou donc s'il faut vraiment un menu pour un truc, je préfère en mettre un plutôt que de mettre un système soi disant immersif qui est au final juste pénible et lent à utiliser... Ce qui fait que je dois pas mal réfléchir sur comment je vais implémenter le crafting^^.

Voilà ce que ça donnera pour la cuisine en tout cas :



En principe tout ce qui est création simple et destruction d'objets devraient consister à lancer un truc sur/dans un autre machin^^.

Par exemple lancer un bâton sur une machine à scier le bois pourrait vous donner du bois. Je vais juste devoir trouver un moyen pour que le résultat de l'opération soit clair pour le joueur.

Pour la création d'objets par contre je devrai sans doute utiliser un menu, je ne sais pas encore.

Enfin, je pense que le crafting sera moins important/fréquent que dans What Lies Beneath. On verra^^.

Bref, c'est tout pour aujourd'hui. A la prochaine !

mercredi 3 juin 2015

Myrne: Beyond - Les news "un peu nulles mais en fait non" du jour


Salut les lecteurs !

Aujourd'hui j'ai fait une grosse, grosse, avancée dans le développement du jeu...

J'aimerais vous montrer plein d'images, de vidéos et de trucs cool, vous faire comprendre à quel point c'est génial et à quel point c'est un vrai soulagement d'enfin avoir trouvé une solution facile à ce problème qui me stresse depuis quasiment le tout début du projet mais...

...Mais cette avancée est un peu nulle en fait vue du côté utilisateur... Bref, c'est une news technique aujourd'hui donc si vous n'êtes pas intéressés par ce genre de billets, retenez juste que j'ai travaillé sur la sauvegarde et partez donc regarder Kung Fury pendant que je raconte ma vie ;)

Voilà quand-même de quoi étancher votre soif d'images inédites (kinda) ^^

Pour ceux qui restent, la sauvegarde !

C'est un soucis assez épineux sur lequel je réfléchis depuis un moment. Comment gérer le chargement d'une sauvegarde quand le joueur a amené des objets d'un niveau dans un autre ? Comment rendre son équipement au joueur lors du chargement d'une partie ?

Ben quoi, tu l'as pas déjà fait pour What Lies Beneath ?

Oui et non. Dans What Lies Beneath, je pense vous en avoir déjà parlé mais les objets sont simplement représentés par des chaines de caractères, ou des mots si vous préférez ("epeeFer", "bouclierBois",...). Ce qui les rend assez simples à gérer puisque du coup sauvegarder et charger l'inventaire du joueur consiste simplement à écrire ces mots dans un fichier, puis lorsqu'on charge une partie, lire le fichier et écrire les mots dans l'inventaire du joueur.

Mais dans Beyond, un objet est beaucoup plus complexe que ça puisque~

Bah c'est débile, t'aurais du utiliser le même système que dans WLB !

Hé non^^. Ce qu'on gagne en simplicité dans WLB, on le perd en complexité et en flexibilité. Dans WLB, une épée en fer ne sera jamais différente d'une autre. Comme je l'ai dit, le jeu ne retiens que "epeeFer". Lorsqu'on la ramasse sur le corps encore chaud froid d'un squelette et qu'on jette un oeil à ses stats, le jeu va regarder dans un script tout ce qui concerne "epeeFer": son image, sa puissance, son nom, le jeu de mot vaseux lui servant de description, etc...

Bref, dans What Lies Beneath, les objets sont figés, ils n'ont pas vraiment d'existence physique en dehors de l'interface et des effets qu'ils ont sur les stats de notre perso. C'est donc extrêmement simple de les "transporter" d'une scène à une autre (un coffre ne contient par exemple qu'une liste de mots, qu'on va effacer si on le loot).

Mais dans Beyond, on a besoin que certains objets soient uniques, sans s'amuser à ré-écrire une liste de caractéristiques pour chacune de ses formes. Courage, je vais m'expliquer^^. Pour reprendre l'exemple de notre épée en fer, dans Beyond, le stuff a une durabilité. Notre épée va s’abîmer en combat, puis on va la réparer, ce qui va baisser sa durabilité totale mais l'empêcher de se casser tout de suite, etc... Les objets n'ont plus des valeurs figées qu'on peut aller lire dans une liste, ils sont dynamiques.

Imaginez que je veuille créer une épée en fer un peu spéciale. C'est celle de notre père. Elle est en tous points identique à une épée en fer normale, sauf qu'au lieu de s’appeler "Epée en fer", elle s'appelle "Epée de papa".

Dans WLB, je devrais éditer ma liste d'objets, copier/coller tout ce qui concerne "epeeFer" dans un nouveau truc "epeeFerPapa" juste pour changer le nom (bon en vrai je m'y prendrais un peu différemment mais vous voyez l'idée: pour chaque épée un tout petit peu différente, je devrais aller éditer un script, recompiler le projet, etc...). Imaginez le bordel absolu si je commence à ajouter la possibilité d'enchanter son équipement, sa durabilité comme dans Beyond, etc...

Bref, dans Beyond, il n'y a pas de listes décrivant un objet, les infos sont directement écrites dans l'objet.

Cliquez pour voir en grand


Ça permet de faire pleiiiin de chouettes choses, et ça rend l'ajout d'objets en jeu beaucoup plus rapide et agréable :)

...et ça rend la sauvegarde difficile, apparemment...

Oui. On ne peut donc plus se contenter d'écrire des mots dans un fichier... On va écrire toutes les stats des objets du joueur dans un fichier. Ce n'est pas très difficile à faire, c'est exactement la même chose pour la sauvegarde des stats, skills, etc dans WLB.

Avec juste un soucis... Comment va-t-on faire pour que l'objet apparaisse en jeu ? C'est ça la vraie "difficulté" (bon en vrai c'était facile mais il a fallu apprendre comment faire^^). En gros, comment savoir au moment où on recharge la partie, quel préfab (modèle d'objet, une épée en fer, par exemple^^) on doit spawner pour ensuite lui appliquer les caractéristiques enregistrées (genre le fait que l'objet soit à moitié pété contrairement au modèle par défaut ou qu'il ait une description différente) avant de la mettre dans l'inventaire du joueur ?

Il y a deux solutions :

La première, la plus classique dans la manière dont on travaille avec Unity, serait de garder une liste de tous les objets pouvant être manipulés par le joueur... Et ensuite lier cet objet (ce préfab) à quelque chose qu'on écrirait dans notre fichier de sauvegarde... Comme... un mot !

Ça voudrait dire donner un nom unique à chacun de mes objets, comme "epeeFerPapa" puis établir dans un script que l'objet "epeeFerPapa" est lié au prefab de l'épée en fer... Hé mais ! Mais c'est pas ce qu'on voulait éviter ?!

Si si^^. Ça fonctionnerait mais ça serait (presque) aussi contraignant que tenir à jour la liste des objets de What Lies Beneath ! Heureusement il y a une deuxième solution, sinon je n'écrirais pas ce billet ;)

On va apprendre à l'objet quel est le préfab (qui est en fait un fichier) qui lui est lié. Et lorsqu'on sauvegardera toutes les infos sur l'objet, on va sauvegarder ce nom de fichier avec les autres infos (puissance, nom, description,...).

Problème réglé !

Au moment où on charge la partie, on lit les infos de l'inventaire du player. Pour chaque objet on trouve le nom de son prefab (de fichier) on charge ce prefab dans le monde puis on a plus qu'à lui appliquer toutes ses caractéristiques et à le mettre dans l'inventaire. Yay!

La seule contrainte c'est d'écrire le nom du fichier dans l'objet, ce qui se résume à un copier/coller vite fait. C'est mieux que de tenir une liste de tous les objets existants à jour, pas vrai ?^^

Mais euh, au final c'est si terrible d'utiliser une liste comme dans WLB ?

OUI ! WLB est devenu un gros projet avec le temps, le temps de compilation (temps pour que je puisse lancer le jeu dans l'éditeur après avoir modifié un script) est assez conséquent et c'est vraiment pénible de devoir patienter plusieurs dizaines de secondes sans pouvoir rien faire simplement parce que j'ai corrigé une faute d’orthographe dans la description d'un objet.

A force d'ajouter des objets, la fameuse liste est aussi devenue très très grosse, ce qui pose des soucis lorsque je veux compiler le jeu en version navigateur web (pour The Sorcerer donc).

Enfin, du fait que tout soit hardcodé dans un script, ça ne laisse aucune place au modding. Je ne pense pas que Beyond sera moddable, mais cette manière de gérer les objets est un premier pas dans cette direction, un jour mes jeux seront moddables, c'est promis^^

Conclusion



Et voilà. Il reste encore pas mal de travail pour que la sauvegarde soit opérationnelle mais l'étape la plus difficile est passée et c'est un vrai soulagement pour moi :)

Désolé pour ce billet très technique, je pense qu'il y en aura encore pas mal vu qu'il reste pas mal à faire au niveau du core du jeu.

Je crée un peu de contenu aussi pendant ce temps là mais je suis arrivé à un point où il et difficile de progresser sans implémenter des changements de scène corrects (si je passe d'une carte à une autre, je dois éviter que les objets ramassés par le joueurs réapparaissent, que les PNJ reprennent leur dialogue à zéro comme si on ne leur avait jamais parlé, etc...).


vendredi 22 mai 2015

Myrne: Beyond - Nouvelle interface utilisateur


Hello les lecteurs !

Un billet plein de petits détails aujourd'hui pour vous montrer un peu ce que j'ai fait ces derniers temps. Si vous n'aimez pas lire, jetez quand-même un petit coup d'oeil à l'image de l'interface, plus bas, avant de partir^^.

J'ai principalement continué à implémenter les compétences et le fonctionnement du leveling. Tout semble maintenant fonctionner correctement (un ennemi ne prend plus plein de dégâts parce qu'on lui a mis un coup d'armure à grosse valeur d'armure^^) et j'ai commencé à travailler sur les types d'armures.

Quand on se fait taper, nos compétences augmentent maintenant selon le type d'armure(s) qu'on porte. Si vous avez pour habitude de vous promener avec des pièces d'un peu tout type d'armure, vos compétences augmenteront un peu dans tout. Si par contre vous ne portez essentiellement que de l'armure légère, cette compétence augmentera beaucoup plus vite, logique.

Le choix de la compétence qui augmente se fait via un random. Le jeu prend une de vos pièces d'armure au hasard et augmente la compétence associée à cette pièce (la pièce principale, le torse, a toujours plus de chance d'être choisie). C'est également cette pièce qui perd un point de durabilité (rappel: votre stuff ne durera pas éternellement). L'idée c'est qu'on considère que c'est là que l'ennemi vous a touché.

En principe je pense ajouter une limite de poids de l'équipement que vous pouvez porter. Vu que je ne compte pas limiter l'inventaire j'ai du trouver un moyen de "donner un coût" à l'utilisation d'armures lourdes.

Bref, tout ce pavé ennuyant pour vous montrer la nouvelle interface :)

Jusqu'ici elle faisait un peu sci-fi parce que c'était la direction prise par le jeu à la base. Vu qu'on reste finalement dans de la fantasy classique, retour au brun ;)

Vu que toute la transparence partout rendait souvent la lecture de l'interface difficile, j'ai aussi ajouté des images de fond aux éléments de l'interface. C'était super chiant à faire mais je voulais un truc un peu plus joli que ce que je faisais jusqu'ici (dans What Lies Beneath par exemple). Et je pense que c'est réussi^^.

J'ai pioché des idées à droite et à gauche et j'ai finalement accouché de ceci :

Cliquez pour voir en grand
Tadaa !

Elle changera sans doute encore pas mal au niveau de l'arrangement et du contenu durant le développement j'imagine (elle ne supporte pas du tout le changement de résolution en ce moment) mais je crois que le style graphique s'approche de la version définitive.

Conclusion

Le fonctionnement du personnage, les dégats, etc... avancent bien. Le tout me semble cohérent et équilibré (on verra avec le temps^^) et en principe la montée en puissance de votre perso devrait se faire de manière assez progressive. Je voulais éviter un système comme celui de WLB où on sent une grosse différence avant/après quand on monte de niveau.

Rassurez-vous, si tout ce système semble passif, vous aurez votre mot à dire au moment du level up. Vous aurez des points (5?) à répartir dans les stats de base (force, dex, agilité, magie, et peut-être d'autres plus tard...).

Ses stats influencent le jeu directement évidemment (force augmente les dégâts de votre massue préférée,...) mais aussi les compétences qui sont liées à cette stat. Par exemple, avec une dextérité de 10 comme sur ce screenshot, vous ne serez pas capable d'augmenter votre tir à l'arc au delà de 10.

dimanche 17 mai 2015

Myrne: Beyond - Yay, des news!


Salut les lecteurs !

Ça fait longtemps. Je suis passé par une agréable petite phase de "je n'ai aucune idée de ce que je suis en train de faire, c'est stressant, jouons plutôt à GTA et à Dark Souls 2 à la place de travailler".

Heureusement, modifier l'éditeur de dialogues pour qu'il fonctionne avec le "nouveau" système de dialogues de Beyond (vous ne devriez pas vraiment voir de différence avec les dialogues de WLB mais dans les coulisses, ça fonctionne mieux^^) m'a un peu remis sur les rails (je vois mieux l'avancement du jeu).

J'ai continué a bosser sur divers trucs importants (le fonctionnement du leveling) et moins importants genre le sang.

J'aimais bien l'effet des persos qui se brisent en petits triangles à la mort mais ça a tendance a planter je ne sais pas trop pourquoi (c'était pas mon script, je suis pas très à l'aise quand il s'agit de toucher à de la géométrie en code^^). Du coup j'ai plutôt remplacé ça par des petits cubes rouges (pour les créatures qui saignent rouge en tout cas) qui giclent partout, ce qui donne assez bien. Puis un jeu Myrne sans un peu de gore, ce n'est pas un jeu Myrne^^. Les petits triangles sont toujours utilisés lorsqu'une arme ou projectile se brise.

En parlant d'effets visuels, j'ai changé les effets de feu pour qu'ils respectent beaucoup mieux l’aspect graphique du jeu.



J'ai continué à bosser sur l'équipement, pour le moment il ne fonctionne pas mais il s'affiche sur le perso et on peut voir l’allure de son héros dans la fenêtre d'inventaire. J'ajouterai sans doute une caméra à la 3e personne à un moment.

Et je crois que c'est à peu près tout ce qui est digne d’intérêt (je ne vais pas vous parler de portes ou des trucs copiés/collés depuis Song of the Myrne^^).

Je vous laisse voir tout ça dans cette vidéo.


A la prochaine !


mercredi 15 avril 2015

Myrne: Beyond - Hop hop hop


Hello les lecteurs.

Aujourd'hui, vidéo ! Yay !

Je travaille en ce moment sur un des donjon du jeu. C'est l'occasion de profiter un peu de la 3D pour faire suer le joueur^^

Je vous rassure c'est pas terminé, vous ne vous retrouverez jamais dans le vide intersidéral à sauter de bloc volant en bloc volant dans le jeu final (en principe^^)

Et c'est tout pour aujourd'hui, je ne veux pas spoiler ce donjon en vous en montrant plus.


jeudi 9 avril 2015

Myrne: Beyond - L'île + remaniements divers


Hello les gens !

J'espère que la démo / chasse aux œufs vous a plu. J'avais préparé ça un peu à l'arrache mais les retours que j'en ai eu sont positifs, yay !

Le développement du jeu a été pas mal lent ces derniers jours, j'ai commencé à re-réfléchir au projet et à ce que je comptais faire exactement, mais c'est encore un peu flou :S

Je me suis rendu compte que la vision que j'ai du jeu risque d'être un peu chaude à développer tout seul^^
Du coup j'ai fait un petit retour au drawing board et j'ai coupé à la machette dans ce que j'avais prévu de faire. Un peu comme ce que j'ai fait pour passer de SotM à WLB en fait :)

Mais j'ai aussi fait quelques trucs concrets (principalement du level-design), je vous rassure !


Voilà la carte du "monde" telle qu'elle est actuellement. Elle fait à peu près la même taille que l'île de WLB avant la sortie Steam (donc avant les quêtes annexes et la plage, les montagnes et les forêts au nord de notre maison).

Il me reste encore quelques plaques à ajouter (vous pouvez voir la taille d'une plaque avec celle pas finie en haut à gauche de l'image), au final je pense que cette île fera la même taille que celle de WLB (version actuelle).

En principe tout l'extérieur tournera sans temps de chargement, c'est assez difficile à dire tant qu'il n'y a pas de PNJs, animaux, etc... Mais en cas de soucis il faudra juste charger/décharger ces trucs là en temps réel, donc rien de trop problématique.

Mais c'est fort petit, non ?
Oui, je préfère créer un petit monde maîtrisé et rempli (/hi Morrowind), plutôt qu'une grande carte toute vide dans laquelle on s'ennuie (ceci n'est pas du tout une pique lancée vers Skyrim... hum hum...).

Du coup l'extérieur servira un peu de gros hub où faire ses achats et prendre des quêtes, un peu comme le village de Namok dans WLB, mais en beaucoup plus grand donc, tandis que l'essentiel du gameplay (combats, plateformes, quêtes,...) se déroulera principalement dans des donjons (y'aura aussi ça en extérieur mais les 3/4 du jeux se passeront sans doute en donjon).

Voilà pour ça^^.

Pour le reste dont j'ai déjà parlé, tout va probablement changer donc oubliez tout ce que j'ai dit jusqu'ici sur le jeu :D

Je ne pense pas que je vais garder l'idée de la science-fantasy par exemple. Elle me pose pas mal de soucis au niveau de l'écriture du scénario.

J'ai ajouté des nuages sinon ;)

En fait je crois que je vais me concentrer sur l’aspect action-RPG et offrir un truc assez classique (un genre de WLB 2) pour plus tard, éventuellement, reprendre l'idée une fois le jeu sortit et proposer une "suite" science-fantasy lorsque je maîtriserai mieux ce nouveau framework (= ~"espace de travail", c'est comme ça que j'appelle Unity + mes scripts et assets + programmes externes que j'utilise, je risque de ré-employer ce mot souvent^^).

L'avantage c'est qu'à ce moment là j'aurai tout ce qu'il me faut niveau assets fatasy, et je pourrai alors me concentrer entièrement sur l’aspect technologie et faire un beau mix des deux. Mais bref, c'est dans longtemps donc n'en parlons plus d'ici là^^'.

Je réfléchit aussi à comment vont fonctionner les dialogues. Je pense qu'il y aura le système de WLB que j'ai reprit comme je vous l’annonçais l'autre jour, mais aussi probablement un autre système pour que les PNJ non importants disent des trucs marrants sans couper l'action en vous arrêtant et en affichant une boite de dialogue.

Les PNJ et les débilités qu'ils racontent sont le centre de WLB pour moi donc c'est un aspect de ce jeu auquel je vais faire très attention. Beyond sera plus (+) tourné action mais je compte bien garder un taux de stupidité à la minute très élevé^^

Conclusionnationage


En résumé, je revois mes ambitions à la baisse. Ça peut sembler être un truc négatif mais en fait pas du tout, c'est une étape nécessaire de tout projet qu'on espère terminer un jour, surtout pour moi qui ait trop d'imagination^^'.

J'espère que vous ne serez pas trop déçu de la perte de l'aspect science-fiction, c'est un thème qui me tient très à cœur donc je le ferai un jour, quand je serai prêt :)


lundi 6 avril 2015

Myrne: Beyond - La démo technique de Pâques


Hello les lecteurs.

Vous êtes prêts pour une chasse aux oeufs ?

J'espère bien que oui parce que c'est tout ce que j'ai à vous proposer aujourd'hui (ça et quelques news^^)


Il s'agit d'une très courte démo dans laquelle vous devez ramasser des oeufs de Pâques et tuer quelques cinglés de cultistes (c'est un peu les mages de cette planète, il faut toujours que des gens viennent pourrir l'ambiance).

Pour ce qui est de l'avancement du jeu j'ai commencé les maps intérieures (le château) et la gestion du changement de level. La sauvegarde est un peu plus difficile à mettre en place que pour WLB donc ça progresse assez lentement.

J'ai aussi mis en place le système de dialogues. J'ai repris le système de What Lies Beneath mais j'en ai profité pour l'améliorer en le rendant plus flexible et en corrigeant quelques erreurs faites à l'époque (genre celle qui m'a vraiment compliqué la tâche au moment d'ajouter le support souris).



Ça fait que je vais aussi devoir ré-écrire l'éditeur de dialogues (du moins en partie)... C'est pénible mais ça vaut le coût. Les PNJ pourront dire plus de deux phrases à la fois et ça me facilitera vraiment l'écriture.

Voilà pour aujourd'hui.

Joyeuses Pâques :)