Mon canvas enfin débogué!

J’ai enfin trouvé une solution à mes tracas reliés à la balise canvas!

Je me suis basé sur la méthode proposée sur ce site: http://buildnewgames.com/sprite-animation/

Cette méthode consiste à télécharger les images à l’avance, puis de les copier dans un canvas caché en leur appliquant les opérations graphiques nécessaires (changement de couleur, rotations, déformations…) Les images utilisées dans le canvas principal proviendront de ce canvas caché plutôt que d’une image provenant d’une balise <img>.

L’avantage de cette méthode est que toutes les opérations graphiques lourdes ne seront effectuées qu’une seule fois au lancement de l’application plutôt qu’à chaque image lors des animations. Dans le cas contraire, les animations exigeraient qu’on répète toutes ces opérations près de soixante fois par seconde! Ces opérations graphiques sont plutôt gourmandes en ressources système et les petits appareils mobiles nécessite ce genre d’optimisation.

Malheureusement, l’exemple présenté ne permet que de prétélécharger une seule image. En tentant de décliner ce script pour prétélécharger plusieurs images, je me suis retrouvé avec un problème étrange… De façon irrégulière, je me retrouvais avec un jeu sans images, mais fonctionnel, sans que la console d’erreur n’indique de bogue. Il semble que l’évènement img.onload() se déclenche parfois avant que l’image ne soit réellement disponible. Je n’ai aperçu cette erreur que sur Chrome et Safari (version Mac et iOs), lorsque la mémoire cache est vide.

Ma solution consiste à modifier le script de prétéléchargement afin de tester trois éléments:

  • img.width
  • img.onload()
  • img.complete

Ça semble nécessaire de tester tout ceci, car le problème réapparaît lorsque je ne vérifis que complete ou onload, ou alors des informations telles la width de l’image ne sont pas accessible.

Maintenant, tout semble fonctionner à merveille!

Voici une version épurée du code de prétéléchargement des images:

var img_liste = [{url: "image1.jpg", loaded:false, img: null}, 
		{url: "image2.jpg", loaded:false, img: null}, 
		{url: "image3.jpg", loaded:false, img: null}];

prechargement ();

function prechargement (){

	// lancer le chargement des images:
	var listeLENGTH = img_liste.length;

	for(var i = 0 ; i < listeLENGTH ; i++){

		img_liste[i].img = new Image();

		// Appeller l'évènement img.onload() pour connaître à quel moment cette image sera téléchargée:
		img_liste[i].img.onload = set_imageloaded(i); 

		// Indiquer l'url de l'image pour commencer à la télécharger:
		img_liste[i].img.src = img_liste[i].url; 
	}

	// Lancer la vérification périodique par timeout() du téléchargement complet de toutes les images:
	test_chargement_terminer();
}

function set_imageloaded(index) {
	img_liste[index].loaded = true;
}

function test_chargement_terminer () {

	var toutes_telecharge = true;
	var listeLENGTH = img_liste.length;

	for(var i = 0 ; i < listeLENGTH ; i++){
		if(img_liste[i].img.width == 0 || img_liste[i].loaded == false || img_liste[i].img.complete == false) {
			// Au moins une image n'est pas encore complètement téléchargée.
			// Relancer la vérification périodique:
			window.setTimeout(test_chargement_terminer, 100); 
			toutes_telecharge =  false;
			break;
		}
	}

	// Si toutes les images sont là:
	if(toutes_telecharge == true){ 
		/*
		*	Commencer le jeux!
		*/
	}
}
Posted in problèmes, programmation | Tagged | Leave a comment

Premier screen du jeu

zombie-football

Évidemment, tout pourrait encore changer… Mais c’est un début!

 

 

Posted in art | Tagged | Leave a comment

Comment trouver un nom pour son jeu

Au début de ce billet, le jeu se nomme Zombie feetball. À la fin, il pourrait bien avoir changé…

D’abord, pourquoi mettre autant d’insistance sur le nom d’un jeu? Après tout, ce n’est pas le premier élément à travailler, il peut être repoussé plus vers la fin de la production puisque sa réelle fonction est de faciliter sa mise en marché. S’il est bien choisi, il aidera le consommateur à le trouver parmi toutes les autres propositions. Le nom du jeu permet de rapidement mettre de l’avant certains thèmes qui pourront le rendre plus attrayant à notre clientèle. Ce jeu sera disponible sur les magasins en ligne, ceci implique que les joueurs n’auront que l’icône et le nom pour s’en faire une idée avant de décider s’ils souhaitent en savoir plus et, espérons-le, pour le télécharger.

Donc, comment procéder pour choisir un nom pour son jeu?

1
Il vaut mieux attendre d’avoir un concept fixe et d’avoir choisi sa thématique avant de commencer à chercher. Commencez par réfléchir à votre jeu, ce qui a été réalisé, ce qu’il représentera une fois terminé. Contre quels autres jeux devra-t-il compétitionner? Quelles sensations éprouveront les joueurs? Ces questions vous aideront à orienter vos recherches dans la bonne direction. N’hésitez pas à vous lancer dans une petite recherche de jeux semblable au votre pour voir comment se débrouille votre compétition.

2
Une fois bien préparé, lancez-vous dans une tempête d’idée (brainstorm) pour sortir le plus d’idées possible, les plus variées possible. À cette étape, il ne faut pas se mettre d’ornières et commencer à s’autolimiter, car nous cherchons au contraire à ouvrir notre esprit à de nouvelles idées.

Une autre façon d’effectuer votre recherche est de faire une liste de 100 noms possibles. Le but de cette démarche est de sortir les mauvaises idées dès le début, (toutes celles qui sont trop communes ou pas assez réfléchies). Plus on avance dans notre liste, plus on se force à développer de nouvelles idées, de nouvelles approches originales. On approfondie progressivement la richesse de nos idées et, rendu aux alentours de la centième, on devrait normalement avoir une bonne vue d’ensemble du champ des possibles ainsi que quelques propositions intéressantes.

