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

Un action-RPG en pixel-art

mardi 31 décembre 2013

Bonne année !

Et hop !

Par la magie de Noel d'internet et du postage différé, je peux vous envoyer ça depuis le passé ;)

Yay !


What Lies Beneath: date de sortie


Hello les gens !

Grand jour aujourd'hui !

J'ai "terminé" (il y a des guillemets ! Attendez avant de sauter au plafond) What Lies Beneath il y a genre 2 minutes.

La fin est écrite, les musiques sont toutes là, les maps sont toutes liées entre elles, et bien que je n'ai pas encore testé, terminer le jeu d'une traite doit être possible.

Ok, pourquoi est-ce qu'il n'est pas encore sur mon PC alors ? Hein ?!! Hein ?!! Espèce de menteur ! Menteeeeeur !

Il reste encore quelques trucs à faire pour qu'il soit parfait ;)

  • Traduire tous les textes et les dialogues
Une grosse partie est faite et ce qu'il reste a faire devrait être vite fait.

  • Ajoutez deux-trois PNJ
Rien de bien méchant, c'est principalement pour expliquer au joueur comment crafter des objets et pour peupler un peu le village de Namok.

  • Optimiser les maps pour éviter au maximum les lags sur les plus petites configs
Une grosse partie est faite et maintenant que j'ai mon petit script de batching, ça va tout seul.

Le temps estimé pour tout ça ? Un jour, peut-être deux.


  • Compiler le jeu pour Windows, Mac et Linux
  • Forcer mes amis à tester le jeu
  • Uploader le jeu sur un premier site (probablement http://itch.io/), les autres sites et plateformes attendront que le jeu ait été un peu testé dans tous les sens par les joueurs.
Temps estimé: Un jour (+500 pour la partie amis^^)


  • Ajouter des détails partout
Pas d'estimation de temps, c'est du never ending.


Ce qui nous renvoies donc à... une date de sortie ! Je parle d'une vraie date, pas une que je retarderais 10 fois.

Sortie de Song of the Myrne: What Lies Beneath fixée au 


Lundi 6 janvier 2014


A l'année prochaine (je n'ai pas fait cette vieille vanne, nooooooooooooooooon.......) !


lundi 30 décembre 2013

What Lies Beneath: the final countdown

Hello les gens !

Ça fait quelques jours que je travaille d'arrache-pied et que je n'ai plus le temps de jouer/regarder des films... Mais ça vaut amplement le coût !

Visez-moi un peu cette beauté !

Sexy, non ?

Bon, ok, j'ai viré les petits carrés qui représentent les détails et le jeu n'est donc pas tout à fait fini.

Mais je voulais juste vous montrer que tout l'essentiel y est (à part la dernière musique, j'attend toujours mes DVD :/ ). On peux démarrer une nouvelle partie, traverser les niveaux jusqu'au boss final, et le battre !

Je dois encore écrire la fin mais je connais des studios de développement qui sortiraient leur jeu avec moins que ça (/hi Bioware :D).

Troll à part, demain je devrais commencer à tout finaliser.

Définition: "finaliser" selon Beldarak :

1: Lancer une partie depuis le début
2: jouer sans cheat jusqu’à rencontrer un truc dérangeant, mal équilibré et/ou buggué
3: Corriger le problème
4: Retour à l'étape 1

Ça risque de me prendre une petite semaine, mais la sortie du jeu n'a jamais été aussi proche.

dimanche 29 décembre 2013

What Lies Beneath: News du jour

Hello les lecteurs !

Aujourd'hui j'ai passé ma journée à travailler sur le boss de fin du jeu. Ne vous en faites pas, ce billet ne contient aucun spoil.

Ça prend du temps mais ça vaut le coût. Faudra réfléchir un peu et analyser la situation pour bien comprendre comment tout doit s’enchaîner. Le tout sans se faire submerger par les mobs.

Ah oui, et bien entendu tout ça en se faisant maraver la tronche par... Par vous verrez bien, voilà.

J'ai presque terminé le boss et même si c'est pas fini, le combat est déjà bien sympa.

...

Le gif random du jour^^

Joueur et créatures deviennent maintenant rouge sur prise de dégâts.

Bon, il faut remplir ce billet... Ça vous dirait de savoir un fun fact sur comment je teste si la difficulté d'un niveau du jeu est bien dosée ?

Je fais le niveau / la bossfight à poil (enfin, avec les fringues de départ quoi^^) en étant niveau 1. J'équipe parfois une épée et/ou un arc de base et de temps en temps un casque et une armure de bas niveau.

Si je survis j'augmente généralement un petit peu la difficulté.

Je suis obligé de faire ça, parce qu’à force de jouer au jeu, je suis beaucoup plus skillé qu'un joueur lambda qui y jouerait pour la première fois.

Pour l'instant j'arrive encore a battre le boss et il me reste 3 pv à la fin... Je dois préciser que le boss ne fais encore rien^^.



Et voilà, c'est tout pour l'instant. J'espère terminer le boss cette nuit. Ensuite j'écrirai la fin du jeu.

A+


samedi 28 décembre 2013

What Lies Beneath - Avancée du jour

Salut les lecteurinets !

...

...

Lecteurinets ?! Bon, on va dire que je ne vous ait jamais appelé comme ça et on va continuer a vivre comme si rien ne s'était passé, d'accord ? D'ACCORD ?!!

Hem... Oh regardez ! Une roadmap !

...... * Pouet * ......

Ah ben non, même pas...

