2010/11/09

Flash dinosaurs: 1998 flash 3 games!!

This post was inspired by a recent video (in french) about flash past and future.
In 1998 I've done 2 games for a french web agency (FKGB) for distribution on a web portal (Chello): GunMan series! The distribution rights were 5-years exclusive so it's ok now .
It was my beginnings in professional Flash game development and the technology was Flash 3. The only programming instructions were mc.gotoAndStop(num). Thus, my creative approach was to think about animation, movieclip hierarchies, and "state clips" (a trick I used for representing variables in a multi-children clip). I did the graphic design too.
Here is the most funny:



click the yellow button to launch the ball,
click or roll over on the flippers to activate them


There was also this one (CAUTION: violent!! Not for all ages! ) and this intro (waaay too long ).
I must confess there is some "chman" flavor.

2010/10/07

Les 3 composantes d'un jeu vidéo

Autant l'avouer: tiraillé par le remors d'avoir laissé dormir ce blog pendant plusieurs mois, j'étais parti dans l'idée de faire un article à propos de l'excellent livre sur Gunpei Yokoi et ses techniques de pensée latérale (ce qui était, au fond, l'objectif secret de l'article, héhé, avec l'intention de bifurquer sur ce non moins excellent livre de Edward De Bono: "Lateral Thinking").
MAIS je me suis embarqué sur le thème de la créativité, puis dans des définitions alambiquées sur les composantes d'un jeu vidéo, enfin bref ... mon article ne ressemblait plus à rien
Par contre, le coté positif de la chose c'est que ça m'a permis de clarifier des concepts que j'utilise pourtant depuis des années mais sans (trop) en avoir conscience...
Alors voilà, j'ai remanié un peu tout ça, et pour commencer je vais parler des 3 composantes d'un jeu vidéo, pour revenir ensuite à la "créativité", mais dans un prochain article...
(note perso: apprendre à écrire une intro correcte).

Un monde de briques:
Une des tensions majeures qui existent au sein du JV (pas seulement là, d'ailleurs) est le tiraillement entre la conservation et l'innovation. On pourrait appeler ça une dialectique.
Dans le jeu vidéo, un exemple extrême de conservation est le "remake", simple portage à l'identique d'un jeu existant, en général en vue d'un support différent. A l'autre bout du curseur, un exemple extrême d'innovation est le jeu sans précédent qui crée un genre (voir + bas) à lui tout seul et qui de surcroît introduit un nouveau mode de pratique (contexte: par ex. nouveau hardware ou système physique).

Toutefois, il est rarissime qu'un jeu innove sur tous les points: chaque jeu pioche chez ses prédécesseurs des "briques élémentaires" ayant fait ses preuves, ce qui facilite le travail du producteur/développeur, mais aussi celui du consommateur qui perçoit essentiellement par comparaison (*) avec des produits existants et n'a ainsi pas besoin de tout ré-apprendre à chaque jeu.[*: Tiens paf hop en passant, sur la perception par comparaison on peut se référer à Dan Ariely "Predicably irrational"].

De manière abrupte (et tout à fait parachutée ), je classe ces "briques" en 3 types:
Ces 3 catégories ne sont pas du tout indépendantes les unes des autres car – du moins au départ - le Contexte est la base et influe sur le gameplay (contrôles: clavier, pad, souris, mises à jour par le net, etc..) et sur l'Artwork (qualité d'image et son). De même, dans un jeu vidéo l'Artwork est généralement là pour représenter des élements de gameplay.
On pourrait alors les représenter sous forme d'une pyramide:
Exemple: un aperçu des briques (pas toutes) d'un certain webgame (Kiwitiki?)

La "pyramide" représentée en 2D en exemple, n'est pas du tout fidèle à la réalité car en pratique:
  • une brique pourrait reposer sur plus que seulement deux briques,
  • une brique peut servir de support à plus que seulement deux briques,
  • la base n'est pas forcément plus large que le sommet,
  • ...