3
Une fois que vous avez le résultat de votre brainstorm, prenez un temps de repos puis prennez le temps de relire toutes vos idées en évaluant les forces et faiblesses de chacunes. C’est possible de trouvez une idée géniale immédiatement, ou de ressentir le besoin d’approfondir la recherche.
Je propose fortement d’effectuer cette étape à plusieurs personne, ou au moin à recueillir les avis externes. Ça permet de voir les réactions des autres devant tel ou tel nom, très souvent ce n’est pas celle qu’on attendait et il faut tenir compte de ces reactions pour recentrer nos recherches.

(Les étapes 4 et 5 sont optionnelle, à ne considérer que si vous souhaitez créer un site web pour la promotion de votre jeu. Vous avez réfléchi à votre promotion, n’est-ce pas?)

4
La première chose à faire avant d’arrêter son choix pour votre nom de jeu, c’est de vérifier la disponibilité du nom de domaine.

Je vous propose le site www.GoDaddy.com pour vérifier la disponibilité et acheter votre nom de domaine. C’est le moins cher que j’ai trouvé, profitez-en!

Si le nom n’est pas disponible, changez-le!

5
Vérifier la fréquence des recherches associées sur les moteurs de recherches pour voir le potentiel de mot clé. Si personne ne fait jamais de recherches avec les mots clés de votre nom de jeu, il y a peu de chance que votre jeu trouve des clients par recherche naturelle, ce qui pourrait être dommage pour le marketing. Ou bénéfique, car vous ne trouverez pas de compétition pour ces mots clés, à évaluer au cas par cas.

Pour connaître la fréquence de recherche naturelle de vos mots clés, sur le site Google AdWords, allez voir dans le menu tools and analysis / keyword tool ou keyword planner (tous les deux donnent un aperçu des recherches mensuelles par mot clé).

Une autre option qui semble de plus en plus populaire consiste à ne créer qu’une page Facebook et Twitter pour s’occuper de la promotion.

Pour ma recherche de nom, voici mes principes guides:

Je crois nécessaire que le nom rappelle le thème des zombies, même si l’icône du jeu l’indiquera déjà clairement. Cette redondance me semble nécessaire, car le nom doit à lui seul être en mesure d’identifier le jeu. Après tout, c’est possible que certains joueurs en fassent mention sur des forums ou que certains journalistes en parlent sans utiliser l’icône ou de capture-écran.

Il est aussi nécessaire que le nom indique qu’il s’agit d’un jeu de football (en quelque sorte).

Le nom DOIT être UNIQUE cette fois.

Avant de commencer, j’ai effectué une recherche pour obtenir des mots clés concernant le football américain. Cette liste inclut des mots clés sortis du règlement, des positions des joueurs ou de tout ce qui peut caractériser le jeu (source):

play
downs
line of scrimmage
passes
runs
punts
field goal
free kicks
kickoffs
score
the offense
yards
end zone
kicking the ball
shoulder pad
helm
fumble
interception
tackle
quarter
quarterback
holder
overtime
possession
overtime
sudden death play
turnover
downed player
neutral zone
runner
line of scrimmage
dead ball
referee
coach
player
foul
penalties

Assez parlé, voici le résultat de ce remue-méninges:

Zombiebowl
Zombieball
Foot (eye) ball
Severe games
Severing ball
Cicatrice ball  (Scar ball)
Brain ball
Putrid ball
Putrefaction ball
Infection ball
Sick ball
Plague ball
Zombie game
Apolalypseball
Putrid brain ball
Maggot bowl ball
Ball full of maggot
Deseased ball
deflated ball
Stitched ball
Stitched brain ball
Extreme arms rip off ball games
Pitch invasion – infestation
Zombie Cripple ball
Crippling games
Head trow
Ripped head ball games
Shotgun ball
Head full of maggot ball
Putrid football
Maggot football
Undead army on the playfield
Players from under
Fallen feet foot
Scrambled brains
Appendage
dacapite ball
Stitch-a-zombie
Lego zombie
Where’s my head?
Zombie style
Brainlust
Wak-a-zombie
Graveyard ball
Graveyard team
Gimme my foot (give me my foot!)
Dig to the bottom of the dead zone
Graveyard rooster
Plague in play
Walking in the dead zone
Heads on the dead zone
Rip a zombie
Ripped in the score zone
Zombies in play
Zombies all stars
Munch a bone game
Bone bowl
Golden zombie bowl
Shiny zombie referree
Field invasion
Igor’s play
Igor’s graveyard teamplay
Running headless
Headless bowl
Headless tournament
The fallens all stars
Undead all stars
Necro rulebook
Necro all stars
Grunt scorer
Morbid ball game
Deceased play ball
Headless deceased graveyard ball
Kikin the head
Scoring through the deads
branle-bas de zombies
bataille générale

D’après ce remue-méninges, on peut trouver regrouper la plupart des idées sous les quelques pistes suivantes:

les associations de mots clés

certains annonce un thème violent,

certains noms sous-entendent la mécanique du jeu (les membres arrachés et réorganisés)

les jeux de mots et les allitérations

J’ai vérifié la disponibilité des noms de domaine de quelques-unes de ces idées et plusieurs des plus simples sont malheureusement déjà réservées! J’ai eu une surprise lors de ma recherche sur le net: quelques-unes de mes propositions recoupent des noms d’équipes dans des leagues de football fantastiques. J’éprouve une réserve à utiliser ces noms, mais je dois avouez que certains joueurs ont démontré beaucoup d’imagination, c’est plutôt inspirant!

Quelques questions suite au remue-méninges:

Pour rejoindre le plus de joueurs, est-ce que le nom du jeu peut être en français, ou doit-il être en exclusivement en anglais? Dois-je préférer un nom bilingue, voire trilingue?

Est-ce que le nom doit faire mention du football, puisque les règles officielles ne seront pas appliquées?

Est-ce que le nom du jeu doit faire mention de violence?

