Journal de bord

Journal de bord

Par Swing Swing Submarine Blog créé le 08/01/10 Mis à jour le 05/04/15 à 22h03

Ajouter aux favoris
Signaler
Blocks That Matter

Salut tout le monde !

 

Il est l'heure d'un petit article technique à propos de Blocks That Matter. William a écrit 2 articles successivement la semaine dernière, donc je le laisse se reposer un peu pour vous parler de la manière de concevoir BTM.

 

> Flixel comme framework de base

J'adore Flixel, c'est un framework vraiment simple et funky construit autour de Flex et d'Action Script 3 permettant d'avoir un nombre non négligeable de fonctionnalités avec lesquelles construire plus facilement/rapidement un jeu Flash.

De plus, nous avons déjà expérimenté ce framework avec les expérimentations qui ont donné naissance à Tuper Tario Tros. et Greek & Wicked.

Pour un programmeur, je trouve qu'il est relativement aisé de capter "l'esprit" du framework Flixel. Ce n'est peut être pas le framework qui est le plus optimales, mais il facilite grandement les choses.

Si vous êtes curieux et que vous cherchez un framework plus complexe pour créer des jeux Flash, je ne saurais vous conseiller d'aller jeter un oeil à Flashpunk ou encore au framework d'Alkemi.

 

> Xna comme glu pour tourner sur XBox

Nous voulions depuis un moment déjà expérimenter le channel "XBox Live Indie Games" du XBox Live. Pour se faire, nous devons utiliser un framework qui permet de transformer une console "retail" en station de développement : le framework Xna.

Lorsque l'on programme autour du framework Xna, un langage de programmation nous est imposé : C#. Comme vous pouvez vous en douter, Action Script 3/Flixel et C#/Xna sont deux choses différentes, mettant en jeu des langages différents. Comme il nous tenait à coeur de développer avec Flixel (pour éventuellement faciliter de futurs portages), nous avons choisi d'utiliser le travail de Ben Baird qui à porté ("traduit") le framework Flixel depuis Action Script 3 vers C#/Xna. 

Ben a déjà sorti 2 jeux sur le XBlox Live Indie Games, tout deux utlisant sont portage de Flixel.

Les 2 jeux de Ben Baird sur le XBLI

Grâce a son travail, nous avons gagné quelques jours (semaines ?) de développement et nous avons pu commencer à travailler avec un framework utilisant un esprit que nous connaissions bien.

 

> Édition des niveaux

Comme vous devez sûrement le savoir, Blocks That Matter est une sorte de fils spirituel de notre premier "Deep Water Experiment" : Tuper Tario Tros. Pour créer les niveaux de ce jeu, William devait éditer un énorme fichier texte qui ressemblait à ce qui suit :

Ce niveau vous dit-il quelque chose ?

Éditer un niveau dans un simple fichier texte est une manière simple d'avoir un "éditeur de niveau" qui fonctionne puisque n'importe quel éditeur de texte ou tableur peut faire l'affaire... Mais du point de vue du Level Designer, c'est un peu plus compliqué de s'imaginer à quoi va réellement ressembler le niveau dans le jeu !

J'étais donc à la recherche d'un éditeur de niveau quand je suis tombé sur Ogmo Editor. Ogmo Editor est un bon éditeur mais il ne fonctionne bien que pour les jeux utilisant une représentation en "pure" 2D. Comme BTM utilise une représentation quelque peu isométrique, nous devons effectuer un traitement particulier sur les sprites (un tri).

J'ai donc décidé de créer un éditeur de niveau vraiment très simple pour BTM. Cet éditeur se devait d'être un éditeur "in-game" pour mieux appréhender à quoi ressemble un niveau en même temps qu'on le conçoit. Le tout entièrement utilisable à la manette.

L'éditeur est régi par un seul fichier de ressource à la fois. Ce fichier de ressource contient la description de tous les sprites et autres acteurs qu'on va pouvoir positionner dans les niveaux. Voici un court extrait d'un fichier de ressource typique :