Bref, ce qui faut retenir de cette métaphore c'est que les briques ont besoin d'autres briques sur lesquelles s'appuyer, ça ne va pas plus loin! D'ailleurs dans la figure ci-dessus, je n'ai pas fait très attention à "quelle brique repose sur quelle brique", car la représentation 2D rend l'exercice très compliqué ...
Note: j'ai fait cette figure un peu au pifomètre, mais en la regardant je trouve qu'elle pourrait bien coller au jeu Kiwitiki de mon ami magicfred (erratum: pour la gestion des high scores, il n'a pas utilisé mochiads comme indiqué, mais une l'API du diffuseur: on voit qu'une brique peut être substituée par une autre pourvue qu'elle remplisse les mêmes fonctions!).

D'autres exemples (juste pour faire joli... et pour montrer qu'un jeu ne ressemble pas nécessairement à une pyramide maya!):
A = jeu basique reposant ne nécessitant qu'un écran et un bouton
B = jeu plus complexe
En résumé:
  • Artwork (sommet): interface mentale avec le joueur
  • Gameplay (milieu): gestion de l'interactivité
  • Contexte (base): interface physique avec le joueur
Mais voyons tout ça plus en détail...

Le Contexte
Le Contexte c'est vraiment très large, ça ne fait pas réellement partie du jeu proprement dit, c'est plutôt le conteneur dans lequel se diffuse le jeu, et qui permet le contact physique avec le joueur. C'est "la vie du jeu dans le monde réel".
Le Contexte commence avec un support physique, lui même en rapport avec le corps physique du joueur.
Le rapport au corps physique peut être souligné par le fait qu'on peut presque deviner sur quel support joue quelqu'un en observant sa "silhouette physique":
  • assis sur une chaise, avec une main sur une table, le regard droit: ordinateur,
  • assis dans un canapé ou par terre en tailleur, les 2 mains tenant un objet, le regard droit: console de salon classique,
  • les 2 mains tenant un objet, les pouces agités, le regard vers les mains: console portable
  • debout, un bras agitant un objet: Wii,
  • debout ou assis, avec un doigt pointant dans l'autre main: téléphone tactile,
  • debout ou assis tenant visiblement un stylet: DS
  • exhibant un "jeu de jambe" digne des boy's bands: DDR
  • en train de sauter pour attraper un "ballon": Kinect (ou football réel )
  • etc..