Avant de décider du nom final, je vais laisser ces idées macérer dans ma tête quelque temps. Je vous reviendrai dans quelque temps avec mon choix ainsi que la première recherche pour le logo du jeu.

Que pensez-vous de mon brainstorm? Avez-vous de meilleures idées à proposer pour un tel jeu?

Posted in apprendre, marketing | Tagged , , , , , , | Leave a comment

Espace vacant

Espace vacant

… Alors, que se passe t’il? Mon dernier billet date de la fin février!

C’est bête, mais j’ai tout simplement manqué de temps depuis, débordé que j’étais sous les contrats. Un gros projet est toujours en cours d’ailleurs, je suis en train d’illustrer des petits livres pour enfants, mais ce n’est pas le temps d’en parler. N’empêche, quatre mois sans nouvelles, c’est impardonnablement long. Que s’est-il passé depuis ce temps?

Comme vous devez vous en douter, pas grand-chose.

Accumulation de problèmes

Le manque de temps a été un problème important, mais malheureusement pas le seul.

Je n’en avais pas fait mention jusqu’ici, mais j’ai déjà commencé la programmation. Je suis parti d’un ancien script isométrique, incomplet, mais fonctionnel. Je voulais d’abord m’assurer d’être en mesure d’implanter les règles et l’intelligence artificielle (c’est vraiment trop flatté l’ego des zombies que de parlé d’intelligence artificielle, parlons simplement du processus décisionnel automatisé), car je craignais qu’elles soient trop complexes. De ce côté, ça s’est bien passé.

Là où j’ai eu une mauvaise surprise, c’est lorsque j’ai intégré la première animation de mon zombie. Malgré l’abondance de source expliquant comment bien créer une animation en html5 avec la balise canvas, je n’ai pas encore réussi à créer une animation élégante. Lorsque mon zombie marche, il semble parfois laisser une trace résiduelle sur le canvas pendant une image/seconde ou deux, comme si il était dédoublé. J’ai beau réviser mon code, le problème ne me semble pas venir d’une mauvaise instruction. Je crains que la source soit dans une mauvaise utilisation du canvas, ou d’un trop grand nombre d’instructions graphiques à exécuter simultanément, ce qui causerait un problème avec l’accélération graphique… Aussi, le framerate (en français: le nombre d’images à la seconde) n’est pas régulier. Parfois il est à 35 images/secondes, puis soudainement il tombe à 10-12 images/secondes, ce qui rend une animation saccadée et désagréable. Pourtant, en cherchant un petit peu sur le web, j’ai trouvé plusieurs exemples où on peut voir plusieurs dizaines, voir des centaines de sprites animés simultanément sur un même canvas en maintenant un framerate supérieur à 40 images/secondes… (source)

Puisque mon épine dans le pied repose principalement sur la programmation, j’ai (re)commencé à consulter les frameworks pour jeux en html5/javascript. J’ai déjà entendu parler d’impact.js, mais il n’est pas optimisé pour l’isométrie et il n’offre pas de version d’évaluation. J’ai trouvé un autre framework qui semblait prometteur, les tests semblaient concluant autant la fluidité des animations sur canvas que pour la prise en compte de l’isométrie. Mais cette fois, le problème a été la prise en main du framework. Je n’y comprends rien… Il existe bel et bien un tutoriel pour apprendre à l’utiliser, mais il n’est malheureusement pas à jour et les exemples fournis.

De toute façon, je suis un peu trop frileux pour me lancer dans l’apprentissage d’un nouveau framework. Contrairement à un programmeur professionnel, j’ai l’impression que je ne peux pas rentabiliser le temps passé à apprendre un nouveau langage ou framework. Puisque je ne fais pas ça de façon régulière, le temps nécessaire pour apprendre est plus long, et une fois que je me sens en maîtrise du langage, il est souvent déjà rendu obsolète. Avant de m’investir, j’aime être certain que je pourrai

Un autre sérieux souci est que je commence à hésiter sur le nom du jeu. Le nom n’est pas bon. «Feetball», ça ne rime à rien… Je croyais pouvoir facilement accaparer le mot clé pour les moteurs de recherches, mais ceux-ci l’interprètent comme une erreur et proposent la correction «football». Pas très pratique pour se faire connaître de façon naturelle… Je croyais avoir fait mes recherches correctement, mais après vérification, j’ai fait une grosse erreur.

Manque de motivation

Le surplus de travail m’a forcé à repousser la rédaction du prochain billet pour quelques semaines, puis les semaines se sont transformées en mois… Par la suite, pendant le peu de temps que j’ai pu réserver à mon projet, tous les problèmes cités plus haut me sont tombés sur le nez simultanément. Ça a miné mon moral. J’ai graduellement manqué d’énergie pour retourner m’investir dans mon projet, puis au fil du temps, j’ai préféré m’occuper autrement. Bref, j’ai perdu ma motivation pour continuer.

Peut-être ai-je été trop ambitieux en essayant de tout faire en même temps: la documentation du projet sur le blogue, la création des graphismes et animations, la programmation de mon propre moteur de jeu, la mise en vente et le marketing?… Et tout ceci seul, bien entendu.

Manque de soutien

Je n’ai que moi à blâmer pour ne pas être allé chercher du soutien sur un forum de jeux vidéo ou un mentorat professionnel. Je connais pourtant assez bien quelques sources intéressantes (HTML 5 Game dev par exemple), mais je les avais délaissées dernièrement pour me consacrer pleinement à ce projet.

Bilan

Pendant ces mois de traversé du désert, j’ai sérieusement flirté avec l’idée d’abandonner ce projet et d’en commencer un tout nouveau tout beau. J’ai même rédigé quelques règles, sketché quelques sketches puis j’ai tenté un premier prototype. Le résultat: mauvais concept, mal formulé, mal imaginé, pas amusant, à revoir de fond en comble.

Tout ça pour dire qu’un game design solide, c’est précieux et il ne faut pas cracher là dessus.