La roadmap en est toujours au même point qu'hier. Est-ce que sa veut dire que je n'ai rien fait ? Absolument pas ! (je le rappelle, la roadmap n'affiche que le contenu à proprement parler, pas les features ni les petits détails individuels)


  • Je me suis replongé dans le code de l'éditeur de dialogues
Ce fut une expérience assez désagréable mais maintenant les dialogues peuvent ajouter des notes à notre journal de quête. Ça évite de devoir garder tous les détails des quêtes en tête mais ça permet aussi et surtout de détailler certains trucs (le ressenti du personnage jouable dans certaines situations par exemple).

  • J'ai codé le générique du jeu
Je dois encore améliorer la "mise en page" du truc pour que les titres ressortent, mais ça fait déjà le boulot que c'est censé faire^^


  • J'ai ajouté quelques PNJs
Je pense qu'il m'en reste encore un ou deux à faire, peut-être trois.




Et sinon voilà ce qui doit encore être fait concrètement pour que le jeu puisse passer en beta :

    • Création du boss final
    • Création de la fin du jeu (c'est principalement du texte a écrire)
    • Ajouter des détails un peu partout (j'en ai fait une partie aujourd'hui)

J'ai trouvé un petit programme pour faire des gifs facilement au fait, hourray !
Oui, l'eau est jaune...

    • Équilibrer le stuff, en ajouter un peu
Ce ne sera probablement pas prêt pour le 29 contrairement à ce que j'avais annoncé (T_T), donc les premières versions de tests devraient être dispos la première semaine de janvier. La sortie du jeu suivra très peu de temps après.

Sur cette mauvaise nouvelle (mais pleine d'espoir à la fin^^), je vous laisse !


vendredi 27 décembre 2013

What Lies Beneath: Progrès de la nuit passée et du jour

Hello les lamantins !

Aujourd'hui je va~

*TOUDOUDOUDOUDOUDOUUUUuuuu....*

*Une roadmap sauvage apparaît*



Mais ?! WTF ?! Tu as rajouté des carrés ! Le jeu recule c'est ça ?! Malandrin ! Rembourse-nous notre temps espèce de gros bâtard !!

Ah ah, non, non, pas d’inquiétude à avoir. Les carrés représentent un truc qui a toujours été là mais qui était secondaire tant que le reste n'était pas terminé.

Le carré vert moins foncé représente l'équipement. En gros c'est si oui ou non le niveau donne du loot de manière équilibrée. Pour le moment aucun niveau n'est en règle sur la roadmap, mais je pense que la moitié est ok dans les faits, faut juste que je vérifie tout ça pour mettre à jour la roadmap.

Le carré foncé représente les détails à mettre un peu partout. La condition pour que ce carré devienne bleu, c'est que le niveau soit intéressant et que le joueur ne se contente pas de le traverser d'un bout à l'autre sans visiter les pièces secondaires.

J'ai déjà écrit quelques lettres et livres, je pense que c'est fini à 1/5 si on ne compte pas les traductions à faire.

A part ça j'ai fait d'autres trucs aujourd'hui, qui ne se trouvent pas sur la roadmap :


  • J'ai passé un petit moment à écrire un script pour automatiser le draw call batching. 
En gros ça me permet d'optimiser mes maps en une minute plutôt qu'en 20.


  • J'ai ajouté 2-3 sons pour améliorer l’immersion: les torches crépitent, le feu fait froufroush et les horloges font tic-tac...
  • J'ai ajouté un peu de variation dans certains sols
  • J'ai revu un peu les compétences.
Je me suis aperçu qu'avoir une statistique qui passe en négatif (exemple: la dextérité quand on tire à l'arc) avait un effet vraiment abusé sur les dégâts parce que le calcul de dégâts pouvait avoir un multiplicateur négatif à certains endroits. J'ai revu un peu ça pour qu'une stat négative ne soit pas reprise dans le calcul de dégâts mais ajoute tout de même un petit malus.



C'était important à faire parce que les équipement augmentant le plus l'armure donnent souvent des malus sur les stats, avec des malus aussi importants, des objets tels que le casque en bois étaient tout simplement useless.

Voilà, c'est tout pour aujourd'hui. Je reposterai peut-être ce matin si ma nuit est particulièrement productive.

A demain !


jeudi 26 décembre 2013

Joyeux Noel

Bon, je viens de vous le souhaiter dans un autre billet. Et en plus Noel c'est fini...

Mais bon, j'ai fait ça...

* Vous tend son dessin avec un regard de Bambi *


Song of the Myrne: What Lies Beneath - News du jour

Joyeux Noêl tout le monde !... Ou comme disent les gens qui débordent d'imagination et d'humour, Noyeux Joël, ah ah ah qu'est ce qu'on s'amuse :/

J'espère que vous avez passé un bon réveillon et que vous n'avez pas trop eu la gueule de bois ce matin... Bon en vrai je m'en tape un peu mais chuuuut...

Enfin bref, il est temps de parler de SotM, et plus particulièrement de What Lies Beneath (la petite aventure solo pour patienter en attendant la sortie de SotM, pour ceux du fond^^).

Comme d'habitude voici la roadmap :


Alors, ce qu'on constate :

  • Il ne manque plus qu'une musique
Hier j'ai profité d'une promo sur Magix Music Maker 2014 pour enfin me le payer (jusqu'ici j'avais une licence Baie des Pirates, ce qui était moyennement glop...

La version 2014 est complètement bâclée mais :

    • C'est pas grave, du coup j'utilise la 2013 de manière plus ou moins légale (je vois mal pourquoi on m'ennuierait vu que j'ai la license de la version censée être supérieure (ils ont ajouté du lag, trop bien !)
    • J'ai de nouveaux Soundpools, yay ! Du coup j'en ai profité pour faire deux morceaux aujourd'hui.
    • J'imagine qu'elle sera patchée, on est pas encore en 2014 après tout
Chez Magix ils font de bons logiciels mais ils vivent encore dans des maisons en torchis au pied d'un château fort. C'est pour ça que la piste audio du dernier level devra attendre quelques jours, le temps que je reçoive mes soundpools en plus par la poste (le téléchargement, cette invention du Démon !).

Là j'ai pas de soundpool avec des trompettes et des coeurs pour claquer sévère pendant la baston finale.

En parlant de cuivres, je ne me rappelle plus si je vous ait déjà fait écouter le thème principal de What Lies Beneath.


Hop, comme ça c'est fait. Il est en téléchargement gratuit au fait.


  • J'ai commencé a terminer (tout un concept) les niveaux et a écrire/traduire les quelques dialogues du jeu restants
Je compte terminer ça cette nuit. Ça devrais remplir la plupart des petits pixels restants sur les carrés quasi complets de la roadmap.

  • J'ai aussi commencé a ajouter les petits détails. Vous savez, ces petits détails qui font vraiment un jeu
Ce sera principalement des notes rigolotes un peu partout ainsi que des éléments insolites pour rendre le tout plus unique et drôle (parce que les dialogue sont très courts et n'ont donc pas cette petite touche débile, que vous adorez dans SotM T_T).

Ça m'a amené a compléter un peu la ligne du temps de l'univers (vous saviez qu'en 2820 un village entier a été changé en poulets ?): ajouter quelques dates pour éviter les incohérences, garnir le backgroud de certains persos importants, créer des liens entre mes différents projets de jeux, etc...


  • J'ai ajouté une feature plus ou moins utile (j'aimerais dire que ça ne m'a pas pris 3-4h... mais je ne peux pas sans mentir... :/ )

On peux maintenant choisir de mettre les objets avec lesquels on peut interagir en surbrillance quand la souris est dessus. Ça permet de rater moins de choses et de savoir facilement si un corps par terre est lootable ou non par exemple. Bien entendu, on peux désactiver ça dans les options.

Fun fact du jour: je dois redessiner à la main le curseur de la souris sur mes screenshots, scumbag windows :/




Voilà voilà. J'ai l'impression d'oublier un truc mais bon, je pense que j'ai déjà écrit un beau pavé de toute façon^^.

Je ne sais plus si je l'ai dit dans mon dernier billet mais si je prévois toujours de terminer le jeu pour le 29 décembre, je ne le sortirai pas avant janvier. Je n'ai pas envie que la sortie du jeu soit éclipsée par le Nouvel An.

Par contre les gens qui veulent servir de beta testers pourront le faire dès que le jeu sera terminé.

mardi 24 décembre 2013

SotM: What Lies Beneath - Progression du jour

(Re-)Salut tout le monde !

J'ai pu retoucher un peu à WLB aujourd'hui. Et j'avais aussi un tout petit peu progressé à la fin de la semaine passée.

Bref, ça avance, doucement, mais ça avance^^

Voilà la roadmap :



Ce qu'il y a a voir dessus :

  • A part le boss final, toutes les maps sont terminées. 
Elles manquent encore de finition mais ont leur forme finale, à part deux trois ajustements par-ci par-là, leur forme ne changera plus.

Chaque map a un petit quelque chose d'unique qui l'empêche d'être une grotte générique toute moche. 

  • Je dois encore peupler les deux dernières maps de mobs (c'est leur quart manquant).
  • Je dois encore faire 2/3 musiques


En principe le jeu devrait bien être terminé pour le 29, mais le temps de le faire tester par des gens, etc, je pense que vous ne devriez pas l'attendre avant le Nouvel An. Il sortira donc -j'espère- dans la première semaine de janvier.

Voilà voilà. C'est tout pour aujourd'hui.

Merci pour vos petits mots gentils dans les commentaire au fait, j'ai l'impression qu'il y a un peu plus d'activité dedans depuis quelques temps et ça fait plaisir.

A la prochaine !

Edit : Et hop, un bonus pour les petits écrans / Youtubers


Si la résolution verticale du jeu est réglée trop basse, l'inventaire se coupera automatiquement en deux. L'or reste toujours affiché, peu importe la page affichée.

Je conseille quand-même de ne pas descendre en dessous de la résolution sélectionnée par défaut pour éviter tous problèmes d'interface.

lundi 23 décembre 2013

Quick Review: Hammerwatch

Hello les gens !

Ce week-end, j'avais un invité chez moi, je n'ai donc pas avancé sur SotM. Par contre je sors de là avec une Quick Review pour vous. J'avais déjà testé le jeu mais j'attendais de le tester en coop pour rendre mon avis final.

Il s'agit donc d'Hammerwatch.


C'est un Hack'n'Slash (mais sans l’aspect loot/equipement) old-school fortement inspiré par Gauntlet (pour les vieillards qui me lisent^^). Et voilà pourquoi il est awesome :

  • C'est joli
Les screenshots parlent pour moi, mais en gros c'est soigné, l'éclairage est vraiment magnifique (je vous dis ça avec une pointe de jalousie^^) et surtout, les mecs ont fait un boulot fabuleux pour varier le décor à l'intérieur des niveaux. Je précise que je n'ai mis que des screens issus de l'acte 1 pour éviter de vous gâcher la découverte.

Miam miam...

  • Le level-design et le game-design sont... wawh !
Ne soyez pas surpris si vous trouvez des similitudes entre mon WLB et Hammerwatch, ce jeu m'a beaucoup influencé tant il regorge de bonnes idées à gauche à droite, que ce soit au niveau des secrets, du fonctionnement des boss ou des énigmes.


  • La courbe de difficulté est parfaite
On commence facile... puis... la fin... des pièges partout... des ennemis abusés (tient, un trash mob plus fort que le boss que je viens de battre il y a 5 minutes)... ...Les développeurs d'Hammerwatch ne sont probablement pas humains, en tout cas ils n'ont aucune limite ça me semble clair^^.

  • Un jeu suivi
Entre le moment où j'ai testé le jeu seul et le moment où je l'ai fait en coop, une maj est sortie. Je pensais que c'était juste du bugfix, mais en fait il y a eu pas mal d'améliorations très sympas.

En traînant sur le forum du jeu tout à l'heure j'ai vu qu'une seconde campagne de jeu est prévue, yay !

En parlant des campagnes, le jeu est fourni avec un éditeur de niveaux, et vous pouvez téléchargez des campagnes créées par la communauté.


  • Le coop est vraiment fun
Si le jeu est assez répétitif en solo, le coop (jusqu'à 4 joueurs en réseau ou sur la même machine) est vraiment drôle et est définitivement un plus. La caméra est bien gérée (la vue dezoome si les joueurs s'éloignent trop l'un de l'autre, jusqu'à un point de rupture où vous finirez hors-écran). Bref, c'est du bon coop bien réalisé comme je l'aime.

On sent que le multi a été pensé dès le début du développement, et pas rajouté à l'arrache comme dans Seplunky par exemple.


Conclusion



Hammerwatch est un excellent jeu. Un peu répétitif en solo mais qui devient géniallissime en coop.

Et voilà qui met fin à une ancienne Quick Review hors-série ("Mes attentes") que j'avais écrite il y a un moment. J'ai testé tous les jeux (ou presque) dont j'avais parlé à l'époque.

En voilà un petit résumé :

  • Starbound: Je ne pense pas avoir a en faire une Quick Review, il y a des tests, let's play et toutes ces choses un peu partout sur internet. Vous pouvez acheter le jeu les yeux fermés de toute façon, c'est un hit incontesté^^.
  • Quand à Star Command, je crois que la version PC n'est pas encore sortie et le jeu ne m'intéresse de toute façon plus du tout. Les devs ont un comportement assez douteux et la version Pc ne sera de toute façon qu'un port de la version tablette/téléphone. Bref, ça ne m'intéresse absolument plus :/


jeudi 19 décembre 2013

Mon interview

Hello les gens !

J'en avais déjà parlé un peu, mais elle est maintenant terminée.

"Quoi donc ?", me direz-vous (sauf si vous savez lire un titre^^). *Sors ces lunettes de soleil* Mon interview pardi !

On y parle d'un peu tout mais principalement de Song of the Myrne et de Myrne 6312 avec Skies.

Je vous laisse découvrir ça :



Voilà, j'espère que ça vous aura plus et que ça aura répondu aux questions que vous vous posiez éventuellement (si c'est pas le cas, les commentaires sont là pour ça^^).

Un gigantesque merci à Skies en tout cas, ça fait plaisir de se sentir comme une star :D

Sur ce, je vous laisse à vos occupations de plébéiens, mwhahaha ! (comment ça la grosse tête ?)

A la prochaine les lapinous (et les autres aussi) !

mercredi 18 décembre 2013

Song of the Myrne: WLB - News du jour

Hello les gens !

Un très court billet pour vous tenir au courant de l'avancée de Song of the Myrne: What Lies Beneath.

Tadaaa..... !


Un petit rappel sur comment lire mes roadmaps, ça fait pas de mal de temps en temps (j'ai pas mal simplifié le machin d'ailleurs^^) :

  • Les carrés représentent chacun un level du jeu
  • Tout ce qui est en bleu clair est terminé
  • Les diagonales un peu plus foncées dans les carrés représentent la musique (en jaune = pas fait)
    • Chaque niveau doit avoir au moins une piste audio
    • Quand la diagonale n'est qu'à moitié complétée (et que l'autre moitié est jaune donc), c'est que j'ai un morceau de fait mais que je n'en suis pas tout à fait satisfait, je dois encore le retravailler (ou ajouter une piste ou deux pour compenser :'( )
  • La barre en-dessous représente l'avancement total mais sans vraiment tenir compte du temps de test, bugfixs, etc...

In other news, j'ai commencé a retoucher un peu la manière dont l'inventaire marche sur les petites résolutions, je connais au moins un Youtuber qui sera content ;)

En parlant de ça, Skies a réalisé mon interview et ça devrait bientôt être disponible. Vous allez pouvoir écouter ma voix sexy (ou pas hein :D).

Et pour finir, à partir de demain soir je suis en congé, le développement devrait donc avancer un peu plus vite (malgré les fêtes et tout^^). Je reste donc optimiste quand à ma deadline de "dans deux semaines". J'espère avoir terminé WLB dans les environs du 29 mais heu... vous me connaissez hein, n'allez pas prendre cette date pour acquise^^'.

Il faudra sans doute une semaine de plus pour que le jeu soit bien débuggué, traduit de partout (pour les anglophones) et que le tout soit mis en ligne, etc sur Desura.


vendredi 13 décembre 2013

Song of the Myrne: What Lies Beneath: avancée du jour


Hé ben... Il est temps que je termines WLB, payes ton titre à rallonge :/

Re-salut les lecteurs sinon. Aujourd'hui je me suis enfin remis a travailler sérieusement sur SotM. Difficile de ne pas procrastiner quand il fait tout le temps tout gris et froid, et encore plus difficile de se remettre a bosser quand on en a perdu l'habitude.

J'ai enfin réussi a créer la structure de base (tous les éléments importants y sont, il manque que les détails et mobs) d'une map sur laquelle je galère depuis presque une semaine (en mode glandouille parce que je me décourage vite quand un truc ne va pas^^'). Elle est passée par pas mal de designs mais je n'arrivais pas a la rendre intéressante (c'est un genre de grotte).

Après quelques tweaks elle commence enfin a me convenir et sortira du lot avec son boss bien spécifique (pour la première fois, j'ai créé un boss qui n'est pas "juste un mob plus fort que les autres") et son décor assez unique.

Au fur et à mesure que j'avance sur les différentes maps du donjon (rappelez-vous que WLB est un genre de mini Diablo 1) le donjon, le village et les bouts d'histoire se relient ensemble et c'est chouette de voir tous ces morceaux de jeu s'assembler en un tout cohérent et amusant a jouer.

Il y a encore pas mal de boulot mais je reste confiant quand à ma date de "dans deux semaines". Il faudra sans doute un peu plus de temps pour vraiment finaliser le jeu, équilibrer la difficulté, etc, mais une courte beta sera disponible pour les plus impatients.

Revoilà ma fameuse roadmap. Comme vous le voyez ça n'a pas énormément avancé depuis la dernière fois mais je devrais reprendre un bon rythme maintenant que j'ai passé la grosse difficulté que représentait cette grotte et son boss (le demi carré tout à droite^^). 

J'ai hâte que vous puissiez y jouer :)

L'avant dernier niveau n'aura rien de très spécial niveau gameplay, il est juste là pour laisser le joueur souffler entre les deux boss et devrait donc être construit assez vite.

[Mode Instructeur ON]

Bon, pour moi le premier boss n'est pas très éprouvant, mais je vous connais, vous n'arrêtez pas de mourir bêtement. Et ne revenez pas avec votre excuse bidon du "tu y joues toute la journée et tu sais comment te crafter les meilleures armures du jeu"... Tsss...

[Mode Instructeur OFF]

Ensuite le dernier niveau sera sans doute juste un combat contre le boss final. J'ai une ébauche d'idée géniale pour lui mais il faut que je vois si c'est réalisable (bizarrement tout parait plus simple quand on est face à son carnet et qu'unity est éteint^^).

Et puis après je devrai ficeler un peu l'intrigue principale en distillant des éléments de réponse par-ci par-là dans le jeu (je ne suis pas fan des PNJ qui viennent tout nous expliquer en fin de jeu, moi ce que j'aime c'est lire des notes trouvées partout^^) et ajouter des trucs drôles et débiles un peu partout.


jeudi 12 décembre 2013

La découverte du jour: Abundant Music

Salut les enfants !

Hier j'ai découvert un site/programme awesome de chez awesome qui devrais ravir tous les amateurs de musiques mais surtout les gens qui sont nuls en musique mais qui ont besoin de morceaux pour leurs jeux, films, vidéos youtube respectant les nouvelles norme à la con.

Ça s'appelle Abundant Music et ça se passe ici.

Mais de quoi s'agit-il exactement ?

Et bien c'est un générateur de musique. En gros il génère de la musique en format midi et ce aléatoirement. Pratique pour un Ludum Dare par exemple où vous n'avez pas le temps de créer/chercher/commander vos propres musiques.

Là où Abundant Music devient vraiment super, c'est que tout ce qu'il m'a généré jusqu'ici était cohérent et sympa. Les musiques sont souvent très belles (je ne vous cache pas que je suis jaloux, maudites machines ! Même l'art elles nous le volent ?!) et surtout ça se génère en deux clics.

Je pense que les compositeurs à l'époque de la Megadrive auraient étés malades de voir ce truc :D

Je vous ait parlé d'un mini tutorial, le voici. Je ne vais pas aller dans les détails, parce qu’apparemment il y a moyen de changer plein plein plein d'options mais je vais vite vous apprendre à générer une chanson.

Etape 1: Cliquez sur "Song Settings".

Etape 2: Dans la fenêtre qui vient de s'ouvrir, il faut taper un truc, n'importe quoi (genre "stom", elle est pas mal) dans Seed (ou appuyer sur R pour un seed random). En gros c'est ce seed qui va définir la chanson.

Etape 3: Ouvrez la fenêtre "Player" et appuyez sur le bouton play. Après un petit temps d'attente, ça devrais commencer a jouer.

Si la chanson vous plait, vous pouvez l'exporter en format .midi depuis la fenêtre Export/Export Midi.

Ah oui et j'ai failli clôturer cet article en oubliant le plus beau. Toutes les musiques générées sont en licence CC0. C'est à dire qu'elles appartiennent au domaine public, vous faites ce que vous voulez avec, que votre projet soit commercial ou non. Sans même avoir a citer d'où ça vient (même si c'est toujours plus sympa de le faire évidemment^^).

Bonne écoute ;)


Song of the Myrne: Tout sur "What Lies Beneath"



Salut les Jean (et les Rafeu, cet article t'es dédié^^) !

Le jour des révélations est enfin venu, puisque je vais tout vous apprendre sur le fameux Song of the Myrne: What Lies Beneath (et non pas Behind comme j'ai tendance a le dire une fois sur deux :/).

What Lies Beneath (WLB pour les intimes) est une petite aventure "bonus" de Song of the Myrne. Mais ce n'est pas Song of the Myrne, c'est bien un standalone qui ne requerra pas d'avoir Song of the Myrne installé pour pouvoir être joué.

D'ailleurs il sortira avant SotM puisque le but premier de cette petite aventure est de vous aider a patienter en attendant la sortie de SotM. Je me rend compte que SotM est extrêmement ambitieux et qu'il me faudra encore pas mal de temps pour le finaliser sans tout bâcler (les dialogues prennent du temps a écrire).

De l'émotion...

Mais ce n'est pas le seul but de WLB. Le deuxième but moins avoué est de récolter un peu d'argent. Principalement pour montrer aux gens autour de moi que je ne perd pas mon temps (selon leurs critères hein). Mais aussi parce que l'argent, hé bien c'est cool ! Et puis pour manger sans sentir le regard lourd de reproches de l'Etat derrière moi.

Queah ?! Tu veux donc dire que WLB sera payant et que toutes ces vannes sur les DLC n'étaient pas du pipeau ?!

Non non, pas d’inquiétude. What Lies Beneath sera tout à fait gratuit. Je compte par contre le proposer en mode pay what you want. Vous pourrez donc donner ce que vous voulez pour l'avoir (y compris 0 euros). Pour une certaine somme (je ne sais pas trop combien, sans doute 50 cents ou un euro) vous recevrez aussi l'OST du jeu.

J'espère pouvoir me payer l'accès à Steam Greenlight avec l'argent éventuellement récolté.

D'accord... Et il aura quoi de différent par rapport à Song of the Myrne ?

Les deux jeux seront très semblables (c'est basiquement le même jeu, un seul et unique projet Unity). D'ailleurs si vous avez froncé les sourcils à l'idée que ce jeu puisse trop ralentir le développement de SotM, je vous rassure, une partie du travail fait sur WLB se répercute directement sur SotM (les nouveaux objets/armures/armes, bugfixes, etc). Du coup SotM progresse aussi en même temps même si son développement s'en trouve un peu ralenti bien entendu (mais j'ai presque fini WLB).

De la magie...

La principale différence entre les jeux se trouve dans le contenu. Là où SotM est énormément basé sur les dialogues, quêtes, etc... WLB est un jeu tourné action/énigmes/pièges.

On pourrait résumer par "SotM est un RPG, tandis que WLB est un mini Diablo 1".

Et ça sort quand ?

Très bientôt. J'en suis presque aux 3/4 du jeu. N'ayant pas énormément de dialogues et pas de quêtes a écrire, le développement avance vite (c'est le but à la base^^).

Je n'aime pas trop donner de dates mais je pense que la première version complète et jouable (et probablement bugguée et mal équilibrée) verra le jour dans 15 jours. Après les tests une version finale devrait rapidement voir le jour sur Desura et en DRM-free.

Le jeu durera longtemps ?

Pas vraiment, c'est une petite aventure mais ça devrais vous occuper quelques heures.

C'est quoi l'histoire ? Elle a un rapport avec SotM ?

Pas du tout. WLB se déroule bien dans le même univers (comme tous mes jeux) mais sur l'île de Namok (pour ceux qui me suivent depuis longtemps^^), quelques années avant SotM et l'apparition de la fameuse Tour de Namok. L'histoire des deux jeux n'a aucun lien (mais je n'hésiterai pas a placer quelques clins d'oeil à WLB dans SotM).

Encore plus de pièges qu'au permis de conduire...

Pour ce qui est de la trame principale, vous incarnez un paysan qui cherche a venger la mort de sa femme (...qui est un lapin...). Vous serez aussi amenés a résoudre un mystérieux mystère très mystérieux de malédiction.

Voilà. C'est à peu près tout je pense. N'hésitez pas a posez des questions en commentaire, c'est promis, je répondrai à tout sans faire de mystères cette fois (en évitant tout de même le spoil bien entendu).

Sur ce, je retourne bosser dessus.

A la prochaine !

PSPEA (Post Scriptum Pas Ecrit Apres) : Ah oui, au fait, j'en profite pour vous faire part d'un article publié sur Indius (whooo !) qui parle de Song of the Myrne (et qui fait suite au "Projets Indie" de Skies). C'est bien cool de leur part et ça devrais vachement aider a faire connaitre mes jeux.

mardi 10 décembre 2013

Song of the Myrne: Replay du live disponible

Hello les gens !

Pour ceux qui n'ont pas pu être présents durant le live de Skies, la rediffusion est enfin disponible (Twitch.tv a eu quelques soucis avec cette vidéo là en particulier apparemment : poisse, quand tu nous tiens^^).

Ça commence à 3 minutes 30.



Je peux me tromper mais il me semble que les replay ne sont disponibles que pendant une semaine, donc ne perdez pas trop de temps si vous comptez le regarder :)

A la prochaine (sans doute pour les infos complètes sur What Lies Beneath)

lundi 9 décembre 2013

Song of the Myrne dans Projets Indie


Salut les lecteurs !

Après le livestream de l'autre jour (dont malheureusement le replay semble ne pas être disponible, ça arrive de temps en temps avec Twitch, vraisemblablement un problème de corruption de fichiers :'( ), Skies remet le couvert et c'est cette fois dans son émission Projets Indie que votre mage préféré refait surface (qui a dit Harry Potter ?! é_é ).

Si vous ne connaissez pas l'émission, il s'agit d'un concept bien sympa pour faire découvrir des jeux indés moins (voir pas du tout) médiatisés en quelques minutes. C'est un peu l'équivalent vidéo de mes Quick Review.

Vous pouvez trouver la vidéo dans cet article d'Indius.

Ça ne vous échappera pas que Skies y parle aussi d'une interview a venir, c'est la fameuse surprise que je gardais secrète pour je ne sais quelle raison (j'attendais que ça se confirme d'abord, ensuite je me suis habitué a en faire tout un mystère ><).

Puisqu'on parle de Song of the Myrne, j'en profite pour m'excuser une millième fois du non-avancement de ces derniers temps. Je suis pas mal occupé par mes cours du soir et par des examens Selor. Mais ça y est, ce soir je me replonge sur le fameux projet SotM: What Lies Beneath (tous les détails cette semaine, je ne sais pas trop quel jour !).

Et pour en revenir à Skies, si la vidéo vous plait, n'hésitez pas a aller faire un tour et a vous abonner à sa chaîne Youtube.


vendredi 6 décembre 2013

News diverses

Hello tout le monde !

Encore un billet en vrac aujourd'hui, histoire de vous mettre un peu au courant sur mon activité.

On va commencer par Song of the Myrne.

Je vous rappelle que Skies y joue ce soir en live à 20h30. Je serai présent pour répondre aux questions et/ou déconner avec vous sur le chat. Donc lâchez Starbound (je sais c'est dur^^) et ramenez-vous !





Ensuite, pour mon petit projet secret, What Lies Beneath, je m'excuse encore de mettre autant de temps. Comme d'habitude, j'ai pris pas mal de retard sur mon planning initial (heureusement comme c'est un projet censé durer deux semaines, prendre 3 fois plus de temps n'est pas dramatique^^'), mais ça avance et on approche du 3/4 de finition, où je vous donnerai tous les détails.

En principe vous devriez déjà avoir compris qu'il s'agit d'une petite aventure à côté des événements de Song of the Myrne (non, non, pas un DLC^^).

Pour en terminer avec le retard, pour une fois ce n'est pas par glandouille intensive mais bien parce que j'ai eu deux semaines chargées (j'ai réussi un exam Selor, mon permis de conduire pratique, etc...). Et ce n'est malheureusement pas fini, mais je m'arrangerai pour avancer un maximum sur SotM et WLB.




Et pour terminer, ça ne vous aura peut-être pas échappé mais Starbound est sorti^^.

Du coup je me suis pris 2-3 jours de "congés" pour profiter à fond du titre sans trop de remords. Je me remet a travailler sur mes jeux dès demain.

Voilà voilà.

A ce soir sur Twitch j'espère ;)


lundi 2 décembre 2013

Song of the Myrne: le Live of the Doom !

Hello tout le monde !

Un petit billet pour vous prévenir d'un truc bien cool qui aura lieu ce vendredi.



Ce n'est pas la surprise dont je vous parle de temps en temps mais c'est tout comme.

Skies, un youtuber français (enfin il me semble^^) bien sympa va faire un live stream de Song of the Myrne (entre autre). C'est l'occasion de découvrir le jeu si vous n'avez pas encore essayé la démo (bande de mécréants). Je n'ai pas encore testé Valdis Story mais il a l'air sympa aussi.

Vous pourrez aussi me poser des questions en live si vous en avez, vu qu'en principe je devrais être présent dans le chat, histoire de justifier les bugs par des "mais non, c'est pas un bug ça, c'est une feature, en fait ton perso est dans le décor parce que... parce que... c'est une salle secrète, ok ?!! Laissez-moi tranquille bande de mécréants !! De toute façon c'est un complot des nazis Franc-Maçons".

Bref, mes trois lecteurs, I summon youuu !!


vendredi 29 novembre 2013

Trucs complètement random (et SotM aussi !)

Hello tout le monde !

Un billet complètement bordélique aujourd'hui vu que j'ai un peu tout et rien a vous dire mais que faire un billet différent pour chaque truc me semble un peu excessif (j'ai épuisé mon quota de billets débiles avec mes réflexions philosophiques :D).

On va commencer par The Divide. Un jour (un jour !), je vous en ferai une vraie critique. Mais en attendant voilà juste une musique que je ne peux pas m'empêcher d'écouter en boucle :


Puisque je vous parle de musique de films, une autre que j'ai découverte hier (merci Crossed^^) et qui déchire du pangolin en slip :




Niveau jeu-vidéo, j'ai là-aussi quelques trucs a vous dire. Si vous n'avez pas encore acheté le très excellent S.P.A.Z dont je vous parlais ici, et/ou que vous ne vous êtes toujours pas procuré le non moins sympathique Jamestown dont je vous chantais les louanges ici. Hé bien c'est votre jour de chance puisque vous pouvez tous les deux les choper (avec d'autres très bons titres) dans la Humble Weekly Sale de cette semaine.

Pour une fois que j'ai l'occasion de vous présenter une offre intéressante avant qu'elle ne soit terminé, je ne m'en prive pas^^.



Et pour terminer, vous ne pensiez tout de même pas que j'allais vous laisser partir sans vous gonfler avec Song of the Myrne et sans faire de grand mystères sur mon projet secret^^ (qui n'est plus vraiment secret en fait).

Donc pour commencer, la surprise dont je vous ai vaguement parlé il y a quelques temps approche a grands pas (si tout se passe bien, c'est un peu la poisse à ce niveau là^^'). Bon en fait c'est un truc qui est surtout cool pour moi (et pour SotM) mais bon... ...j'ai dit que c'était cool donc ça l'est !

Et puis enfin, un nouveau (et sans doute dernier) screen de mon projet secret: Song of the Myrne: What Lies Beneath. (houuu, carrément un nom, ça se précise^^)

Cliquez pour voir l'image en taille réelle blah blah blah...
WIP, je n'ai pas encore ajouté les détails, mobs, etc...
Remarquez aussi le fameux truc dont je vous parlais l'autre fois qui  me permet d'ajouter facilement des petits détails (fissure dans le mur, fenêtres mieux intégrées,...)

J'en suis à peu près à 50% de ce mini-projet.

Voilà voilà, @+ comme on disait quand j'étais encore un jeu  rebelle de la forêt (c'était une forêt de mon pays, donc on peux dire que j'ai fait Forest National, AH AH AH AH AH AH *S'enfuit en courant*).


mercredi 27 novembre 2013

La question philosophique du jour: Le retour !

Hello tout le monde !

Encore une question (sans réponse^^) sur "What the fuck is wrong with the videogame industry ?!" aujourd'hui :

Existe-t-il des gens qui aiment les QTE (Quick Time Event, ou le truc dans les jeux qui vous dit "appuyez sur X pour ne pas mourir") ?

Je n'y avais jamais pensé avant, je me suis toujours dit que les joueurs casuals devaient aimer ça, sans doute par pur masochisme et puis voilà.



Voici les faits :


  • Je fucking hates ces trucs, il m'est arrivé assez souvent de ne pas acheter (voir carrément de ne même pas prendre la peine de pirater) un jeu, juste parce que j'ai vu qu'il en contenait. Je peux les supporter s'il n'y en a pas trop mais en général ça me saoule, même si le reste du jeu me pousse a pardonner cette erreur de design (Hitman Absolution par exemple arrive a rester un bon jeu malgré ça).
  • Internet est rempli de gens qui râlent dessus. C'est souvent rapproché du mot DRM dans les discussions d'ailleurs. Je comprend qu'on puisse penser qu'un DRM est utile (certains le sont d'ailleurs), mais les QTE ?
  • Je ne connais personne dans mon entourage qui m'ait jamais dit apprécier ces trucs. En fait je n'ai jamais lu un seul avis sur un jeu où il était écrit quelque chose du genre "les graphismes sont assez sympas, le scénario bien écrit, et les QTE sont intenses et vraiment rafraîchissantes".

Et voilà, si les QTE sont votre trip, n'hésitez pas a dire pourquoi dans les commentaires, et j'essayerai de me retenir de vous balancer des cailloux dans les yeux. 

Je parle de gens qui aiment les QTE de manière "genuine", si vous les trouvez simplement "pas dérangeants" ou que vous trouvez qu'ils sont bons dans Heavy Rain uniquement, ça ne compte pas. Je cherche vraiment des gens qui se disent "chouette ! Ce jeu a l'air d'avoir de bonnes QTE, ça va définitivement jouer dans la balance de est-ce que je l'achète ou non".

PS: Moi mes préférées c'est quand on me demande d'appuyer 50 fois sur une touche pour ouvrir une porte, c'est définitivement un truc que j'ai envie de faire tous les 10 mètres !


La question philosophique du jour

Un truc vient soudain de me traverser l'esprit.

On connait tous un sacré paquet de jeux développés par une ou deux personnes. Certains de ces projets sont fait par des mecs bourrés de talent (genre Cube World).

Qu'est-ce qu'il se passerait si au lieu de mettre 100 millions de dollars dans un jeu genre Tomb Raider, un mec qui tient un bon gros studio de développement prenait sa pelle et allait déterrer 4 de ces mecs talentueux sur des forums.


On propose à chacun des gars de bosser pour la boite en leur filant directement 1 million, cash comme ça hop, cadeau si tu acceptes de bosser pour nous. Bien entendu les mecs touchent en plus un salaire.

On leur donne la totale liberté sur ce qu'ils vont faire comme projets (un chacun) et chacun de ces mecs reçoit un budget de 1 million pour son projet.

Laissez mijoter pendant 4 ans...

Ma théorie trop incroyable de la mort :

Le studio possède désormais 4 jeux probablement géniaux et a économisé un peu moins de 98 PUTAINS DE MILLIONS DE DOLLARS !!!

...J'ai du zappé un truc, personne ne cracherait sur de l'argent facile... si ?


mardi 26 novembre 2013

Song of the Myrne: Projet WLB - Ça se précise !

Hello les lecteurs !

Je vous ai appris a lire mes roadmaps l'autre jour.

Aujourd'hui, travail pratique^^

La petite nouveauté (la diagonale dans les carrés) représente l'avancement des musiques

J'en suis à une semaine de travail et comme vous le voyez, ce mini projet avance assez bien.

Une fois les trois tiers d'avancement atteints, je vous donnerai tous les détails, c'est promis.

A la prochaine les gens (et désolé encore pour ce teasing qui traîne en longueur, j'ai été pas mal pris la semaine dernière) !


dimanche 24 novembre 2013

Quick Review: RimWorld (pre-alpha)

Hello mes lecteurs préférés ! (sauf toi là, dans le fond)

Aujourd'hui c'est [Jour quelconque de la semaine] et ça fait [5000 ans] que je n'en ai plus posté. C'est donc l'heure d'une Quick Review, yay !

Si vous n'aimez pas perdre 180% de productivité, quittez tout de suite cet article, car aujourd'hui je vais vous parler de RimWorld.



Présentation


RimWorld c'est un mix entre Dwarf Fortress et FTL.
C'est donc un jeu où vous allez devoir créer et gérer une colonie sur une autre planète. Comme dans Dwarf Fortress, vous n'aurez pas le contrôle total de vos colons (c'est carrément sale ><).

Voyons tout de suite pourquoi ce jeu rox du "muffalo" (les poneyz locaux) :

Quick Review

  • Le mix entre contrôle direct et indirect
Comme je l'ai dit, on a un peu plus de contrôle sur sa population que dans DF. En fait dans RimWorld on laisse généralement ces persos se débrouiller (l'IA est très convaincante), et on se contente de leur donner un petit ordre de temps en temps ("tiens toi là qui passe près de ce metal avant de rentrer au camps, prends en avec toi !").

Ce mec... >< 
Il pète un câble avant une bataille et devient ennemi, j'arrive a le faire prisonnier... Il ne trouve rien de mieux a faire que de profiter de l'attaque pour fuir... Je ne donne pas de seconde chance.

Mais on peux aussi les passer en contrôle total (on dit alors qu'ils sont "drafted") pour les combats. Une fois drafted, un colon ne peux plus découvrir l'Amérique, manger, dormir, travailler, etc... C'est vraiment un mode combat.

  • Les combats... sont... GENIAUX !
Les combats justement. Dans RimWorld ils sont vraiment jouissifs. Bon, je n'ai jamais joué aux X-Com ou à d'autres jeux de combats stratégiques, donc mon avis est p'tet biaisé, mais je n'ai jamais vu de combats aussi cools que dans RimWorld. Apparemment le dev du jeu a réutilisé un système qu'il avait conçu à la base pour un jeu de combat tactique.

C'est super jouissif. Déjà il y a un petit choix d'armes assez sympa malgré que le jeu n'est pas encore très loin dans le développement. L'arsenal va du simple pistolet au lance grenade, en passant par l'uzi et la mitraillette.

Ce qui est super avec les combats de RimWorld c'est que le jeu offre un système de couverture très bien foutu, on peux construire des sacs de sable pour se planquer derrière, se positionner au coin d'un mur pour pouvoir tirer sans être une cible trop facile, etc...

Les affrontements sont extrêmement brutaux et sanglants, généralement il y a du feu partout et surtout l'issue d'une bataille peux changer en une seule seconde d’inattention, l'excès de confiance est définitivement a proscrire pour jouer à ce jeu.

Voilà pourquoi je hais les ennemis à lance-grenade...

Alors, pourquoi est-ce qu'un combat gagné d'avance peut subitement tourner au drame en si peu de temps:

    • On possède généralement peu de persos (j'ai jamais dépassé les 8 colons, en 2-3 jours de jeu), la moindre perte humaine fait donc fameusement pencher la balance
    • Si généralement se prendre trop de balles ne tue pas directement les colons mais les incapacite tout simplement (ils mourront si personne ne les traîne vers un lit et ne s'occupe d'eux), la mort peut survenir malgré tout très subitement : explosion d'une tourelle de défense à côté d'un perso, être incapacité dans un incendie, lance-grenade,...
    • Un événement spécial peut se dérouler. Genre une éruption solaire qui désactive tous les appareils électriques (tourelles y-compris)
Bref, pour finir avec les combats, ce qui est jouissif c'est d'élaborer de petites stratégies, genre empêcher l'avancée des ennemis avec deux tireurs, pendant qu'un troisième fait discrètement le tour du bâtiment pour les prendre à revers; faire fuir les bandits à coups de cocktails molotov en cramant toute sa base parce que de toute façon tout semble perdu et qu'on a plus qu'un seul perso; faire progresser notre groupe de tireurs dans les rues pour repousser les ennemis en s'aidant des bâtiments pour se protéger, etc...

  • Les Storytellers
C'est un concept inventé par RimWorld. En gros les événements (orages, attaques de bandits (ou d'écureuils fous^^),...) ne sont pas gérés aléatoirement comme dans les autres jeux du genre. Ici on a le choix entre différents Storytellers. Un Storyteller est une IA qui va gérer les événements. Il y en a des plus sympas que d'autres, des violents, un random pour un feeling Dwarf Fortress, etc... Il y en aura des plus spécifiques plus tard dans le développement du jeu.

Il y en a pour tous les styles de jeu

Alors, quelle est la différence avec un truc aléatoire me direz-vous. Tout simplement qu'un Storyteller va tenter de raconter une histoire (comme son nom l'indique^^). Par exemple l'IA de base (la seule que j'ai testé pour l'instant) va commencer léger pour vous laisser vous développer, pour ensuite augmenter progressivement la difficulté et faire en sorte que la partie prenne des proportions épiques.

  • La prise en main
Et pour finir, un gros point fort du jeu. C'est sa facilité d'apprentissage.

RimWorld est ridiculement simple a prendre en main, contrairement à Dwarf Fortress par exemple dont les puristes ont beau défendre l'interface, il n'en reste pas moins qu'il faut lire des tutos pour réussir a faire des tâches de base, ce qui en fait une interface moisie selon mes critères.

Dans RimWorld quasiment tout se fait à la souris et vous devriez rapidement vous débrouillez. Si vous êtes un peu perdu, un petit guide super bien fait, le codex, est disponible directement dans le jeu (je n'en ai eu besoin qu'une fois, pour comprendre comment fonctionne le système de capture de prisonniers).

Le codex contient aussi pas mal d'infos diverses et utiles

C'est un de ces fameux jeux, "easy to play, hard to master".

L'avenir du jeu


Comme je l'ai dit, RimWorld n'est encore qu'en pre-alpha. Le développeur du jeu prévoit d'ajouter du contenu sous forme de modules en mettant les modules les plus demandés par la communauté en priorité.


Ça promet bien du plaisir.


Conclusion


RimWorld est mon gros coup de cœur du moment. C'est un jeu extremement prenant, super bien réalisé, alors qu'il n'est encore qu'en pre-alpha (je n'ai pas rencontré un seul bug jusqu'ici à part les bandits qui freeze parfois quand ils sont censé quitter la carte).

Si vous aimez Dwarf Fortress et/ou Prison Architect et/ou FTL, n'hésitez pas une seule seconde^^.

Vous pouvez l'acheter ici pour 30 dollars (ça fait toujours un peu mal quand le jeu n'est qu'en pre-alpha, mais il les vaut).

Vous pouvez aussi ne pas voter pour lui sur Greenlight, vu qu'il a déja été Greenlighté ;)

Et vous pouvez ne pas le backer sur Kickstarter puisqu'il a réussi son objectif haut la main en récoltant 268 000 dollars, alors qu'il n'en demandait que 20 000, ça fait une petite différence^^.

Ah oui, une petite remarque, les graphismes vous rappellent sans doute un certain Prison Architect, pas d'inquiètude, ce sont des placeholders (donc les graphismes vont changer, le mec va engager un artiste) et les développeurs de Prison Architect sont tout a fait ok avec cet emprunt provisoire.

Amusez-vous bien !

vendredi 22 novembre 2013

Song of the Myrne: mon petit projet secret en musique

Hello les lecteurs !

Désolé de faire durer le suspens suite à mon petit teasing de l'autre jour.

J'ai été pas mal pris cette semaine et du coup j'ai pas su avancer aujourd'hui ni hier. Et demain s'annonce chaud vu que je dois aller jusque Bruxelles en train (2h) pour passer un exam de 4h puis revenir :/

Mais promis vous en saurez bientôt plus sur ce projet.

En attendant voilà une nouvelle musique pour me faire pardonner :



N'oubliez pas que vous pouvez retrouver toutes mes musiques sur mon Soundcloud.

A la prochaine !

mardi 19 novembre 2013

Song of the Myrne: Le petit teaser du matin

Hello les gens !

Je n'ai pas grand chose a vous dire sur l'avancement de SotM aujourd'hui.

A part bien-sûr que ça avance super lentement :'(

Mais trêve de pessimisme !

Voilà le petit teaser inattendu du matin ;)

Vous en saurez plus un jour, le plus tôt possible j'espère^^

Ne vous creusez pas trop la tête au fait, il n'y a pas de trucs cachés dans cette image, le seul truc à voir est en plein centre :D

A plus pour de nouvelles aventures !

vendredi 15 novembre 2013

Song of the Myrne: l'Optimisation of the Doom


Hello tout le monde !

Une toute petite news sur un aspect tout con du jeu (j'ai modifié deux lignes de codes).

Les projectiles devraient maintenant être indépendants du framerate.

Oh non, il parle encore en japonais !

Bon... En bon français ça donne ça : "si ton PC ramme comme une poubelle, ça n'affectera plus la portée des attaques".

Donc même à 40 FPS (au lieu des 60-70 qui sont idéals), le jeu reste parfaitement jouable bien qu'étant moins fluide.
A 2 FPS les projectiles terminent bien leur course à la même distance du joueur, ils font juste ça en deux sauts plutôt qu'en ligne droite :D

J'en connais un qui sera content^^.

mercredi 13 novembre 2013

Song of the Myrne: Roadmap et quelques infos sur la sortie du jeu

Hello les lecteurs !

Aujourd'hui j'ai un truc assez sympa (pour les plus courageux) a vous montrer.

Mais d'abord on va jeter un oeil sur ce que j'ai fait aujourd'hui, ça va aller super vite puisque j'avais formation et n'ai donc pas pu bosser des masses.

Fait aujourd'hui et hier tard le soir




  • Harmonisation des menus
Hier je vous montrais le nouveau menu principal. Aujourd'hui j'ai principalement retravaillé les autres menus: création du perso, options, chargement de partie, etc,... pour que l'ensemble soit cohérent et non pas l'espèce de patchwork auquel vous étiez habitués jusqu'ici (mention spéciale au menu de chargement de partie qui était complètement fugly).

  • Un peu de contenu quand-même: un dialogue + quête liée écrite sur papier
Parce que oui, faut pas déconner, de jolis menus c'est cool, un jeu fini, c'est carrément mieux.

  • Mise à jour d'Unity
Ils ont sorti une grosse maj dédiée à la 2D, ça promet bien du plaisir.

En chipotant un peu dans les nouveautés, j'en ai profité pour ajouter un effet de "flickering" (intensité de la lumière qui change) aux torches, ça renforce bien l'atmosphère des sous-sols et donne un peu plus de vie au jeu. Je dois l'ajouter sur toutes les sources lumineuses à base de feu, mais faut que j'écrive un script qui fait ça proprement. Actuellement j'utilise le système d'animation d'Unity, qui change les valeurs de la source lumineuse de manière fixe. Ça ne m'arrange pas, parce que les torches n'ont pas la même intensité que les bougies par exemple.



Bref, j'ai rien foutu quoi :D

Mais pour me faire pardonner j'ai fait un truc très à la mode en ce moment (du smurf !!).

La roadmap


On me demande souvent (et je me le demande aussi en fait :D) où en est le développement de SotM. J'ai tenté de donner une réponse.


/!\ DISCLAIMER /!\
Un BAC+40 en langues étrangères option "Esprit de Beldir" est nécessaire pour comprendre le contenu qui va suivre

/!\ DISCLAIMER /!\

Hum... Donc, heu... la voilà... :S


Ôo
....
.... C'est une blague ?

Non, non, c'est tout a fait sérieux. Mais arrêtez donc de paniquer, je vais vous expliquer comment lire ce machin.

En fait les petits carrés et les rectangles colorés forment une espèce de carte qui suit plus ou moins la géographie du jeu.

Alors, on a deux parties quasi identiques.

La partie haute est une représentation simplifiée de la carte du jeu, elle est principalement là pour m'aider a m'y retrouver, et pour montrer la délimitation des zones. Chaque zone colorée représente un level dans Unity (ou presque j'ai fait une ou deux erreurs que je corrigerai en la mettant à jour).

C'est sa copie, en bas qui va nous indiquer le degré de complétion du jeu. Et là c'est réellement simple.

En bleu clair, c'est ce qui est terminé (toujours sujet à changements bien entendu mais en gros 95-100% du travail est fait sur ces maps). Quand une zone est totalement bleue, je ne vous fait pas de dessin. Mais bien souvent une zone ne possède qu'un quart bleu (c'est flagrant sur les deux carrés beiges côte à côte, en bas, qui représentent "Syl" au passage^^), ce sont les maps pour lesquelles le level-design est totalement (ou presque) terminé mais où il manque dialogues et quêtes. Quand la zone bleue ne couvre pas tout mais plus (+) qu'un quart, c'est qu'une partie des dialogues est écrite.

En bleu très foncé, ce sont les zones qui sont à 0%. Les maps n'existent pas sous Unity et en général elles ne possèdent également aucune quête écrite sur le papier. Comme vous le voyez c'est principalement la zone de droite, qui est mise à part. En fait cette zone est vaguement décrite dans mes notes, parce qu'on y fait un petit passage pour la quête principale. Mais concrètement rien n'est encore décidé et je pourrais même l'enlever du jeu si le développement traîne trop en longueur, j'aimerais release SotM en 2014). Mais bon, elle devrait aller vite, c'est une zone très "donjon", il n'y a pas tellement de PNJ vivants là-bas, et "Arx Fatalis" m'a prouvé qu'on pouvait faire de la moitié de son jeu un dungeon-crawler sans prévenir et que ce n'était absolument pas gênant (ce jeu est awesome !).

Enfin, en bas à droite de ma roadmap, on trouve une barre de progression générale du jeu. J'y reviens après, mais ne faites pas confiance à cette barre.



En conclusion, ce graphique, si vous arrivez a le lire^^, est a prendre avec des pincettes, des toutes fines même. De plus, il ne représente qu'une estimation de ce que j'appelle le "contenu" : c'est à dire les quêtes, dialogues, niveaux, etc... Mais pas l'interface, l'IA, l'optimisation, le debug, etc etc...

Donc pour revenir à cette barre de progression, elle ne représente pas l'avancement du jeu, mais celui du contenu du jeu. Le jeu est bien plus avancé que ça puisque les features (se déplacer, lancer des skills, les mobs, le journal de quêtes, l'inventaire, etc etc) sont pour ainsi dire terminées.

J'essayerai de trouver une petite place spéciale sur le blog où mettre cette roadmap, mais de toute façon je vous en reparlerai de temps en temps quand je la mettrai à jour. Puisqu'elle ne représente que le "contenu", il est possible qu'elle n'avance pas du tout durant certaiens périodes. Ce ne sera pas parce que je glande, mais simplement que je travaille sur des "features" (IA, interface, etc). Dans les prochains jours j'aimerais mettre un gros, gros coup de cravache sur l'IA, je n'en peux plus de voir ces pauvres bougres mettre trois plombes a passer une ouverture dans un mur.



Voilà voilà. J'espère que vous ne m'en voudrez pas trop pour cette roadmap plus qu'obscure. Je l'ai volontairement faite assez abstraite pour qu'elle me serve à moi et à vous, sans que ça ne spoile le jeu.

Et je pense que maintenant vous comprenez un petit peu pourquoi "alors ton jeu, il en est où ?", est LA question que redoutent tous les développeurs de jeu-vidéo :D

C'est difficile d'avancer un pourcentage d'un truc qui n'est au final, pas mesurable.

mardi 12 novembre 2013

Song of the Myrne: Nouveau menu


 - Quel saoulant ce Beldir, il arrête pas de nous spammer aujour'h~ 

 - Nom de Myrne ! Le rev'là ! Courrez !!




Hey hey ! Re-re-salut les lecteurs !

Comme promis, j'ai revu le menu principal du jeu. C'est la première chose que le joueur voit en arrivant après tout.



Cliquez dessus pour le voir en plus grand, you know you want it...

J'espère que ça vous plait, parce que dans le cas contraire, je m'en fous :D

Cette fois c'est promis, je ne poste plus rien pour cette nuit.


lundi 11 novembre 2013

Song of the Myrne: l'image du jour

Hello tout le monde !

Je me suis fait une petite to-do list cette nuit de petits changements à faire par-ci par-là sur SotM. Et vu que l'écriture de mon tuto d'aujourd'hui m'a vachement crevé, c'est le bon moment pour faire ces petits trucs pas trop fatigants^^.

J'ai commencé avec un petit truc, ce genre de détails qui prennent 10 minutes a coder mais qui changenet tout :

Cliquez pour voir en plus grand
Attention, c'est subtil^^

J'ai ajouté de petites barres de vie aux mobs qui sont blessés.

Je sais que ça peut en gêner certains, et je suis toujours très précautionneux quand il s'agit des trucs qui touchent à l’immersion dans le jeu.

Je les ait donc faites très transparentes pour que ça ne gêne pas trop la visibilité et on pourra sans doute les désactiver dans les options.

Personnellement ça m'a toujours énervé de ne pas savoir à quel moment va mourir un ennemi. Surtout depuis qu'ils sont plus résistants. Les combattre avec cette petite barre donne l'impression que le combat va plus vite, et ça permet aussi de définir quelle cible attaquer en priorité.

C'est aussi un premier pas vers la suppression des indications textuelles de dégâts. Ces chiffres qui dégringolent de partout me posent problème pour plusieurs raisons:


  • Ils ne vont pas à la même vitesse dans l'éditeur et dans le jeu compilé :/
Le pourquoi du comment est un mystère complet
  • Ça fait bordélique, ça nuit à l'immersion et niveau lisibilité on repassera
Je vais essayer de trouver une alternative à ça, j'ai déjà une ou deux pistes. Je pourrais simplement les supprimer mais le joueur risque alors de ne pas bien se rendre compte que certains monstres sont plus vulnérables à certains types de dégâts.

To be continued... donc^^.

Prochaine étape, rendre le menu principal un peu plus joli !


Tutorial Unity3D: Construire ses propres outils - Partie 3

Hello tout le monde.

Avec seulement 6 mois de retard (continue de sourire, ça va passer), voici la partie 3 de cette suite de tutos.

Dans cette partie, on va apprendre a modifier Unity en intégrant nos propres outils directement dans son interface (ce n'est pas sale !). L'idée de modifier Unity peut paraître effrayante et/ou difficile. Mais on va voir que ce n'est pas bien différent des scripts que vous êtes habitués a écrire.

Comme d'habitude je préviens que ce tutorial n'a en rien la prétention d'être complet. Son but est surtout de vous aider a vous lancer tout en vous expliquant les bases. Pour le reste la documentation d'Unity vous tend les bras^^.

Allez, c'est parti !




Ce qu'on va réaliser



Pour avoir un cadre de travail, on va coder quelque chose de bien concret, un "éditeur de niveaux" très basique. Ce petit éditeur permet de copier/coller, déplacer et orienter des objets très facilement et de manière précise. Ça permet par exemple de placer des murs à la suite l'un de l'autre très rapidement en étant sûr qu'il n'y aura pas d'overlaps.

Il ressemble à ça, perso je l'utilise tous les jours.



Il est axé 2D mais comme vous le voyez, il y a deux petites rajoutes 3D (Y Up et Y Down) que j'avais faites pour mon prototype de Spacesim.

Vous aurez sans doute aussi besoin de changer les axes utilisés si vous n'utilisez pas les mêmes que moi. J'utilise toujours l'axe Y comme axe vertical. Ce qui fait que les coordonnées de "Song of the Myrne" se font en (X, Z) et non pas en (X, Y) comme certains font.

L'interface



On va commencer par la partie visuelle. Je vais vous apprendre a créer une fenêtre, y placer du texte, des boutons, etc...

Vous allez voir que c'est presque la même chose que de faire une interface normale. La principale différence c'est qu'on va généralement éviter de travailler avec des Rect, on préférera souvent que les éléments se placent à la suite l'un de l'autre dans la fenêtre plutôt qu'en donnant des dimensions et un positionnement fixe à nos éléments.

Notez qu'on peux quand-même le faire, dans ce cas on utilisera les GUI.Button, GUI.Label,... habituels.

Créer une fenêtre

Commençons par créer un script (je travaille en javascript). Mais attention ! Pas n'importe où. Les scripts qui modifient Unity, soit l'éditeur, se placent dans le dossier "Assets/Editor". Si vous ne le mettez pas là, et uniquement là (ou dans un sous-dossier de celui-ci), ça ne fonctionnera pas. On appelle ces scripts des EditorScripts.

Une fois votre script créé, appelons-le "Editor2D.js" par exemple, on va y écrire le code de base pour la création d'une fenêtre:

  • Pour commencer on crée une classe "Editor2D" qui se base sur la classe EditorWindow :

class Editor2D extends EditorWindow {
}


  • Dans cette classe on va ajouter une des fameuses commandes @ vues dans la partie 2 du tuto.
@MenuItem ("Window/Editor2D")

Cela va permettre d’appeler notre fenêtre dans Unity, parce que faire une fenêtre, c'est cool, mais si on ne peux pas y accéder, ça sert un peu à rien^^.

  • Bien, maintenant on peux créer la fenêtre proprement dite (le nom de la fonction n'a pas d'importance):
static function Init ()
    {  
        var window = ScriptableObject.CreateInstance.();
        window.Show();
    }


  • On ajoute une fonction OnGUI() et puis c'est bon !
A ce stade, votre script doit ressembler à ça:


Dans Unity, si vous allez dans le menu Window et que vous cliquez sur Editor2D, il devrait vous ouvrir une fenêtre vide.

On va bientôt ajouter du contenu à cette fenêtre, Unity est un peu capricieux et ne veux pas toujours rafraîchir le contenu de la fenêtre (de mon temps, il ne le faisait pas du tout automatiquement, ne vous plaignez pas^^), voilà donc ce qu'il faut faire pour la rafraîchir:

  • Simplement cliquer ou double-cliquer sur la fenêtre pour prendre le focus, en général ça la rafraîchit et vous pouvez voir l'effet de vos modifications dedans.
  • Si ça ne fonctionne pas, redimensionnez-là, en principe ça marche à tous les coups
  • Si vraiment ça ne fonctionne pas, pensez a ajouter un bouton appelant la fonction Repaint(); ou fermez puis ré-ouvrez la fenêtre.
Bien, elle est bien cool notre fenêtre, mais elle fait un peu vide.

Le contenu de l'interface


C'est ici qu'un bon 90% du travail est fait.

Ce qu'il faut savoir avant de commencer, c'est qu'Unity va remplir notre fenêtre de haut en bas, dans l'ordre de ce qu'il trouvera dans le OnGUI (puisque comme je l'ai dit, on ne va pas donner de positions fixes à nos éléments).

Outils



Voici la liste des outils qu'on va utiliser pour quand-même mettre un peu d'ordre dans notre fenêtre:

GUILayout.BeginHorizontal();
GUILayout.EndHorizontal();

Ces deux commandes vont nous permettre d'ouvrir puis de fermer une zone horizontale. C'est à dire que tout le contenu entre ces deux lignes va s'aligner de gauche à droite et non plus de haut en bas. Comme vous l'avez vu sur le screen de notre éditeur, nos "tableaux de contrôle" (Move, Rotation et Copy) sont placés les uns à côtés des autres, c'est grâce à ces commandes.

GUILayout.Space(tailleEnPixel);

Cette ligne-ci va ajouter un espace vide entre deux éléments. Cet espace sera vertical par défaut, mais horizontal si la ligne se trouve entre un BeginHorizontal et un EndHorizontal.

Au niveau des boutons, labels, etc, on va chaque fois utiliser la classe GUILayout plutôt que la classe GUI. Ce qui comme je l'ai dit, nous permettra de ne pas donner de position fixe à nos éléments.

Ainsi, GUI.Button(Rect(posX, posY, sizeX, sizeY), "Click me") deviendra GUILayout.Button("Click me");

Rien de bien nouveau ici.

Sauf que par défaut, les boutons, les labels,... prendront toute la largeur disponible (la largeur de la fenêtre si le bouton est seul, la moitié s'il y en a deux, etc). Comme ce n'est pas forcément joli, on utilisera GUILayout.Width(tailleEnPixel) pour donner une taille à un élément.

Exemple: GUILayout.Button("Click me", GUILayout.Width(sizeX));

Bien, vous avez tout bien retenu ? Alors c'est parti !

Promis, cette fois on tape du code !

Pour commencer, déclarez la variable var sizeOfObject:int = 10; au tout début de la classe Editor2D. Cette variable va permettre de préciser à notre éditeur la taille des objets qu'on manipule. En gros, si je la laisse par défaut, à 10 (c'est la taille de mes petits carrés dans Song of the Myrne), et que j'appuie sur "Move Right" avec un objet sélectionné, cet objet va être déplacé de 10 unités sur la droite.

A partir d'ici, tout se passe dans la fonction OnGUI si je ne précise rien.

On va donc écrire notre interface en commençant par le haut, On a donc les options (l'option unique en fait^^) de l'éditeur.

// Ces trois variables serviront plus tard
var sizeButtons:int = 130;
var ecartPanneaux:int = 30; // L'écart entre nos panneaux de contrôles
var ecartTitles:int = sizeButtons; // L'écart entre le titre "Move" et le bord gauche de la fenêtre

// Le deuxième argument permet simplement de mettre le texte en gras
GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
     
GUILayout.Space(10); // Cet espace n'est pas dans une zone Horizontale, il sera donc vertical
     
// On commence une zone horizontale pour que la suite s'affiche en ligne et pas en colonne
GUILayout.BeginHorizontal();      
sizeOfObject = EditorGUILayout.IntField("Size of Object", sizeOfObject, GUILayout.Width(250));
if(GUILayout.Button("-", GUILayout.Width(40)))
{
     if(sizeOfObject > 10)
     sizeOfObject -= 10;
}
if(GUILayout.Button("+", GUILayout.Width(40)))
sizeOfObject += 10;
GUILayout.EndHorizontal();

L'étape suivante consiste a afficher les trois panneaux de contrôles. Y'a vraiment rien de nouveau ici donc je vous donne le code complet de la fonction OnGUI. Je pense avoir déjà expliqué tout ce qui s'y trouve.

function OnGUI ()
    {
    var sizeButtons:int = 130;
    var ecartPanneaux:int = 30;
    var ecartTitles:int = sizeButtons;
   
        GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
     
        GUILayout.Space(10);
     
        GUILayout.BeginHorizontal();      
        sizeOfObject = EditorGUILayout.IntField("Size of Object", sizeOfObject, GUILayout.Width(250));
        if(GUILayout.Button("-", GUILayout.Width(40)))
        {
        if(sizeOfObject > 10)
        sizeOfObject -= 10;
        }
if(GUILayout.Button("+", GUILayout.Width(40)))
sizeOfObject += 10;
GUILayout.EndHorizontal();
     
GUILayout.Space(10);
     
        GUILayout.BeginHorizontal();
        var decalTitre:int[] = new int[3];
        decalTitre[0] = -25;
        decalTitre[1] = -decalTitre[0]+ecartPanneaux-20;
        decalTitre[2] = -decalTitre[0]-decalTitre[1]+ecartPanneaux+40;
        GUILayout.Space(ecartTitles+decalTitre[0]);
        GUILayout.Label ("Move", EditorStyles.boldLabel, GUILayout.Width(sizeButtons));
        GUILayout.Space(ecartTitles+decalTitre[1]);
        GUILayout.Label ("Rotation", EditorStyles.boldLabel, GUILayout.Width(sizeButtons));
        GUILayout.Space(ecartTitles+decalTitre[2]);
        GUILayout.Label ("Copy", EditorStyles.boldLabel, GUILayout.Width(sizeButtons));
        GUILayout.EndHorizontal();
     
        GUILayout.Space(10);
     
        GUILayout.BeginHorizontal();
        GUILayout.Space(sizeButtons/2);
        if(GUILayout.Button("Up", GUILayout.Width(sizeButtons))) //Move Up
        Move("Up");
        GUILayout.Space(sizeButtons + ecartPanneaux);
        if(GUILayout.Button("0", GUILayout.Width(sizeButtons))) //Rotation 0
        SetRotation(0);
        GUILayout.Space(sizeButtons + ecartPanneaux);
        if(GUILayout.Button("Up", GUILayout.Width(sizeButtons))) //Copy Up
        Copy("Up");
        GUILayout.EndHorizontal();
     
        GUILayout.BeginHorizontal();
        if(GUILayout.Button("Left", GUILayout.Width(sizeButtons))) //Move Left
        Move("Left");
        if(GUILayout.Button("Right", GUILayout.Width(sizeButtons))) //Move Right
        Move("Right");
       
        GUILayout.Space(ecartPanneaux);
       
        if(GUILayout.Button("-90", GUILayout.Width(sizeButtons))) //Rotation -90
        SetRotation(-90);
        if(GUILayout.Button("90", GUILayout.Width(sizeButtons))) //Rotation 90
        SetRotation(90);
       
        GUILayout.Space(ecartPanneaux);      
        if(GUILayout.Button("Left", GUILayout.Width(sizeButtons))) //Copy Left
        Copy("Left");
        if(GUILayout.Button("Right", GUILayout.Width(sizeButtons))) //Copy Right
        Copy("Right");
        GUILayout.EndHorizontal();
       
GUILayout.BeginHorizontal();
GUILayout.Space(sizeButtons/2);
        if(GUILayout.Button("Down", GUILayout.Width(sizeButtons))) //Move Down
        Move("Down");
        GUILayout.Space(sizeButtons + ecartPanneaux);
        if(GUILayout.Button("180", GUILayout.Width(sizeButtons))) //Rotation 180
        SetRotation(180);
        GUILayout.Space(ecartPanneaux + sizeButtons);
        if(GUILayout.Button("Down", GUILayout.Width(sizeButtons))) //Copy Down
        Copy("Down");
        GUILayout.EndHorizontal();
       
        GUILayout.Space(15);
       
GUILayout.BeginHorizontal();
GUILayout.Space(sizeButtons/2);
        if(GUILayout.Button("Y Up", GUILayout.Width(sizeButtons))) //Move UP on Y
        Move("Y Up");
        GUILayout.Space(sizeButtons*3 + ecartPanneaux*2);
        if(GUILayout.Button("Y Up", GUILayout.Width(sizeButtons))) //Copy UP on Y
Copy("Y Up");
        GUILayout.EndHorizontal();
       
GUILayout.BeginHorizontal();
GUILayout.Space(sizeButtons/2);
if(GUILayout.Button("Y Down", GUILayout.Width(sizeButtons))) //Move Down on Y
Move("Y Down");
GUILayout.Space(sizeButtons*3 + ecartPanneaux*2);
        if(GUILayout.Button("Y Down", GUILayout.Width(sizeButtons))) //Copy Down on Y
Copy("Y Down");
GUILayout.EndHorizontal();
    }

Voilà, en principe avec ça, l'interface devrait être complète.

Horreur ! Ça ne compile plus ! Espèce de vile engeance du démon ! Tu m'a donné du code pété !

Mais non, pas de panique, ce code appelle les fonctions qu'il nous reste a coder. Mettez les appels de fonctions en commentaire si vous voulez voir ce que donne votre interface.

Les fonctions



Bon, avoir une belle coquille toute vide, c'est bien joli. Mais ça sert un peu à rien.

C'est pourquoi on va maintenant coder les 3 fonctions Move(), Copy() et SetRotation() qui vont faire tout le boulot dès qu'on appuiera sur un bouton de l'interface.

Elles sont bien sûr a placer dans la classe Editor2D. Ça peut paraître évident mais bon, perso je n'écris jamais le "classe machinTruc{}" sauf pour mes fenêtres, alors...

On va commencer par les deux fonctions les plus simples: Move() et SetRotation(). Ici il n'y a qu'un seul truc nouveau. Il s'agit de la classe "Selection".

En gros c'est tout con, si on veux accéder aux Transforms qui sont sélectionnés dans l'éditeur Unity, on utilisera:

for(var trans:Transform in Selection.transforms)

Rien de bien difficile ici. Voilà le code des fonctions:

function Move(direction:String)
    {
    if(direction == "Left")
    {
    for(var trans:Transform in Selection.transforms)
    trans.position.x -= sizeOfObject;
    }
    else if(direction == "Right")
    {
    for(var trans:Transform in Selection.transforms)
    trans.position.x += sizeOfObject;
    }
    else if(direction == "Up")
    {
    for(var trans:Transform in Selection.transforms)
    trans.position.z += sizeOfObject;
    }
    else if(direction == "Down")
    {
    for(var trans:Transform in Selection.transforms)
    trans.position.z -= sizeOfObject;
    }
    else if(direction == "Y Up")
    {
    for(var trans:Transform in Selection.transforms)
    trans.position.y += sizeOfObject;
    }
    else if(direction == "Y Down")
    {
    for(var trans:Transform in Selection.transforms)
    trans.position.y -= sizeOfObject;
    }
    }

function SetRotation(rot:float)
{
for(var objet:GameObject in Selection.gameObjects)
   {
    objet.transform.localEulerAngles.y = rot;
   }
}

La fonction Copy() ajoute une nouveauté à cause de la relation des objets avec leurs Prefabs. J'ai donc deux versions de cette fonction, choisissez celle que vous préférez ou ajouter les toutes les deux à l'éditeur avec une petite option de choix.

La première version ne contient pas la nouveauté, voilà déjà son code.

function Copy(direction:String)
    {    
    for(var objet:GameObject in Selection.gameObjects)
    {
    var instObj:GameObject = GameObject.Instantiate(objet, objet.transform.position, objet.transform.rotation);
    instObj.name = objet.gameObject.name; // évite d'avoir (Clone) dans le nom
    }
   
    Move(direction);
    }

L'inconvénient de cette version, c'est que si l'objet qu'on clone est lié à un prefab, la copie (qui en plus se met à la place précédemment occupée par cet objet) ne sera pas du tout liée à ce prefab. Autrement dit, si vous clonez un mur 500 fois, puis que vous ajoutez un script au préfab de ce mur, aucun de ces murs ne subira la modification. Vraiment pas conseillé...

Pour palier à ce problème j'ai écrit une seconde version de la fonction. Cette deuxième version utilise la classe PrefabUtility et va créer un nouvel objet à partir du prefab de l'objet qu'on veux cloner.

La voici :

function Copy(direction:String)
{
   for(var objet:GameObject in Selection.gameObjects)
   {
    var instObj:GameObject;
   
    var prefab:GameObject;
    if(PrefabUtility.GetPrefabParent(objet))
    {
    prefab = PrefabUtility.GetPrefabParent(objet);
        instObj = PrefabUtility.InstantiatePrefab(prefab) as GameObject;
       }
       else
        instObj = Instantiate(objet,objet.transform.position,Quaternion.identity);
       instObj.transform.position = objet.transform.position;
       instObj.transform.rotation = objet.transform.rotation;

       instObj.name = objet.name; // évite d'avoir "(Clone)" dans le nom
   }
   Move(direction);
}

Elle n'est pas sans défaut elle non plus. Comme je l'ai dit, elle crée un objet à partir du prefab de cet objet, et ne tient finalement pas compte de l'objet lui-même.

Le soucis avec ça c'est que si vous avez, par exemple changé la texture d'un mur lié à un prefab, et que vous clonez ce mur, le mur cloné (qui une fois encore prendra la place de l'ancien mur, gardez le en tête si vous utilisez l'éditeur tel quel^^) ne possédera pas la nouvelle texture mais l'ancienne (celle du prefab donc). Dans cette situation, je créerais un nouveau prefab pour le mur possédant une texture différente, mais c'est pas toujours faisable, on ne va pas créer 500 préfabs pour un même objet^^.

Voilà voilà. En principe votre éditeur devrait fonctionner et votre code ressembler à ça:

http://i.imgur.com/gX2L4XI.png

Vous pouvez aussi télécharger mon script complet à cette adresse.

Une dernière petite astuce pour la route



Vous voilà, intrépides codeurs, prêts à conquérir le monde avec vos propres scripts. Et très vite vous allez vous retrouvez a modifier les valeurs d'un script, depuis un EditorScript. Alors retenez bien ceci ! Ne retenez pas forcément la commande ni quoi que ce soit, mais rappelez-vous que dans un coin obscur du web, un mec qu'on appelle Beldarak vous en a parlé, et alors à ce moment là vous pourrez revenir ici, et les yeux larmoyants, me remercier du fond du coeur pour les heures de galère que je vais vous épargner dans quelques instants.

Unity, n'aime pas trop qu'on modifie les valeurs d'un script (attaché à un objet donc) depuis un de nos propres EditorScripts. Il va alors faire un truc très chiant :

  • Dans un premier temps, tout va fonctionner
  • Vous allez ensuite appuyer sur "Play" et tester le jeu... Et vous rendre compte (ou pas, c'est là toute la perfidie du truc) qu'en fait votre modification n'a pas été prise en compte.
Pourquoi ? Parce que si dans un premier temps, Unity aura bien fait le changement des valeurs du script que vous modifiez depuis un EditorScript, il ne l'a en fait pas enregistré. Et donc dès qu'on appuie sur Play, il "oublie" le changement.

Une commande va donc vous sauver la vie, même si vous ne le savez pas encore^^

EditorUtility.SetDirty(leScriptModifié);

Ce que fais cette commande, c'est de dire à Unity que vous avez modifié votre script, et qu'il doit donc le sauvegarder. Appelez là de la manière que vous voulez, quand vous voulez (mais avant d'appuyer sur Pause ou de quitter Unity), mais appelez-là !

Elle prend un script comme argument. Donc par exemple, si vous venez de modifier un objet "Porte" pour que son script "Door" soit en position "ouverte" (un boolean donc), on devrait retrouver ça dans votre EditorScript:

porte.GetComponent(Door).open = true;
EditorUtility.SetDirty(porte.GetComponent(Door));

Et voilà, cette astuce vous sera probablement utile un jour.

Conclusion



Et voilà, c'est tout pour cette partie 3. Encore désolé pour le délai entre cette partie et la deuxième, au moins ça m'aura permis d'apprendre un peu le html entre temps et d'améliorer un peu la mise en page^^.

Voici quelques pistes pour aller plus loin et voir ce qu'il y a moyen de faire avec les EditorScripts (et qu'en principe vous devriez être capables de faire désormais) :


  • Lancer des fonctions toutes simples depuis l'éditeur, genre positionner le joueur sur l'objet sélectionné
Je ne l'ai pas encore dit mais pour lancer une fonction depuis l'éditeur, il suffit d'écrire un EditorScript (n'oubliez pas de le mettre dans le dossier "Assets/Editor") qui n'ouvre pas de fenêtre et de mettre: @MenuItem ("Mes Scripts Persos/Ma Fonction Trop Bien") juste avant la déclaration de la fonction qu'on souhaite exécuter depuis l'éditeur. En fait, c'est ce qu'on a fait tantôt avec la fonction Init() qui appelait la fenêtre de notre éditeur 2D.

Ces petites fonctions peuvent faire gagner un temps fou sur le long terme.

  • Un éditeur de niveaux bien complet (ça j'ai encore jamais tenté^^)
  • Un éditeur de dialogues intégré dans Unity (ça non plus)
Et cetera et cetera,... Les possibilités sont infinies.

Voilà, sur ce, je vous laisse. 

Codez bien, les enfants !