Quand on lance le jeu avec un tel fichier de ressource, voici ce que l'on peut faire :

 

Comme vous pouvez le constater, l'éditeur est vraiment très minimal. Tout est contrôlé depuis le gamepad, à l'exception de quelques informations récupérées au clavier (lorsqu'on demande le nom du niveau par exemple, même si on aurait pu utiliser un clavier virtuel).

Voici quelques fonctionnalités de l'éditeur illustrées dans cette vidéo :

  • un curseur est utilisé pour ajouter ou supprimer un élément du niveau
  • un système de calques minimaliste est présent sur la droite de l'écran, les calques sont tous visibles par défaut mais on peut choisir d'en masquer certains
  • une librairie de blocs est affichée en haut de l'écran, les blocs contenus dans une librarie dépendent du calque sélectionné (les librairies de blocs sont floutées dans la vidéo, pour ne pas trop spoiler !)
  • le curseur peut changer le type de bloc qu'il dépose dans le niveau en naviguant dans la librairie courante
  • certains blocs (ceux constituant le sol) change automatiquement de visuel en fonction de leurs voisins
  • certains sprites (comme les sprites de décoration à base d'herbes) sont sélectionnés de manière aléatoire lors de la pose dans le niveau
  • on peut utiliser le menu "Test/Edit" pour tester le niveau de l'endroit où le joueur se trouve, ou utiliser le menu "Play/Edit" pour commencer le niveau depuis un point d'apparition posé par le Level Designer (si ce point existe)

 

> Partie sonore

Pour faciliter l'intégration des sons/musiques dans le jeu, nous utilisons un outil Microsoft nommé XACT (pour Cross Audio Creation Tool). Outil qui permet à Yann de construire une banque de sons que nous pourrons jouer dans le jeu grâce à l'utilisation de quelques paramètres dans certains des acteurs positionnés dans l'éditeur de niveau.

Des noms sont donnés aux différents sons (les "friendly names") pour pouvoir les identifier et les jouer depuis le jeu en allant piocher dans cette base de sons.

Voilà à quoi ressemble l'outil :

Yann a déjà créé un bon paquet de musiques et d'effets sonores !

 

Ce sera tout pour cette fois ! A tout bientôt !

Guillaume

 

Ajouter à mes favoris Commenter (9)

Commentaires

Swing Swing Submarine
Signaler
Swing Swing Submarine
@Galhmac : L'éditeur de niveau ce sera peut-être pour plus tard mais ça n'est pour l'instant pas une priorité. Il faudrait faire beaucoup de travail autour de l'accessibilité de l'éditeur, du partage des niveaux, etc...

William
Morphine
Signaler
Morphine
Merci pour les détails, même si heuuuu... j'ai pas tout compris parfaitement :D J'irai me renseigner un peu quand j'aurai le temps. Ce qui m'intéresse le plus c'est le résultat final, mais je vais aller voir sur le site du type qui a fait le portage flixel > XNA :)
Galhmac
Signaler
Galhmac
Suis-je le seul à me demander si l'éditeur présenté sera dispo dans la release? parce que l'édition de niveau peut donner une dimension supplémentaire au jeu et le rendre hyper attractif pour une future communauté de joueur... même si ça demande encore plus de boulot ( notamment la gestion du partage etc... ), j'ose espèrer que vous y pensé ;)
En tout cas, un long post qui se lit très rapidement ( et GG à William pour avoir fait le LD de TTT sur notepad XD )
D'ailleurs, je me demandais à l'instant comment vous faites sur Seasons, éditeur perso ou direct dans Blender???

Kirub
Swing Swing Submarine
Signaler
Swing Swing Submarine
Salut Morphine!

Pour la résolution, comme Xna utilise DirectX pour le rendu, c'est pas gênant de rendre dans des buffers "haute résoultion" (genre full HD 1920*1080). Du coup le portage rend simplement des quads texturés en lieu et place des sprites Flash.

Après j'avoue qu'il y a un petit travail à faire sur la caméra parce que Flixel en Flash, tu choisis une résolution de buffer et un zoom en valeur entière (1, 2, 3, etc...). Du coup là pour Xna, faut faire quelques modifs pour avoir un zoom flottant (analogique, genre 1.2) histoire de bien afficher ce que tu veux à l'écran en fonction des diverses résolutions.

(hmmm, je suis pas sûr d'être très clair, mais en tous les cas les résolutions hautes sont pas un problèmes pour Xna, c'est accéléré hardware via carte graphique ce qui n'est pas le cas du rendu en AS3 pour le moment... après si on fait un portage multiplateforme, c'est clair qu'on est condamné à pas utiliser de l'AS3 mais plutôt des trucs qui gère l'accélération hardware pour le rendu, genre Java/Jogl ou HaXe/hxcpp qui peut afficher via OpenGL).

Guillaume
Morphine
Signaler
Morphine
"Comme il nous tenait à coeur de développer avec Flixel (pour éventuellement faciliter de futurs portages), nous avons choisi d'utiliser le travail de Ben Baird qui à porté ("traduit") le framework Flixel depuis Action Script 3 vers C#/Xna. "
...J'ai pas perdu ma journée moi ! Je me demande comment il gère la différence de résolution, parce qu'a moins d'utiliser du vectoriel (ce qui n'est pas le cas de flixel normalement) ou de bosser sur du flash en 1920x1080 (j'ose même pas imaginer !), il faut bien agrandir l'image.

Sinon, très intéressant tout ça, comme d'hab' !
Swing Swing Submarine
Signaler
Swing Swing Submarine
@hairaz: patience, patience :)



Guillaume
hairaz
Signaler
hairaz
@Mortipoil : ce que font SSS c'est du travail de pro (utiliser Unity, Blender, programmer des modules, etc. , comme vous l'avez fait, c'est du travail de pros, je suis désolé !), mais faire un petit jeu en Flash ou en C, avec moins d'ambition forcément, c'est parfaitement accessible ! Après, forcément, c'est du boulot, et en plus il faut avoir la bonne idée (et c'est pas facile d'en trouver une seule, c'est pour ça que SSS m'impressionne souvent).

Plein de choses intéressantes dans ce post, mais j'ai surtout hâte de voir les possibilités du jeu en lui-même ! (ce qui, vous me le direz, est bien terre-à-terre :) )
Swing Swing Submarine
Signaler
Swing Swing Submarine
Salut Mortipoil,

Mais non, on est pas des pro!
Et je suis sûr que t'es capable de nous pondre des jeux. Enimal pourra témoingner pour ce qui est de se lancer dans le dev, parce qu'il s'en sort très bien :)

Sinon pour les musiques de Yann, on va surement y consacrer un article tout entier (ainsi que Géraud et ses graphes), donc on approfondira dans cet article. Pour le moment c'est assez varié (du calme, ou moins calme, au carrément frénétique, avec plus ou moins de chiptunes selon les morceaux). Yann en parlera beaucoup mieux que moi :]

Guillaume
Mortipoil
Signaler
Mortipoil
Ca me confirme que c'est pas demain que je serais capable de développer un semblant de jeu vidéo, je laisse ça aux professionnels!
Quid des pistes audio? Ça va être du lancinant à la Braid, du chiptune ou un concerto pour clavecins en mi bémol?
Vivement le 1er trailer en tout cas :)

Édito

Grâce à ce mini-devblog en français, vous pourrez suivre l'activité de notre minuscule studio de développement indépendant Swing Swing Submarine.

Nous sommes une petite équipe d'hommes et de chats passionnés qui souhaitent partager de nouvelles expériences interactives avec les joueurs du monde entier, et ceux de Gameblog en font bien évidemment partie !

--------------------------------------------------------

Quelques liens utiles :

> Site officiel <

> Twitter <

> Facebook <

Archives

Favoris