Je souhaite me prouver que je peux faire aboutir ce projet jusqu’au bout. Vaut mieux corriger les problèmes plutôt que de jeter la serviette au premier coup. Après tout, le projet est intéressant, il fonctionne, il est avancé… Ça serait vraiment trop bête de l’abandonner maintenant.

Au fait, j’ai achevé le processus d’itération pour mon jeu, donc je le rédige au propre puis je vous l’offre bientôt.

Posted in problèmes | Tagged , , , , | Leave a comment

L’épidémie s’étend au royaume animal

fourmis zombifiée par un champignon

Fourmi zombifiée par un champignon

Un champignon étrange nommé Ophiocordyceps zombifie des fourmis afin qu’elles se déplacent vers leur site de maturation optimal, site qui leur serait impossible d’atteindre autrement. Lorsque la fourmi se trouve au bon endroit, c’est-à-dire sous une feuille, tête en bas, la fourmi mord la veine principale de la feuille et cesse de bouger. Lentement, le champignon continue son invasion du corps de la fourmi jusqu’à ce qu’il soit enfin prêt à se reproduire. À ce moment, il émerge de sa tête de la façon la plus écoeurante qui soit et forme une sorte de bulbe duquel ses spores seront libérées afin de gonfler les rangs zombies.

Un fait amusant: le photographe Alexander Wild,  photographe macro d’insectes (je vous invite à feuilleter son incroyable portfolio!), fait remarquer que la plupart des photos de ce champignon nous sont montrées à l’envers!

Posted in digression | Tagged , , , | Leave a comment

Le processus itératif

Game design selon Wikipedia:
«Le game design, ou la conception de jeu, est le processus de création et de mise au point des règles relatives à un jeu avant son élaboration.»

Maintenant que vous avez créé un prototype de votre jeu vous permettant d’en faire l’expérience, il est temps de corriger le game design et d’en extraire tout son potentiel. C’est grâce au processus itératif que nous allons y parvenir. Le mot «itératif» peut être terrifiant, mais rassurez-vous: s’engager dans un processus itératif signifie «répéter un processus plusieurs fois». Dans le cadre de la création de notre jeu, ce que nous allons répéter, et bien ça sera tout simplement des sessions de jeux! J’espère que cela vous convient? Oui? Génial.

En fait, nous allons faire mieux que de simplement jouer, nous allons essayer améliorer notre game design.

Voici comment nous allons procéder: d’abord, nous allons modifier un élément du jeu (une règle, une variable), nous allons ensuite y jouer, puis finalement noter comment notre changement a affecté l’expérience de jeu en comparaison des sessions précédentes. Par modification du jeu, j’entends la modification d’une règle de jeu (tour à tour? tours simultanées? realtime? etc.) ou d’une variable de jeu (augmenter vitesse de mouvement, diminuer dégâts d’une arme, changer résistances d’un ennemi, ajout d’un élément aléatoire, etc.).

Voici notre cycle itératif:

  • Élaboration d’une hypothèse;
  • Modification d’une règle du jeu permettant de tester notre hypothèse;
  • Session de jeu;
  • Vérifier si notre hypothèse est validée ou non;
  • Recommencer!
Le schéma itératif

Le schéma itératif

Comment élaborer une hypothèse afin de savoir quel élément doit être modifié
Lors de votre première session de jeu sur votre prototype, que s’est-il passé? Qu’avez-vous ressenti?

Peut-être que pendant un moment, votre jeu était amusant comme vous l’espériez. Puis à un autre moment, le jeu vous a surpris avec un élément qui n’était pas prévu. Était-ce positif? Ou est-ce que le jeu s’en est ressentie?

Si votre jeu a donné exactement ce que vous attendiez du premier coup et que rien n’a cloché ni ne vous a surpris, vous n’avez pas à lire ce qui suit. Vous êtes ou bien d’un niveau trop avancé, ou plus probablement trop obtus et déficient dans le domaine de l’imagination pour continuer. Pour les autres, retenez l’élément qui sort le plus de vos attentes initiales (positivement ou négativement).

Quel en est la cause?
Un manque de diversité?
Trop de prévisibilité?
Trop d’aléatoires?
Trop de complexité?

Imaginez une façon d’y remédier.
Trouvez quelque chose à ajouter à votre jeu. D’autres niveaux? Des bonus temporaires? D’autres obstacles?
Ajoutez un élément aléatoire ou transformez un élément déjà présent de façon à ce qu’il devienne aléatoire.
Transformez un élément aléatoire en une valeur fixe.
Tentez de couper un élément complexe qui apporte peu de valeur au jeu.

Coupez un élément. Ajoutez un élément. Modifiez une variable du jeu pour voir ce que ça entraînera. Modifiez même les éléments qui vous semblent fondateurs du jeu: on obtient parfois d’heureuses surprises. C’est ainsi qu’on identifie quelque chose à modifier et qu’on élaborenotre hypothèse. Parfois, notre session de jeu nous donnera raison. Parfois, elle nous prouvera qu’on avait tort.

Après votre session de jeu, vous serez en mesure de dire si la modification a été positive ou non. Si l’impact a été favorable, tenter d’apportez une nouvelle modification aux règles du jeu qui ira dans le même sens et tester votre nouvelle hypothèse.
Si l’impact a été négatif, vous pouvez tenter à nouveau une modification qui ira dans le même sens (mais différemment), ou vous pouvez simplement éliminer la dernière règle testée et vous lancer sur une nouvelle hypothèse.

Exemples appliqués du processus itératif
Pour mieux illustrer la théorie, voici quelques exemples concrets:

Nous développons un jeu en défilement latéral et faisons l’hypothèse que d’augmenter la vitesse de notre personnage rendra le jeu plus agréable. Notre prototype a été codé rapidement et nous avons un premier niveau de jeu pour nos tests. Nous modifions donc la variable affectant la vitesse des déplacements et nous effectuons notre session de jeu. Après quelques minutes, nous découvrons que le personnage est devenu difficile à contrôler, car il bouge trop rapidement et que nous n’avons plus assez de temps pour réagir afin d’éviter les obstacles. Nous tenterons donc de nouvelles sessions de jeu en diminuant progressivement la vitesse afin de déterminer la valeur optimale.