Bref on aura compris, le jeu vidéo, c'est physique!! Ce qui n'est pas sans effet sur le rapport au monde social (rester "digne", avoir l'air "ridicule", etc..). L'excellent livre évoqué en intro fait souvent référence à cet aspect "social" (qu'on retrouvera un peu + bas), comme par exemple lorsque Gunpei Yokoi explique que les "Games&Watch" devaient être "de petite taille" pour que les salary-men puissent les tenir cachés dans leurs mains et jouer discrètement dans le métro!! Pour d'autres exemples on pourra consulter les publications Pix'nLove, (Histoire de Nintendo, par ex) qui ne loupent jamais une anecdote croustillante à ce sujet, tant ils sont "fétichistes" du jeu vidéo en tant qu'Objet (physique).

Le Contexte commence donc avec le hardware qui est de nature technologique, mais il n'est jamais de technologie qui oublie la diffusion (marchande ou non) de contenus. Cela peut donc inclure l'acte d'achat puisque c'est le premier point de contact entre le jeu et le joueur, en général sur un marché donné (y compris dans le cas du gratuit: freewares, sites de jeux flash,..). Ainsi, comme par "capillarité", le support induit quasiment toujours un mode de diffusion du jeu (achat en magasin, en salle d'arcade, téléchargement internet, jeu en ligne, etc..).
On pourrait penser que tout cela n'a rien à voir avec le jeu lui-même, mais pourtant le jeu doit forcément tenir compte du contexte très en amont, ne serait-ce a minima que pour les contrôles (manette, souris, boutons, écran tactile, etc..). L'aspect économique a également une incidence: ainsi les jeux d'arcade étaient d'une difficulté élevée afin d'inciter le joueur à insérer des pièces, et autre exemple, le contenu de jeu vendus moins de 5€ en téléchargement est sensiblement moins volumineux (en terme de durée de vie) que de "gros" jeux (à la Zelda par exemple).
Le contexte qui permet la plus grande variété de modèles économiques est probablement le jeu dans un navigateur internet: jeu gratuit, abonnement, micro-transactions, try-before-you-buy, etc...
Lorsque le jeu est diffusé, il y a souvent une réaction du public qui va s'exprimer différemment selon le contexte choisi. La vie du jeu après l'achat car le public peut continuer à faire vivre le jeu via des contributions (user-generated content), ou par des échanges entre joueurs (coté communautaire: multi-joueur, forums, réseaux sociaux, etc..). Une des dernières formes en date est le jeu Facebook (Farmville, etc..), qui peut exploiter de façon plus ou moins pertinente (ou agaçante ) le coté "social". [EDIT 20 mars 2011: On trouvera ici une réflexion intéressante sur les plate-formes de developpement de jeux et les relations de "pouvoir" entre les détenteurs de la plate-forme et les développeurs]

En résumé, la dimension "Contexte" est une sorte de "fourre-tout" (mais fourre-tout très important!) dans lequel je mets le support technologique, le marché ou le jeu va exister (la vie du jeu "en sortie d'usine" et direction les magasins!) et va être comparé à d'autres "produits", mais aussi la vie du jeu avec le ou les joueurs.

Exemples de briques "Contexte": device, gamepad, souris, clavier, écran couleur, boutons L+R, connection internet, plugin Flash, carte graphique 3D, borne d'arcade, internet "temps-réel" (socket), internet différé (PHP), paiement en liquide, paiement par CB, numéro surtaxé, abonnement, forum, hotline, support technique, "try before you buy", site web, portail de jeux gratuits, etc..

Le Gameplay:
Le gameplay définit l'interactivité avec le (ou les) joueur(s). Une des difficultés pour la décrire (définir) est l'absence de langage "standard". Malgré la forme "algorithmique" que cette définition finira par adopter, il est rare qu'on ait directement recours à des descriptions informatiques de type "pseudo-code" ou autre langage informatique.
En général, il est possible de définir un jeu en décrivant ses règles (textes + shémas), et en y adjoignant des exemples de situations typiques ou exceptionnelles ("use cases" en conception orientée objet), qui d'une part permettent de mieux comprendre en quoi consiste le jeu, et d'autre part seront d'un grand secours au programmeur qui doit implémenter les différentes fonctionnalités. L'utilisation de prototypes "rapides" ou sous forme matérielle (papier, carton) permet également de se faire une idée de ce que sera le jeu, et de le soumettre à certains tests de jouabilité/fun/intérêt/etc..
Il est possible que dés la définition du gameplay intervienne déjà un "thème" (voir + bas, "Artwork") qui aide à se représenter le jeu, mais ce n'est ni obligatoire, ni forcément souhaitable.
Dans un gameplay on distingue les "core mechanics" c'est à dire les mécanismes intimes du jeu (ou la "règle du jeu"), de l'adaptation particulière qui peut en être faite à travers le choix de situations (le "level design"): par exemple les forces en présence, leur positionnement initial, la définition des antagonistes, des adjuvants (aides), etc.. L'invention de core mechanics et le level design sont 2 compétences qui peuvent être disjointes mais qui toutes deux relèvent de la dimension "gameplay". Sauf exceptions, les game designers ont tendance à privilégier les mécaniques qui permettent de multiples "level designs" possibles (sans pour autant les exploiter tous, mais à garder sous le coude pour développer des suites/sequels).
Les mécaniques similaires sont regroupées en "genres" tels que "platformer", "stratégie temps-réel"," shoot them up", etc... classifications largement popularisées par la presse vidéoludique, mais qui ne devrait pas freiner vos ambitions créatrices! .
Un cas assez fréquent est celui où le game designer reprend une mécanique déjà éprouvée mais en y ajoutant un "twist" c'est-à-dire une légère variante, mais qui aura alors un impact phénoménal sur tout le "level design" qui peut être imaginé à partir de là, ainsi que sur l'expérience du joueur bien sûr.
Jesper Juul a étudié la généalogie qui peut se déployer à partir d'une mécanique de base (les "matching games"): dans son arborescence, on voit que chaque jeu ajoute ou remplace une brique à ses prédécesseurs.
Le gameplay est -au minimum- interfacé avec le Contexte (ne serait-ce que pour recevoir les instructions du joueur) et l'artwork (pour communiquer des informations au joueur). Il peut également être très étroitement couplé (et donc dépendant) de l'un des deux: le cas le plus fréquent est celui du hardware (Contexte) lorsque par exemple le principe de jeu repose en grande partie sur le contrôleur (ex: wiimote, pad analogique, iPhone, etc..).
Le level design, quand à lui, est un art à part entière dont le maître mot me semble être "progressivité", ou de façon un peu synonyme, l'accessibilité (cf. un article Gamasutra sur ce sujet, et ici aussi sous une forme plus élargie au delà du gameplay). Une problématique connexe du level designer est de proposer une expérience qui permette au joueur débutant de s'amuser sans être dégouté par une difficulté insurmontable, mais qui -dans le même temps- propose au joueur "averti" (généralement expérimenté dans le genre considéré) une expérience intéressante et dénuée d'ennui. Des techniques pour cela:
  • une mesure de son taux de réussite, qu'il peut ainsi s'amuser à optimiser (score!),
  • proposer des objectifs annexes et optionnels,
  • proposer plusieurs niveaux de difficulté
  • etc..
Sur le game design proprement dit, il existe pas mal de ressources (comme par exemple l'excellent livre de Jesse Schell, maintenant traduit en français). Par contre malheureusement, le level design est loin d'avoir bénéficié d'une telle analyse. Ce thread donne cependant quelques pistes.

Exemples de briques "gameplay": règle, score, chronomètre, ressource, vies, niveau, action, évenement, map, power-up, bonus, passage secret, antagoniste, obstacle, game over, etc..

L'Artwork
L'artwork inclut le graphisme, l'animation, le son (musique, effets sonores), la dimension littéraire ou narrative,etc.. Non pas au sens de la perception (puisque c'est déjà inclus dans "Contexte" cité plus haut, via le hardware), mais en tant que représentation mentale pour le joueur. C'est la dimension artistique dans son aspect "non-interactif". L'artwork est la représentation sensorielle du jeu et la "porte mentale" par laquelle le joueur est invité à entrer. Le thème scénaristique, ou "univers", peut être très puissant, car il établit une connection émotionnelle avec le joueur.
Parfois cette dimension est volontairement laissée "neutre", afin justement de pouvoir toucher tous les publics. Certains joueurs vont ainsi fuir comme la peste les thèmes militaires (1ère ou 2de guerre mondiale, etc..) tandis que d'autres vont éviter les thèmes "mignons" jugés trop enfantins (type Loco Roco ou Animal Crossing). En général, pour un gameplay donné il existe une infinité de traitements possibles, mais il arrive un moment (parfois dès les prémisses créatrices du jeu) où il faut en choisir un. Dés lors l'objectif du thème est de "se faire oublier" dans le sens où le thème colle si parfaitement au gameplay qu'on ne sait plus si le thème est né du gameplay ou si c'est l'inverse. En effet le choix d'un thème génère de nouvelles idées de gameplays (objets, antagonistes, etc..) qu'il serait dommage d'ignorer.
Les thèmes les plus courants (et ipso facto, les plus immédiatement reconnaissables) sont:
  • Fantasy (Tolkien, fées, magie),
  • Horreur/Peur (Zombis, Cthulhu, esprits…),
  • Science Fiction (robots, espace,..),
  • Animaux (Jungle, Ferme, Pets, Dinosaures, etc..),
  • Histoire (Moyen Age, Pirates, Napoléon, Rome, etc..),
  • Mythes ( Dieux, contes, Atlantide..),
  • Modernité/Actualité (Urbain, Militaires, Vie sociale, Politique, Science & Techniques, etc..),
  • Objets/Abstrait (Diamants, figures géométriques, symboles,...)
  • etc..
Certains jeux proposent un thème nouveau et intriguant qui ne "rentre pas dans une case" (c'est le cas de la plupart des jeux datant des débuts de l'histoire des jeux vidéos car à l'époque ces "cases" n'étaient pas encore établies, ou -plus récemment- « Pokemon » par exemple). Les modalités du choix d'un thème (dont, entre autres, son "timing" au sein de la conception d'un jeu) mériteraient un article à part entière.
Le rapport à l'imaginaire du jeu peut parfois ainsi passer au premier plan, et déboucher sur la création d'authentiques "univers" originaux (un peu "à la Tolkien", c-à-d avec une cosmogonie propre, une mythologie, un langage, etc...), déclinés ensuite sur plusieurs supports (ex: Dofus).

Exemples de briques "artwork": scénario, héros, mascotte, événement déclencheur, épisode, univers, mythe, bruitage, musique, histoire, cinématique (intro/milieu/fin), textes/dialogues, sprite animé, décor, effets visuels, style graphique (3D, papier, pixel, vectoriel,etc..), personnages, motivations,..

Commentaires sur ces 3 composantes:
Il y aurait beaucoup à dire sur ces 3 composantes mais ... il faut bien s'arrêter ... Et si vous souhaitez compléter ou faire part de vos doutes ou critiques, n'hésitez pas à laisser un commentaire!

Sociologiquement, ou en terme de "cultures de pensée" (et au risque de tomber dans des étiquettes dignes d'un "système de castes" ), "contexte" correspond à la sphère technologique et marchande (car c'est la plus proche du consommateur final et représente le coût d'accés pour toucher le public, le chouchouter, et rester en contact avec lui), "gameplay" à la sphère conception/invention (officialisée par des titres: ingénieur, designer, etc.. ou construite par une expérience personnelle), et "artwork" à la sphère culturelle/medias. Ce "constat" est à prendre comme une description très floue de la réalité, et pourrait évoluer dans les décennies à venir. Par exemple il arrive souvent qu'un programmeur soit autant du coté de la technologie (Contexte) que de la conception (Gameplay). Il en est de même pour les graphistes/animateurs, lorsqu'ils participent créativement à la conception d'un jeu par exemple.

Les 3 dimensions d'un jeu fusionnent ensemble dans "l'expérience du joueur" pour donner lieu à quelque chose d'unique, alchimie qui rend rend le jeu vidéo complexe à analyser objectivement ou théoriquement.
On constate aussi que les 2 extrémités de la pyramide sont en interaction avec le joueur: l'une avec son corps physique (Contexte: support), l'autre avec son esprit (Artwork). Le gameplay est bien sûr lui aussi en interaction avec le joueur (et peut avoir une représentation autonome dans l'esprit du joueur), mais par le truchement des deux autres.

Conclusion (temporaire):
Ce "découpage" permet de décrire le jeu vidéo de façon peut-être sommaire (seulement 3 catégories), mais au moins globale (pour ne prendre qu'un exemple: chez J.Schell, gameplay et artwork sont extrêmement bien détaillés, mais l'importance du Contexte, bien qu'il soit évoqué à la fin du livre via le support technologique, me semble un peu négligée). A ma connaissance, celui qui est allé le plus loin dans l'énumération systématique de briques (de gameplay) est David Perry, dont je n'ai pas encore lu le livre à ce sujet.

Ce découpage m'a souvent aidé, par exemple, à me poser des questions "pratiques":
  • au fond, qu'est-ce-qui me plait dans le JV: contextes (essayer de nouveaux matériels ou modes de pratiques du jeu) ? gameplay (apprendre de nouveaux principes de jeu, comparer les différentes variantes d'un même genre,..) ? Artwork (vivre une aventure épique, être séduit par l'humour ou l'histoire?...)
  • Dans mon métier du JV, dans quelles dimensions suis-je réellement en mesure d'intervenir, dans lesquelles ai-je envie d'intervenir davantage?
  • Dans quels domaines ai-je envie d'innover? Dans quels domaines suis-je plutôt "conservateur"?
  • Est-ce que je fais un minimum de "veille" (surf sur le net, news, etc..) dans les domaines qui m'intéressent ou me concernent moins personnellement?
...ou des question plus "théoriques":
  • Peut-on réellement comprendre tout ce qui se passe dans le JV en fonction de ces 3 composantes?
  • cette subdivision ne s'applique-t-elle pas à tout jeu (vidéo ou non)?

2010/09/14

HTML IMG resizer

Recently I wanted to vizualize huge (2000+) amounts of pictures from my Microbes databases and it was surprisingly convenient to use Adobe Bridge to index and browse them. Now, I mainly use Bridge to select images by Tags corresponding to the parts of the "microbial-world" documents I'm working on.

However, when I drag & dropped these picts in a HTML page (using Dreamweaver), they kept their original size, which is large enough to get a decent definition, but not very convenient to vizualize in a browser.
Thus a programmed a little tool for scaling all images, either by a fixed ratio, or to achieve a fixed height:

The result is show in the image below (each image is resized to match a height of 100 pixels):

Sorry for posting such anecdotical stuff, as I'm really focusing on the Microbe project until end 2010.
Hopefully I will be able to show more interesting stuff then.

Download source (as2).

2010/02/26

Fix to Linkedin problem?

Alleluia !!
I finally found a fix to this very annoying problem with Linkedin (that Linkedin never solved by themselves ): Linkedin becomes so slow that pages never load (it seems that hundreds of people have this problem: link 1, link 2, etc..)
Linkedin must hide a tremendous amount of "technical expertise" for being the only website causing "internet protocol side effects" or whatever... Please note that this problem started in 2008.

The solution that worked for me is setting the MTU value to 1360 as described here.(dated 2010 feb.08) How to change the MTU value on window is explained here (I'm on WinXP).

But I'll keep an eye on it, because in the past many "solutions" seemed ok but lapsed only few hours.
Thank you, linkedin ....

2010/02/11

Goswf version 0.94

GOSWF now allow to pass directly SGF data in replacement of the sgf URL.

Example of HTML code:
<EMBED
src="http://YOUR_SITE/goswf.swf"
flashvars="url=(;GM[1]AW[bb][cb][cc][cd][de][df][cg][ch][dh][ai][bi][ci]AB[ba][ab][ac][bc][bd][be][cf][bg][bh](;B[af];W[ah](;B[ce];W[ag] C[only one eye this way])(;B[ag];W[ce]))(;B[ah];W[af](;B[ae];W[bf];B[ag];W[bf](;B[af];W[ce]C[oops! you can't take this stone])(;B[ce];W[af];B[bg] C[RIGHT black plays under the stones and lives]))(;B[bf];W[ae]))(;B[ae];W[ag]))"
height="600" width="440"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" ></EMBED>

The result is show here:


(note: this is a problem, then possible moves in variation are not shown. Right-click + "show variations" to see variations)
Check goswf homepage for more info.

[EDIT 2010/02/12]: it seems that it doesn't work on IE if the file goswf.swf is located on a google site. Therefore it seems better to host this file on your own site. It's strange, because Koji's method of Koji uses a google site and it works fine on IE. I need to investigate this further.

2010/01/25

Happy New Year / Bonne année


This (gentle) microbe has been observed recently.
Ce (gentil) microbe a été observé récemment.