Autre exemple: nous développons un FPS et émettons l’hypothèse que d’augmenter les dégâts des armes offrira plus de plaisir au joueur, car il se sentira plus puissant.
Nous avons rapidement élaboré un niveau de jeu grâce au Unreal engine, nous nous engageons donc dans une session de jeu. Rapidement, on constate qu’il n’y a plus de challenge, car tous les obstacles sont détruits avant de devenir problématiques.
À partir d’ici, nous souhaitons tester séparément deux hypothèses: soit que notre personnage doive recevoir plus de dégâts pour que le jeu redevienne équilibré, soit que nos ennemis doivent devenir plus rapides pour redevenir un challenge.

Gameplay selon Wikipedia:
«Gameplay est un terme caractérisant des éléments d’une expérience vidéoludique, c’est-à-dire le ressenti du joueur quand il utilise le jeu.»

Je vais vous donner une consigne supplémentaire:
Tentez de couper le maximum de règles et fonctionnalités de votre jeu. Essayez de tout couper, un élément à la fois. Lancez votre session de jeu et notez s’il fonctionne toujours. Vous vous rendrez éventuellement jusqu’au point ou vous ne pourrez plus rien éliminer sans gravement affecter l’expérience de jeu: félicitation, vous avez trouvé le coeur de votre gameplay!

Pourquoi est-ce que je vous demande de couper tout ce qui peut être coupé? Deux raisons: d’abord, ça vous a permis de trouver votre core gameplay. C’est l’élément fondateur de votre jeu, c’est cet élément qui est amusant et c’est autour de lui qu’il vous faut broder désormais. Quand vous ajoutez ou modifiez une règle, demandez-vous si elle contribue à mettre en valeur la jouabilité. Vos efforts mis dans cette direction rapporteront plus que tous les autres. Soyez intransigeant, essayer de tout couper et si ça ne fonctionne pas, réfléchissez à ce que vous pourriez faire pour réussir à couper. Passez la hache dans votre game design. Visez l’épuration, la simplicité. Suivez la méthodologie de design KISS (Keep It Simple, Stupid!). Vous aboutirez éventuellement à un stade ou tout ce qui restera sera essentiel.

L’autre raison pour laquelle je vous demande de couper le maximum d’éléments est que je soupçonne que vous êtes seul dans cette aventure de création de jeu. Sachez que chaque fonctionnalité s’additionnera au temps de production du jeu final. Puisque vous êtes seul, il est primordial de chercher à réduire au maximum ce temps de production. Je suis désolé si vous souhaitiez sortir à vous seul le prochain MMORPG (jeux de rôle massivement multijoueur). C’est un gag fréquent dans les forums de créateurs de jeux vidéo où on voit un nouvel amateur enthousiaste sans compétence désirant apprendre comment créer son propre MMORPG. Ce type de jeux est créé par de grandes équipes de professionnels qui travaillent à temps plein pendant souvent plus d’un an, donc si vous n’êtes pas professionnel et que vous ne pouvez y travailler à plein temps, je vous suggère de réévaluer votre idée de départ, un tel projet est irréaliste.

Une façon de prendre conscience du temps de production est de faire une liste exhaustive des éléments du jeu. Chaque élément de votre game design doit ensuite être décomposé. Vous souhaitez des combats? +1. Il y aura de la magie et des épées? +1 +1. Les magies causeront des animations? +1. Un menu? +1
Évidemment, ce n’est qu’une approximation, car le temps pour implanter chaque élément ne sera pas le même, mais ça aide à se faire une idée.

Il existe des exemples de jeux qui nécessitent très peu de fonctionnalités, tel Angrybird:

  • Lance-pierres;
  • Moteur physique pour les impacts et la gravité;
  • Menus;
  • Interface touch;
  • Quelques effets différents pour les oiseaux et pour certains blocs. (+1 par oiseaux et blocs différents);
  • Les graphismes (+1 pour chaque graphisme, +1 pour chaque animation);

Ajoutez à ceci plusieurs niveaux diffèrent pour profiter du coeur du gameplay et hop!
Vous avez un jeu! Dans le cas d’un MMORPG, je ne tenterai même pas de faire la liste exhaustive des fonctionnalités à implanter!

Quand doit-on sortir du processus itératif?
Nous avons le choix: lorsque tous les éléments importants ont été testés (en ajoutant, enlevant l’élément, en modifiant sa valeur en plus et en moins), nous pouvons enfin affirmer que notre game design est satisfaisant.
Pour ceux qui créent leur jeu à temps pleins en survivant grâce à leurs économies, je vous suggère fortement de cesser les itérations lorsque vous commencez à voir le fond de votre compte en banque. Dépêchez-vous de produire ce jeu pour le mettre en vente!
Finalement, si après plusieurs sessions d’itérations vous tombez à court d’idées sur les éléments à modifier et que, malheureusement, votre design n’est toujours pas au point, je vous propose de prendre une pose. N’hésitez pas à chercher conseil, un regard neuf vous permettra sans doute de débloquer.

Quand on change un élément, il y a un (fort) risque qu’il y ait un impact sur d’autres éléments, même ceux qui ont déjà été perfectionnés. Je crains, chers amis, que vous deviez alors retourner équilibrer tous les éléments impactés! Comment les identifier? Grâce au processus itératif :P

Prenez garde!

Des effets à long terme
Si vous êtes sérieux dans votre démarche, sachez que vous êtes en train de vous inoculez un virus contre lequel il n’existe aucun remède. Quand on se lance la première fois dans la création d’un jeu, on s’imagine à tort qu’on passera la majorité de son temps à jouer et à trouver plein d’idées et de nouveaux projets. Ce n’est pas tout à fait faux, mais ce n’est pas exact non plus. La majorité du temps est passé en production du code et des graphismes, puis en promotion. Le temps passé à jouer est essentiellement utilisé à notre boucle itérative afin de polir le gameplay. Et vous serez submergé par un incessant flux d’idées que vous ne trouverez jamais moyen d’appliquer, faute de temps.

Et puis on cesse de jouer aux autres jeux. Enfin presque: on change notre façon de jouer. On ne réussit plus à jouer pour le plaisir, on se met plutôt à étudier leurs mécanismes de gameplay. Ça devient plus fort que nous. On évalue ce qui fonctionne ou non et on se met à chercher pourquoi. On imagine des hypothèses pour corriger le jeu et mieux exploiter le coeur du gameplay. Tout comme ce que vous venez de faire.

Ce n’est pas une mauvaise chose, nous avons simplement changé notre façon d’observer. Vous verrez directement à travers les artifices des jeux qui n’offre qu’un pauvre gameplay alors que les gameplay innovants vous allumeront en repoussant vos frontières créatrices.

Pour allez plus loin:
Tout ce qu’on a discuté dans ce billet demeure assez théorique. Suivez mon prochain billet pour une application pratique à partir de mon jeu Zombie football!

Posted in apprendre | Tagged , , | 1 Comment

Les zombies et nous – infographie

Check your knowledge of the undead with today's GoFigure infographic.
Source:LiveScience

Posted in digression | Tagged | Leave a comment

L’épreuve de la réalité

Maintenant que vous avez noté tous les éléments pertinents de votre gameplay, je sais que vous brûlez d’envie de vous jeter à corps perdu dans le travail et commencer à programmer tout de suite.

STOP!

Loin de moi l’idée de vous ralentir afin de me nourrir de vos frustrations (quoi que…), mais je crains sérieusement que votre jeu ne soit pas amusant! Ne le prenez surtout pas mal, cette remarque s’applique également à mon propre concept… Mon idée a certainement du potentiel, la vôtre aussi, je vous assure que j’ai confiance. Peut-être avons nous réellement pondu du premier coup un plan parfait, sans failles, impeccables, qui ne prendrait jamais l’eau même si il était plongé au fond d’un océan infesté de requin en plein vendredi 13, mais nous ne pouvons ignorer la possibilité que notre beau diamant soit caché sous d’innombrables couches de charbon ténébreux et salissant! Ne vaudrait-il pas la peine de le nettoyer un tout petit peu si possible?

Tout ce que je dis, c’est que nous ne perdons rien à tester notre concept avant la mise en production. Si nous avons des détails à corriger, ça serait infiniment plus simple de les trouver AVANT d’avoir commencé la programmation. Croyez-moi, PERSONNE ne souhaite devoir retourner dans son code pour identifier tous les petits bouts de scripts correspondant aux modifications de dernière minute d’un gameplay. Non seulement ça se trouve à être une tâche plus pénible que la nécessaire chasse aux bogues, mais en plus, les bogues semblent profiter de ces modifications impromptues pour se multiplier. Faisons d’une pierre deux coups en ajoutant une couche de lustre sur notre design tout en évitant une double (voir triple) ration de bogues.

Comment peut-on détecter les faiblesses de notre jeu? La méthode la plus rapide pour tester votre concept est d’y jouer! Laissons tomber la programmation pour l’instant, nous nous en occuperons plus tard lorsque notre design sera plus solide.

«Mais… comment tester mon jeu vidéo avant qu’il soit programmé??? Je ne peux pas y jouer!»

Le prototype
La définition de prototype, c’est une version incomplète de notre jeu qui doit nous servir à l’explorer afin de révéler si il fonctionne ou pas. Quand on crée un prototype, on souhaite procéder le plus rapidement possible. On ne se souciera donc pas du design et on ne se lancera pas dans la programmation non plus. On préférera utiliser des esquisses papier sommaires et si notre jeu nécessite des calculs, on les simulera à l’aide de dés ou d’une calculatrice.

«Mais… mon jeu ne peut pas être simulé avec du papier!!!…»

Peh… Bien sûr que si! Utilisez votre imagination un tout petit peu, je vous en prie… Allez, je vous donne quelques exemples pour vous aider à démarrer:

Si vous souhaitez un prototype d’un jeu pointer-cliquer (point-and-clic):
Ce style de jeu est généralement constitué d’une succession de scènes statiques avec des zones interactives où l’on trouvera des dialogues ou des casse-têtes. On peut donc simplement esquisser lesdites scènes sur une feuille et noter quelles seront les zones interactives et leurs effets, ainsi que relier les scènes entre elles pour indiquer la navigation. On peut même imaginer qu’un tel jeu pourrait être proposé à un joyeux cobaye volontaire uniquement en lui montrant les scènes esquissées. On pourrait noter comment notre cobaye tente d’interagir avec la scène et ainsi savoir si les casse-tête et la navigation font sens. Tout ça sans avoir écrit une ligne de code.

Exemple d'une scène esquissée avec zones interactives soulignées.

Scène esquissée avec zones interactives soulignées.

Pour un RPG (jeux de rôle ou role playing game)
À moins que vous ayez créé des combats exigeant de lourds calculs, vous devriez être en mesure de tester votre jeu de rôle à l’aide de cartes et de fiches de personnages.
Si votre jeu de rôles nécessite des combats complexes, vous avez tout avantage à les tester sur papier plutôt que de les coder pour ensuite devoir modifier votre script. Simulez des combats, faites les calculs et constatez ce qui se passe après la résolution du conflit. Vous aurez déjà une vision pratique de votre système de combat et vous pourrez déjà commencer à modifier certains éléments pour rendre les combats plus intéressants, plus ou moins complexes. Si vos combats peuvent être remportés en ne cliquant que sur un bouton, vous saurez qu’il y a un problème à résoudre. De même si vous êtes incapables de calculer les dégâts d’une attaque à l’aide de votre calculatrice. Vos joueurs n’auront aucune chance de les deviner non plus, il faudra donc corriger cette faille.
Certains jeux de rôles ne se basent pas sur le combat, mais plutôt sur une histoire riche ou dans la résolution de casse-têtes. Ce type de jeux de rôles peut être testés de la même façon que les pointer-cliquer. N’oubliez pas de porter une attention particulière à l’immersion dans votre aventure.

Pour un jeu à défilement latéral (side scroller)
(Style de jeu à la Mario bros.)
Dans ce style de jeu, presque tout le plaisir réside dans le level design, je vous suggère donc de dessiner les niveaux de jeu sur une feuille quadrillée et de placer les obstacles (ennemis, trappes…). Vous devriez déjà être en mesure d’évaluer si les niveaux sont intéressants à jouer et variés.

Casse-tête — Simulation — Stratégie
Ce style de jeu devrait facilement être transposable sur papier, tout dépendamment des variations que vous avez imaginées. À la limite, même une partie de jeu de type civilisation pourrait être simulée sur papier. Personnellement, je dessinerais la carte mondiale, puis à chaque action, j’ajouterais un dessin pour indiquer la construction d’un bâtiment. Le problème avec certains jeux de stratégie est qu’ils peuvent être très exigeants en calculs: dans de tels cas, vous pourriez programmer uniquement ce qui concerne les calculs en jeu et l’utiliser avec votre feuille de papier. Une autre option: si vous savez utiliser un tableur, vous pourriez l’utiliser pour automatiser les calculs. Vous pouvez utiliser n’importe quels tableurs (Excel, OpenOffice, Google doc) car ils permettent tous de faire des calculs automatiques.

Concernant tous les autres styles de jeux:
Bon… Il y a effectivement certains design qui ne permettent pas d’être testé correctement sur papier, je vous l’accorde. Les jeux d’actions tirent tous leur plaisir des scènes d’interactions vives, et il faut donc passer par la programmation de façon prématurée pour en faire l’expérience. Mais la consigne de ne pas s’occuper des graphismes tient toujours: utiliser des esquisses et des images simples, peu travaillée. Nous reviendrons nous occuper des graphismes plus tard, lorsque le game design sera plus avancé.

Quelques conseils tout de même:
Essayez d’utiliser un outil de programmation qui vous permettra de ne pas perdre de temps sur le code et qui vous permettra de vous concentrer sur le déroulement du gameplay.

Pour un FPS (first person shooter — À la Counterstrike)
Pour ce type de jeu, je vous propose de simuler les décors en utilisant les polygones les plus simples. Ça vous permettra de créer les décors grossièrement. Utilisez des pions à la place des personnages. Promenez-vous dans votre création et vérifiez si les situations créées par les obstacles et les décors sont concordantes. Est-ce qu’il y a des moments ennuyeux? Des scènes trop intenses? Est-ce que votre personnage est trop à découvert? Ou au contraire peut-il trop facilement se cacher et éliminer tout chalenge? Est-ce que la progression du niveau se passe bien?

Course d’autos — Moteur physique
Ce type de jeu est très compliqué à tester sans un ordinateur qui s’occupe d’effectuer les calculs. Faites donc un programme simple avec des graphismes le plus basique possible pour tester votre système sans perdre de temps.

Hell shooter
Jeu à vue en surplomb consistant généralement à tenter de survivre dans un minuscule vaisseau à travers des vagues innombrables de tirs ennemis, d’où le nom «Enfer de boulets». Style de jeu archaïque datant des débuts du phénomène du jeu d’arcade, tombé dans l’oubli dans les années 90 faute d’innovations. L’avenue des jeux flash a remis ce style au goût du jour puisqu’il est un des plus simples à créer.
Ce style de jeu ne peut pas être réalisé en prototype papier puisque tout le plaisir réside dans la vitesse de réaction du joueur. Puisqu’un hell shooter est simple à programmer, je vous propose donc de coder votre prototype sur ordinateur, mais en laissant les graphiques et les menus de côté tant que le gameplay ne sera pas à votre goût.

Alors, avez-vous joué quelques parties sur votre prototype?
Est-ce que votre jeu est à la hauteur de vos espoirs?
Non? Ne vous en faites pas, j’ai une solution à vous proposer:

Le processus itératif
Rendez-vous dans le prochain billet!

Posted in apprendre | Tagged , | Leave a comment

Nos scientifiques ont fabriqué une première cellule zombie!

Une cellule recouverte de silice.

Une cellule zombifiée.

À partir d’une technique consistant à recouvrir une cellule d’une solution de silice, des scientifiques ont trouvé moyen de recréer à la quasi-perfection des cellules de mammifères. D’après la nouvelle, même la spirale de l’ADN cellulaire est préservée lors du processus.

«Notre cellule zombie franchit le pont entre la chimie et la biologie pour créer une nouvelle forme qui, non seulement ressemble parfaitement son ancien état, mais qui en plus peut effectuer un travail» (traduction)

Étrangement, la cellule reste en mesure d’effectuer certaines fonctions après avoir été «zombifié», et serait même supérieure à son ancêtre biologique puisque la copie de silice peut résister à des températures et à des pressions bien supérieures.

Le lien vers la nouvelle pour mieux comprendre (car ce n’est pas un gag):
energy.gov/articles/zombie-replicants-outperform-living

Posted in digression | Tagged , , | Leave a comment

Commencer l’aventure

Vous avez décidé de vous lancer et de créer votre propre jeu vidéo? FÉLICITATIONS!

À cette étape, vous avez plein d’idées et un concept révolutionnaire qui n’a jamais été vu ailleurs. Vous êtes confiant en votre projet et êtes certain qu’il aura un formidable impact. Bien!

Quelle est votre idée? Pouvez-vous élaborer votre concept en détail? L’axe principal du jeu, les actions des joueurs, les règles du jeu, le contenu… Avez-vous tout mis par écrit? Vous faites preuve d’une sagesse impressionnante, cher ami. J’aime. Êtes-vous amateur? Je parie que vous avez imaginé quelque chose qui ressemble au jeu le plus immersif que vous avez eu le plaisir de jouer et dont vous avez modifié le scénario, les personnages, les décors et les armes. Me trompé-je? Ou peut-être êtes-vous un concepteur de jeux vidéo plus expérimenté? Dans ce cas, vous avez certainement trouvé une idée de génie qui n’a jamais été tentée par personne et qui rendra tous vos confrères morts de jalousie. Gardez cette gemme au chaud près de votre coeur, je vous souhaite qu’elle éclose dans toute sa splendeur.

Lors de la création de votre jeu, nous somme rendu à l’étape la plus facile, la plus énergisante. Sachez que votre motivation semblera en lien à la vitesse de progression de votre jeu: plus il avancera vite, plus vous serez habité par le lion; alors que plus le jeu semblera stagner longtemps, plus le cafard s’installera. C’est MAINTENANT que le lion rugit le plus fort en vous. Si en votre tréfonds vous n’entendez qu’un petit miaulement, je vous ordonne de retourner à votre table à dessin à l’instant! Le cafard s’installera, c’est certain, ça fait partie de la quête. Il faut apprendre à le combattre, se préparer à l’affronter. Mener un jeu à terme n’est pas qu’un simple passe-temps, c’est un accomplissement majeur, un accouchement douloureux et gratifiant. Vous savez ce qu’on dit: «à vaincre sans périls, on triomphe sans gloire». Honorez le cafard à la hauteur de son mérite, car sans lui, la création de jeu ne serait pas l’aventure qu’elle est.

PRÉPAREZ-VOUS:
Écrivez grossièrement votre idée. Ce n’est pas encore nécessaire d’aller dans les détails, mais les idées principales de votre jeu doivent se trouver ici. C’est le guide, le tronc, le support nécessaire pour tout ce qui suivra. À vos crayons!

(Permettez-moi de répondre au questionnaire moi-même… Si vous avez un projet, n’hésitez pas à reprendre ce formulaire!)

  • Définissez votre jeu en une ou deux phrases.

Zombie feetball est un jeu de football stratégiques au tour par tour sur un plateau isométrique. Les joueurs (des zombies) peuvent s’arracher des membres et se les projeter pour combattre leurs adversaires.

  • Définissez le but du jeu:

Le but du jeu est remporté des matchs en comptant plus de points que l’adversaire. On compte un point lorsqu’un zombie de notre équipe en maîtrise du ballon se rend dans la zone de but adverse.

  • Questionnez-vous pour trouver en quoi votre idée est différente des jeux actuels.

Il existe déjà des jeux de sports au tour par tour, j’ai donc l’intention d’ajouter de petites modifications pour rendre ce jeu novateur. D’abord, les zombies peuvent s’autoarracher des membres pour les utiliser autrement.
Par exemple, on pourrait s’arracher une jambe et se la greffer comme un troisième bras afin d’échanger de la mobilité contre plus de chance d’attraper le ballon. C’est une forme de spécialisation qui s’effectue en cours de jeu et qui permet de varier grandement l’aspect stratégique de match en match. Un membre arraché pourra aussi être utilisé comme projectile pour blesser un adversaire à distance.
Un autre aspect novateur du jeu sera qu’un seul personnage sera joué par tour. Presque tous les jeux en tour à tour permettent de déplacer tous les personnages d’un joueur avant de permettre aux adversaires de réagir, ce ne sera pas le cas pour mon jeu.

  • Quel est le coeur de votre concept de jeu?

L’aspect stratégique au tour par tour ainsi que les choix à faire entre la spécialisation des zombies versus le lancement de projectiles offensif.

  • Qu’est-ce qui ferra que votre jeu sera amusant? Quels éléments sont nécessaires au succès du jeu?

La richesse du jeu stratégique devrait être amusante. Pouvoir démolir ses propres troupes pour gagner devrait amuser les joueurs.

  • Qui sont les acteurs?

Des zombies footballeurs!

  • Élaborer quelques règles de bases essentielles à votre jeu:

Voir plus haut!

  • Quels sont les obstacles à surmonter?

Le premier obstacle est bien évidemment l’équipe adverse, mais la gestion de son équipe est aussi un challenge. Il faut savoir à quel moment spécialiser nos zombies pour tirer avantage du jeu, sinon on risquera de perdre.

  • Est-ce que le joueur a accès à des ressources? Des bonus?

Les membres de chaque zombie sont une ressource.
Peut-être pourrais-je ajouter un système de bonus utilisable une fois par partie afin de faire varier encore plus les matchs?

  • Imaginez les décors, faites quelques esquisses grossières comme référence.

Fait! Je partagerai tout ça dans un futur billet.

  • Quelles sont les actions que pourra prendre le joueur?

Pour le ballon, lancer et attraper.
Pour les zombies, s’arracher des membres pour les lancer ou pour se spécialiser.
Bouger.
Frapper des adversaires.
Compter des points.

  • À qui s’adresser ce jeu? (Un jeune ado tiraillé par ses hormones? De jeunes enfants rêveurs? Grand-maman? Du monde pressé qui souhaite de courtes sessions de jeux? Des joueurs expérimentés et exigeants?)

À cause de l’aspect compétitif et de l’humour, disons… graphique de zombies qui s’arrachent des membres et tombent en morceaux, je crois que seuls les garçons seront intéressés par ce jeu. Probablement plus de jeunes que de vieux, à voir.

(Si d’autres questions pertinentes à se poser vous viennent en tête, n’hésitez pas à partager dans les commentaires!)

BONUS:
Voici un petit document très sympathique pour vous aider à faire vos devoirs. Il peut également servir d’aide mémoire!

PROCHAINE ÉTAPE:
L’épreuve de la réalité.
À suivre…

Posted in apprendre | Tagged , | 1 Comment