mercredi 10 septembre 2014

Incroyable : le top 10 des types de gamers !!

Derrière ce titre outrageusement racoleur, je voulais affirmer ce qui me semble une criante vérité : 
le jeu vidéo permettant une grande liberté de réalisations et de pratiques, il y a à peu près autant de façons de jouer que de joueurs, et la catégorisation, même excessive, peine à rendre compte de cette diversité.

Aussi après m'être demandé (sans donner de réponse à la question) qui sont les gens qui définissent leur identité à travers les jeux vidéos, je voulais simplement rappeler que nous sommes différents, nous pouvons ne pas être d'accord, et ce n'est pas grave.

Plusieurs interventions que j'ai lues récemment m'ont fait prendre conscience que pour une partie des joueurs, des sujets qui pourraient sembler insignifiants revêtent en fait une grande importance. Et nombre de personnes (qui peuvent par ailleurs être tout à fait censées) semblent ne pas se rendre compte qu'un avis différent du leur puisse exister à propos de leur passion.

Je prends pour exemple cette réponse postée par un internaute sur le site merlanfrit :
Quand même, sur Gamespot, la(ou le ???) critique a donné 9/10 à Gone Home et à GTAV, ça c’est lunatique. Un jeu comme GTAV, un des jeux les plus ambicieux, un jeux que plusieurs achète et ne jouent à rien d’autre pendant des années ! Comparable à un jeu ultra niche qui peut être complété en 2 minutes et n’a aucune rejouabilité ? Gone Home est un 7/10 MAXIMUM, il est trop court et sans mechanique de jeux, l’histoire ne peut pas combler le tout surtout que l’histoire n’a rien de special [...].
(La fin de la citation est tronquée car elle comporte un spoiler sur le jeu, que je veux vous épargner).

Cela me semble incroyable que le simple fait qu'une critique ne représente pas l'avis d'une personne soit suffisant pour provoquer une telle réaction. Car il me semble qu'il n'y ait rien d'étonnant au fait que deux jeux qui n'ont à peu près rien en commun puissent être jugés sur des critères complètement différents. De même qu'il me semble très probable que deux personnes ayant des goûts et des attentes différentes puissent ne pas se retrouver dans les mêmes jeux.

J'irai même plus loin en affirmant que ce qui n'est pas "normal", c'est que les critiques soient si souvent unanimes. Car en dehors de rares cas "polémiques", les principales rédactions me semblaient (du moins jusqu'à il y a peu), s'accorder à peu près d'une même voix sur la qualité de tel ou tel jeu.

Si l'on compare au cinéma par exemple, il me semble acquis que les critiques ont des sensibilités différentes et ne plébiscitent pas les mêmes films (un rapide tour sur allocine devrait suffire à vous convaincre, et il appartient d'ailleurs à chaque spectateur de se faire sa propre opinion quant à savoir s'il préfère aller voir un film apprécié par La Croix ou par Mickey Magazine).

Par ailleurs, j'ai du mal à voir en quoi le fait qu'une personne (dont l'avis n'engage qu'elle-même) ait apprécié quelque chose que l'on n'apprécie pas, est révoltant. Personne n'est obligé d'acheter un jeu si ce dernier ne lui plait pas [1]. La seule chose qui pourrait être condamnable, serait une critique malhonnête, cherchant à tromper le lecteur sur le contenu d'un jeu. Mais à ma connaissance, de telles critiques sont heureusement rarissimes.

Dans un autre genre, une personnalité de la scène internet jeu vidéo a posté ce commentaire à propos du Cyprien Gaming Show :
Faut quand même avouer que réussir a faire payer des gens une fortune pour assister à un show publicitaire est assez génial #lecancerduJV
Non pas que je veuille défendre à tout prix un événement qui ne m'intéressait absolument pas [2], mais cela méritait-il vraiment l’appellation "cancer du jeu vidéo" ? Est-il si inconcevable que des gens qui jouent, qui aiment jouer, puisse trouver intéressant d'aller voir un tel spectacle ? Après tout, si cela leur plait...

Je ne cite qu'un exemple récent qui m'avait marqué, mais ce genre de remarques est assez courant dès qu'il est question d'une façon "non traditionnelle" de jouer aux jeux vidéo. Qu'il s'agisse de casual gaming, de jeu dont le but premier n'est pas le divertissement, d'expérimentations vidéoludiques, etc.

Est-il si choquant que le jeu vidéo et ses pratiques ne soient pas monolithiques ?
Faut-il nécessairement affirmer sans cesse que seule la façon dont on apprécie les jeux est la bonne ?

Pour moi la réponse est clairement non, et il me semble que les différentes façons de jouer, d'apprécier les jeux, de se revendiquer "gamer", ne sont pas en opposition, et pourraient très bien coexister au prix d'un tout petit peu plus de tolérance.

Mais je vous entends déjà vous demander : "On ne peut plus rien critiquer alors ?!"

Eh bien si ! J'irai même jusqu'à  dire que la critique, si elle est constructive, est un élément important pour faire progresser toutes les communauté de jeux vidéos [3]. Car il ne s'agit pas de remplacer une pensée dominante par une autre. Mais cela suppose que cette critique soit argumentée et ne cherche pas uniquement à détruire un autre modèle que celui que l'on supporte, à cause de sa seule altérité.

Une règle qui me semble raisonnable pour déterminer la recevabilité d'une critique est la suivante :
- on peut émettre un avis personnel sur quelque chose que l'on n'aime pas, mais que personne ne nous oblige à faire.
Ex : Je n'aime pas Gone Home, parce qu'il n'est rien en dehors de sa dimension narrative. Si vous n'aimez pas qu'on vous raconte une histoire, ni les jeux sans défi, passez votre chemin.
- on peut critiquer une pratique qui impose quelque chose à tous.
Ex : Les DRM sont le cancer du jeu vidéo ! Qui a un jour eu l'idée géniale de limiter l'accès à un jeu alors que celui-ci a été acheté légalement par l'utilisateur ?!

Mais rien, ne nous autorise à juger en terme de valeur, les pratiques des autres joueurs qui, il ne faut pas l'oublier, partagent leur passion avec nous.

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

[1] Pour ma part, je n'ai pas joué à GTA V, malgré les critiques élogieuse, car ce n'est simplement pas un type de jeu qui me plait. (Et puisqu'on en est aux confessions, notez que je n'ai pas acheté Gone Home non plus d'ailleurs).

[2] Et qui d'ailleurs n'est clairement pas à l'abri de tout reproche, ne serait-ce que pour la diffusion d'images de jeux classés PEGI 18 à des spectateurs dont l'âge pouvait être plus proche de la dizaine que de la vingtaine.

[3] Surtout l'heure où des jeux comme Destiny arrivent à se vendre à près d'un demi-million d'exemplaire [4], sans qu'aucune critique n'ait été publiée. Ce qui est à peu près aussi scandaleux que sa nomination "meilleur jeu de la Gamescom 2013", alors qu'aucun joueur n'avait vu plus que quelques vidéos.

[4] Rajout : On me souffle dans l'oreillette qu'en fait c'est plutôt 6 à 7 millions de jeux qui auraient été vendus !

mercredi 3 septembre 2014

Mais qui se définit par les jeux vidéo ?

Ça fait presque un an que je n'ai rien écrit sur ce blog, pourtant les visites sont toujours assez régulières, preuve que seuls mes articles sur la borne d'arcade Raspberry Pi attirent des gens, et que personne ne lit le reste (non non, ne niez pas, j'ai accès aux statistiques). Du coup, je me permets d'écrire ce que je veux, puis que personne ne le lit !

L'envie d'écrire cet article me vient d'une série d'événements récents, qui m'ont amené à me poser cette question : qui sont les gens qui se sentent blessés lorsque le jeu vidéo (ou ce qui s'y rapproche) est critiqué, et surtout, pourquoi cela les touche-t-il aussi fortement ?

Il y a d'abord eu ce que certains appellent un peu pompeusement le GamerGate, et qu'on pourrait résumer de la sorte : une développeuse de jeux vidéo a été accusée - dans un post de blog - par son ex-petit ami de l'avoir trompée, en particulier avec un collègue et un journaliste d'un site d'information spécialisé dans le jeu vidéo. À partir de là, certains en ont déduit qu'elle avait couché pour réussir, et s'en est suivi un déferlement de critiques très virulentes envers  la développeuse, toute personne qui prenait publiquement sa défense, ainsi que la presse spécialisée, accusée de collusion et de manque d'indépendance vis-à-vis de l'industrie.

Ainsi, ce qui n'aurait dû rester qu'un règlement de comptes entre anciens conjoints, c'est soudainement transformé en croisade violente pour un prétendu assainissement des pratiques éthiques de la presse vidéo-ludique, au détriment de toute considération pour la développeuse qui a reçu de très nombreuses menaces et même vu des informations personnelles volées être diffusées sur internet.

Mon but ici n'est pas de donner un compte-rendu détaillé de ce triste épisode (pour ceux que cela intéresse d'en savoir plus, voici un lien du Monde.fr), ni même de rappeler que ces comportements sont gravement anormaux (en plus d'être illégaux pour certains), que la vendetta n'est pas la justice, et que personne, quoi qu'il lui soit reproché, ne mérite un tel acharnement sur internet.
En revanche, il me semble intéressant de tenter d'analyser certaines des réactions qu'ont suscité cette affaire, pour essayer de répondre à cette question que pose Martin Lefebvre, sur Merlanfrit : comment a-t-on pu en arriver là ?

Car en effet, s'il semble raisonnable de penser (d'espérer ?) que les acteurs directs du harcèlement ne représentent pas la majorité des amateurs de jeux vidéo, nombreux sont ceux qui prennent la parole pour exprimer leur mécontentement ou leur incompréhension face aux critiques de ces comportements.

Je prends pour exemple deux articles :

- l'un sur Gamasutra, qui critique, parfois avec des termes très forts, la "culture du jeu vidéo" (en tant qu'élément communautaire), pour relever son inadéquation avec ce qu'est déjà devenu le medium :
‘Games culture’ is a petri dish of people who know so little about how human social interaction and professional life works that they can concoct online ‘wars’ about social justice or ‘game journalism ethics,’ straight-faced, and cause genuine human consequences. Because of video games.
 "La "culture des jeux [vidéo]" est une soupe de gens qui savent si peu comment fonctionnent les interactions sociales et la vie professionnelle qu'ils peuvent sérieusement fomenter une "guerre" sur internet à propos de la justice sociale ou de "l'éthique de la presse vidéoludique", avec des conséquences humaines réelles. À cause des jeux vidéos." [1]
These obtuse shitslingers, these wailing hyper-consumers, these childish internet-arguers -- they are not my audience. They don’t have to be yours. There is no ‘side’ to be on, there is no ‘debate’ to be had.  There is what’s past and there is what’s now. There is the role you choose to play in what’s ahead.
"Ces lance-merde obtus, ces consommateurs frénétiques gémissants, ces polémistes-internet puérils -- ce n'est pas le public auquel je m'adresse. Vous n'avez pas à vous adresser à eux. Il n'y a pas de "camp" dans lequel être, ni de "débat" à avoir. Il n'y a que ce qui est passé, et ce qu'il y a maintenant. Il y a le rôle que vous choisissez de jouer pour le futur." [1]

- l'autre sur Badass Digest, où l'auteur exprime sa difficulté à se sentir "gamer" lorsqu'il voit les agissements de certains qui se revendiquent comme tels, et appelle la communauté à réagir et à ne pas laisser certains donner une si mauvaise image de leur passion.
But it’s hard to self-identify as “a gamer” when there’s also a large swathe of that community apparently committed to presenting us all as a bunch of hateful sociopaths. 
"Mais c'est difficile de s'identifier comme "un gamer", quand il y a aussi un grand pan de cette communauté qui a apparemment décidé de nous faire passer pour une bande de sociopathes haineux." [1]
It is the responsibility of every gamer to behave better. Many of us do behave nicely, but because negativity sticks in the mind so painfully, it will take a massive sea change in attitude to make the gaming environment better.
"Cela relève de la responsabilité de tous les joueurs de se comporter mieux. Beaucoup d'entre nous se comportent correctement, mais parce que les côtés négatifs s'ancrent si douloureusement dans l'esprit, il faudra un changement massif dans l'attitude pour améliorer la communauté de jeu." [1]

Or, au lieu de voir des gens dénoncer les comportements déviants de la communauté à laquelle ils appartiennent, j'ai vu, que ce soit sur Twitter, ou dans les commentaires des dits articles, de nombreuses personnes s'offusquer que "les gamers soient encore stigmatisés", que "les journalistes crachent sur ceux qui les lisent", que "la presse discrimine ceux qui ne se conforment pas à la pensée dominante". Comme si les critiques à l'encontre de dérives dans le jeu vidéo étaient plus graves que les dérives elle-mêmes.

Et cela m'a fait penser à un autre événement, francophone cette fois-ci, qui a eu lieu il y a quelques jours à peine, et que j’appellerai le GrandJournalGate, parce que moi aussi je suis pompeux quand j'ai envie.

Il y a quelques jours, passait dans le Grand Journal de Canal Plus une chronique de 2 minutes (montre en main) sur le rachat de Twitch par Amazon.

Dans cette chronique, une journaliste présente sur le ton de la moquerie le site de streaming Twitch, en prenant pour unique exemple des vidéos de PewDiePie, un "youtuber" dont la plupart des vidéos consiste à se filmer en jouant à un jeu de façon légère avec des réactions souvent exagérées (ce qui me fait dire que l'équivalent française serait plus ou moins Squeezie [2]). La chronique n'est visiblement pas à but informatif et ne reflète pas du tout la diversité de ce que l'on peut trouver sur Twitch, et les condamnations des communautés françaises de jeux vidéo et de streaming ont été nombreuses (je vous remets un article du Monde.fr pour ceux que ça intéresse).

Or là où les deux affaires se rejoignent, c'est qu'une fois encore, on a pu observer des débordements de la part d'internautes outragés que "leur" media, "leur" passion, soit ainsi trainés dans la boue par une journaliste inculte et au sourire carnassier. Et cette fois encore, de nombreuses insultes et appels au boycott de Canal Plus ont fleuri sur les réseaux sociaux. À tel point que certains représentants "officiels" de la communauté ont dû faire des rappels à l'ordre...

Comment se fait-il qu'une simple chronique de 2 minutes puisse à ce point déchaîner la colère des joueurs et des joueuses ? Faut-ils qu'ils se sentent à se point insulter quand on touche à ce qu'ils aiment ? Ou bien qu'ils aient à ce point l'impression que leur média n'est pas considéré à sa juste valeur ?  Qu'il est attaqué de tous côtés par des critiques injustifiées ? Que personne ne les comprend ?

Peut-être un peu de tout ça ?

Ce qui nous ramène ma question initiale : mais qui donc se définit par les jeux vidéos ?
Pour qui cette passion est-elle une identité si forte qu'elle justifie qu'on lui sacrifie le bon sens et la retenue ? 
Je pense que cette question n'est pas simple. Et une réponse toute faite aurait sans doute du mal à traduire la multiplicité des profils de gens qui se définissent comme "joueurs" ou "joueuses". Tout au plus puis-je dire que :
- D'une part, il est vrai que les jeux sont encore souvent mal compris et mal perçus par une grande partie des gens et que la presse généraliste se fait parfois l'écho des craintes ou des incompréhensions que suscite ce media récent.
- D'autre part, il est concevable que le jeu vidéo, par sa puissance d'évocation et l'investissement émotionnel qu'il requiert, puisse être une passion par laquelle les gens se définissent, comme certains se définissent par leur amour pour une célébrité ou un club sportif.
Je considère moi-même et depuis longtemps que les jeux vidéos occupent une place importante dans ma vie.

Mais aimer quelque chose ne devrait pas empêcher de porter un regard critique dessus. Et il n'est pas honteux de reconnaître que ce que l'on aime, ou ce que "l'on est" n'est pas parfait.
Balayer d'un revers de main les critiques de sexisme en prétendant qu'il s'agit encore de salir l'image des jeux vidéos, c'est oublier que ces critiques viennent de l'intérieur de la communauté, de gens qui aiment le jeu vidéo autant que ceux qui prétendent le protéger.
Réagir violemment à une chronique satirique c'est propager l'image d'une communauté agressive et irrationnelle  (sans compter que ce sont souvent les mêmes qui vont soutenir "leur" droit à l'humour si l'on pointe du doigt le côté discriminant de celui-ci).
Se sentir agressé ou insulté lorsque quelqu'un dénonce les comportements intolérables de certains, c'est passer à côté d'un message dont le but est de faire progresser toute la communauté.

L'image du jeu vidéo ne mérite pas qu'on lui sacrifie l'existence de polémiques nécessaire à son évolution.
En un mot, si le jeu vidéo est encore "discriminé", il ne tient qu'à nous, membres de sa communauté protéiforme, de tout faire pour l'améliorer, pour le rendre plus accueillant pour toutes et pour tous, plutôt que de se lamenter sur les attaques injustes qu'un soi-disant ennemi extérieur tenterait de nous porter [3].

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

[1] : Ces traductions, sans doute approximatives, n'engagent que moi (ce qui explique aussi que je ne vous mette que des extraits des articles, parce que c'est long de tout traduire).

[2] : Mais entre nous, je dis surtout ça pour amener les fans de PewDiePie et de Squeezie à se battre dans la section commentaires de cet article (que personne ne lira, souvenez-vous de l'intro).

[3] : Et quand bien même cet ennemi existerait, il serait alors facile de lui donner tort, tant ses critiques seraient éloignées de la réalité.

mercredi 9 octobre 2013

Trente ans après le crash de 1983 ?


Pour ceux qui n'auraient pas le courage de lire l'article en anglais, voici en substance ce qu'il dit :

"Dans un rapport publié par "Digital River", le cabinet de conseil  "SuperData Research" (spécialisé dans les divertissements interactifs, la distribution numérique et les technologies grand public) estime qu'il existe un risque pour que le crash de 1983 qu'a connu le secteur des jeux vidéos se reproduise. Sur la base d'un sondage effectué sur 1 105 participants le rapport estime que le marché des consoles est déjà saturé (avec 79% des joueurs possédant au moins une console, avec un nombre moyen de 2,6 consoles possédées) et que les consommateurs risquent d'être peu enclins à en acheter de nouvelles.
Bien que le rapport reconnaisse que le nombre de joueurs ne cesse d'augmenter, il note également que les habitudes de jeu ont changé, notamment avec une émergence des jeux sur des plateformes plus "versatiles" et non spécifiques aux jeux (les PC, tablettes, smartphones, etc.). Ainsi si en 2008 les supports privilégiés de jeu étaient pour 42% les consoles, 37% les PC et 5% les téléphones portables (et j'ignore où vont les 16% restants, mais on peut supposer qu'il s'agissait des joueurs n'ayant pas de support de jeu privilégié, ou les quelques irréductibles à jouer sur Mac), en 2012 ses proportions sont passées à 51% pour le PC, 30% pour les consoles et 13% pour les portables.
Enfin le rapport pointe une hausse significative des jeux dématérialisés (ce qui ne surprendra pas grand monde)."

 De façon notable, les commentaires des internautes sont presque tous unanimes pour critiquer le compte-rendu du rapport. Ci-dessous quelques commentaires (ou extraits de commentaires s'ils étaient trop longs) traduits :
"Le fait de posséder déjà une console ne veut pas dire que l'on n'est pas intéressé par la nouvelle génération de consoles. Le crash de 1983 était dû à un flot de jeux et consoles médiocres dans la même génération.
Si vous utilisez un argument aussi peu rationnel que le taux de possession actuel d'un type d'objet pour prédire les mauvais résultats futurs de son industrie, le marché des téléphones portables devrait s'effondrer très prochainement.
Enfin, quel est l'intérêt de comparer les ventes en boîtes et dématérialisées ? Y a-t-il encore des gens qui pensent que la seule façon d'acheter un jeu est dans une boutique physique ?"

"En réalité ce sont les torrents de shovelwares qui débordaient des rayonnages qui ont causé le crash. Il n'y avait pas de saturation des consoles en 1983. (...) Et souvenons-nous également que dans les années 1980 il restait une très large part de marché à conquérir vis-à-vis des consoles telles que nous les concevons aujourd'hui. (...) En 1983 le  hardware n'était pas le problème.
Je ne dis pas que l'industrie ne connaîtra jamais plus de crash, mais ça ne sera pas à cause du hardare mais à nouveau des shovelwares."

"Attendez, est-ce que les gens qui ont déjà une console ne sont pas PLUS susceptibles que les autres d'acheter une nouvelle console à sa sortie ? Qui a déjà entendu quelqu'un dire qu'il connaissait plus des gens qui ont acheté une Xbox360 comme première console que de gens qui l'ont acheté alors qu'ils possédaient déjà une Xbox ou une PS2 ?"

"Le crash est survenu à cause d'un écosystème de développeurs tiers qui se copiaient sans arrêt les uns les autres au point de saturer le marché. Les nouveaux jeux étaient vendus 50$ alors que les copies coûtaient à peine 5$, d'où une course aux prix bas, et nécessairement une baisse de qualité, si bien que les consommateurs ont juste abandonné les jeux vidéos.
Ça ressemble plus à l'industrie actuelle des jeux mobiles que productions AAA. Avec des jeux à 0,99 $ qui se copient les concepts, il est facile d'imaginer que le consommateur va finir par se lasser des clones de chamboule-tout, puzzles fruitiers et exploitations potagères."

Pour être honnête, je n'avais pas fait particulièrement attention à cet article, jusqu'à ce que j'apprenne récemment l'arrivée d'une n-ième console sous Android, la Mojo produite cette fois par le constructeur MadCatz. Il faut dire qu'entre la Ouya qui peine à convaincre malgré le succès fulgurant qu'elle avait rencontrée sur Kickstarter au lancement du projet (en particulier à cause de son absence de jeux exclusifs), le GameStick dont on ignore pour l'instant s'il est parti pour connaître le même sort, la Shield de Nvidia qui risque de peiner à s'imposer sur le marché des consoles portables dominé par la 3DS (qui ne coûte que 2/3 de son prix), les Steam Machines prévues pour fonctionner avec le Steam OS qui se déclineront sous différents modèles et dont la Piston de Xi3 ne fera pas officiellement partie, le consommateur risque d'avoir du mal à s'y retrouver. Et encore, je n'ai pas évoqué la Wii U de Nintendo, dont certains pensent toujours près d'un an après sa sortie qu'il ne s'agit que d'une mise à jour de la Wii, de la Xbox One, qui est en fait le 3ème modèle de Xbox, et la Playstation 4, qui est de toute façon déjà en rupture de stock jusqu'en janvier...

Alors bien sûr je ne suis pas en train de faire une analyse économique ni de comparer avec la situation en 1983 (d'abord parce que j'en serais bien incapable, et ensuite parce que je n'étais pas né en 1983 !), mais étant donné que l'industrie du jeux vidéos ne vit pas une période très rose, il ne me semble pas si délirant que ça que certains prédisent un crash à venir. De nombreux studio de développements et éditeurs ont connus des difficultés récemment : Nintendo et Sony étaient dans le rouge il n'y a pas si longtemps, Square Enix n'a pas atteint ses objectifs avec le jeu Tomb Raider, qui s'est pourtant vendu à des millions d'exemplaires, THQ a fait faillite en décembre 2012 après plus de 23 ans d'existence, la chaîne de magasins Game a fermé en janvier, juste après que le studio Eden Games a été placé en liquidation judiciaire, et l'actualité regorge de licenciements et restructurations...
Les grosses productions sont de plus en plus coûteuses, et l'arrivée de nouvelles consoles de salon pour lesquelles il va falloir développer de nouveaux outils et supporter des jeux à cheval sur deux générations ne va rien arranger. Mais cela sera nécessaire pour espérer en vendre suffisamment : ce n'est pas un hasard si la plupart des "gros" jeux annoncés (Watch Dogs, Metal Gear Solid 5, etc.) seront à la fois sur PS3/PS4 et Xbox360/XboxOne.
Même dans le domaine du jeu indépendant, qui semble pourtant tirer son épingle du jeu (peut-être parce qu'il n'a pas à supporter de distribution physique de ses produits, ni de coûteuses campagnes de marketing ?), le risque de saturation est présent. À part quelques titres (qui a dit "Minecraft" ?) dont les ventes sont gigantesques, les petites productions peinent à atteindre des volumes de ventes très importants, et la compétition est féroce (récemment encore, on se plaignait du manque de visibilité sur le Xbox Live Indie Arcade). À tel point que même chez les plus grands passionnés, on sent poindre une certaine lassitude, comme le prouve ce commentaire dans les news de l'association MO5, où le système Steam Greenligth (système de validation des jeux indépendants par la communauté) est qualifié de "croul[ant] sous les navets amateurs et/ou opportunistes".
J'ai d'ailleurs récemment eu l'occasion de voir une conférence sur le thème du développement des jeux vidéos, et j'ai été surpris d'apprendre que la plupart des petits studios ne faisaient "pas" de profit. C'est-à-dire que j'imaginais naïvement que les studios développaient un jeu, éventuellement en empruntant des fonds, pour ensuite espérer en vendre suffisamment pour rembourser les dettes et faire des bénéfices. Mais il n'est apparemment pas rare que l'objectif soit uniquement de rembourser les dettes, voire de minimiser les pertes pour pouvoir espérer décrocher un financement pour un prochain jeu. Il n'est alors pas étonnant que dans un tel contexte des studios n'arrivent plus à s'en sortir et doivent malheureusement fermer...

Bref, tout ça pour dire, que même si j'espère que les analystes se trompent, je ne suis pas si sûr qu'il n'y ait aucun risque du tout (et comme chacun sait si les difficultés surviennent elles frapperont indépendamment de la qualité des productions vidéoludiques car la crise n'a ni bon goût ni de sens de l'esthétique) :O

mardi 24 septembre 2013

Améliorer les PNJ ?

Ça fait un moment que je n'ai rien écrit sur ce blog, alors pour fêter ce message, je le commence par un "ç" majuscule.

Avec la grande mode des jeux en monde ouvert ("Open World"), je voulais parler d'une difficulté qui me semble de plus en plus présente : celle de créer des personnages non joueurs (PNJ) "crédibles". Parce qu'il ne suffit souvent pas de créer des jeux où l'on peut parcourir d'immenses étendues sans temps de chargement (encore que, les temps de chargement, ça permettait d'aller aux toilettes sans avoir à mettre le jeu en pause), mais il faut également les peupler pour que le joueur n'ait pas l'impression de traverser le plus grand désert vidéoludique jamais créé.

En parlant d'Open World, voilà un petit résumé humoristique du dernier salon de l'E3 que j'ai trouvé sur Youtube :

Je dis que c'est une difficulté de plus en plus présente, parce que compte tenu des faibles capacités (d'affichage et de mémoire) des anciennes consoles, on pouvait tolérer que les PNJ soient peu nombreux, restent toujours au même endroit et répètent inlassablement les mêmes phrases en boucle lorsqu'on leur adresse la parole. D'ailleurs, toute une génération de RPGs japonais ont habitué les joueurs à des villes (qui sont parfois censée être des capitales de pays) comportant moins d'une dizaine de maisons, et à peine plus d'habitants (voire des habitants qui n'ont visiblement aucun logement, comme c'est le cas à Bourg Palette, ville de départ du premier jeu Pokémon sur Game Boy).

La carte de Bourg Palette, 3 maisons, pour 5 habitants, et pas de pont pour les 2 restants...
Le paradoxe des villes dans Pokémon.

Mais cet état de faits a été moqué à de nombreuses reprises, et l'intégration d'une population crédible et intéressante me semble faire partie des promesses des mondes ouverts (j'emploie le mot "crédible" plutôt que "réaliste", car l'univers du jeu peut ne pas être réaliste tout en ayant des PNJ qui se comportent de façon logique compte tenu de cet univers).  Le but de ce message est donc de tenter de définir ce que j'entends par là (et ce qui me semble important pour y parvenir).

Tout d'abord, je veux distinguer les PNJ de l'IA (intelligence artificielle) : le PNJ (qui est certes géré par l'IA) se caractérise par le fait qu'il est un personnage qui a une existence dans le jeu (contrairement à l'IA qui est "hors du jeu", mais peut servir d'adversaire au joueur sans l'intermédiaire direct d'un PNJ, dans un jeu de stratégie ou de gestion par exemple).
Je pense que l'on peut regrouper les PNJ en trois catégories :
- Les PNJ d'opposition : ceux qui vont être confrontés au joueur et qui doivent être battus (d'une façon ou d'une autre) pour progresser dans le jeu.
- Les PNJ d'aide : ceux dont le seul rôle est d'aider le joueur, que ce soit en lui prodiguant des conseils, ou en faisant avancer l'histoire (voire en lui demandant de remplir des objectifs, nécessitant généralement de vaincre d'autres PNJ).
- Les PNJ neutres : ceux dont l'interaction avec le joueur peut être réduite au minimum et qui ne servent qu'à donner l'impression que l'univers du jeu est peuplé d'êtres vivants.

Dans ces trois catégories, on trouve deux types de personnages : ceux qui sont scénarisés (à savoir, des personnages "uniques" et importants dans le déroulement du jeu et dont la profondeur sera a priori plus travaillée, par exemple un rival, le chef des ennemis, un acolyte, un mentor, etc.), et les PNJ génériques (ceux que l'on va retrouver à différents endroits et qui sont plus ou moins interchangeables, par exemple les ennemis de base, les paysans d'un village, les animaux dans une forêt, etc.).

Les premiers ne présentent en général pas de gros problème (si tant est que l'écriture du jeu soit correcte), mais sont souvent minoritaires et ne font a priori jamais partie des PNJ "neutres". Or ce sont les PNJ "neutres" que le joueur va être le plus à même de croiser, une fois sorti des sentiers battus de la trame principale du récit (cette fameuse liberté d'action qu'on nous vend sans arrêt, que ça soit pour GTA V ou Animal Crossing).

Un trailer d'Animal Crossing :

Un trailer de GTA V :

Après, il est évident que tous les types de PNJ ne sont pas aussi problématiques. Par exemple, à moins d'avoir une thèse sur le comportement du lapin de garenne, ces derniers ne vous choqueront pas quand vous les croiserez au hasard des chemins broussailleux de Skyrim.
De même, les PNJ d'opposition sont généralement les plus faciles à traiter : dans la plupart des jeux les adversaires ont un comportement plus ou moins réaliste compte-tenu des situations de face-à-face, et ce indépendamment de la qualité de l'IA qui les contrôlent. Par exemple dans les jeux qui supposent de combattre des ennemis, les activités de ces derniers se résument souvent à monter la garde, faire des rondes, attaquer à vue, battre en retraite, etc., ce qui peut être fait avec plus ou moins de réalisme, mais n'est jamais complètement choquant. De plus, ils présentent souvent l'avantage de peu parler (que ce soit parce qu'ils ne sont pas humains, des animaux sauvages par exemple, ou parce qu'on ne leur en laisse pas le temps avant de les réduire au silence).
C'est pourquoi je m'attarderai principalement sur les PNJ humains, neutre ou d'aide.

C'est un lapin, dans le jeu Skyrim.
Un lapin dans Skyrim.

Venons-en à la raison pour laquelle je souhaite des PNJ crédibles et intéressants : je pense que la dissymétrie qui existe entre le joueur et les PNJ nuit à l'immersion. Le fait que le joueur soit capable de déceler des routines trop mécaniques dans les déplacements, les paroles et les comportements des personnages lui rappelle sans arrêt qu'il est devant un jeu dont les grandes lignes ont été tracées à l'avance, ce qui s'oppose radicalement à l'idée d'un monde "ouvert". Par ailleurs, la distance entre le joueur et le PNJ rend difficile toute forme d'empathie. Qui accepterait d'aider un menuisier à collecter du bois plutôt que d'aller chasser le dragon à mains nues si ce n'était dans l'espoir de recevoir une récompense en contrepartie ? Et qui ne manquera pas de pester contre son écran quand il se rendra compte que le menuisier ne lui donne qu'une toute petite somme d'argent en échange de la dizaine de minute qu'il vient de perdre à appuyer frénétiquement sur un bouton ? Si les développeurs essayent souvent d'impliquer d'avantage le joueur vis-à-vis du personnage principal de l'aventure, il me semble que cet effort n'a que peu été porté sur les PNJ qui l'entourent. C'est pourquoi, je considère qu'un PNJ devrait être soit suffisamment scénarisé ou réaliste compte tenu du rôle qu'il est censé jouer, soit suffisamment imprévisible pour, dans l'idéal, le rendre difficilement identifiable d'un joueur.

Alors bien sûr, la deuxième option n'est pas envisageable dans la plupart des cas (ne serait-ce parce qu'on se retrouverait alors avec une foule de PNJ qui passent leur temps à courir pour se rendre d'un point un à autre de la carte). Mais si l'on regarde par exemple Animal Crossing, les animaux qui peuplent le village font exactement le même genre d'activité que le joueur : ils se promènent, pèchent, chassent les insectes, secouent les arbres, et leurs lignes de dialogue sont tirés parmi une base de répliques suffisamment grande pour ne pas tomber trop souvent sur les mêmes (voire même être parfois surpris qu'ils ressortent un truc qu'on leur a dit qu'il y a plusieurs mois, ou vous envoient spontanément une lettre si vous ne leur avez pas donné de nouvelles depuis longtemps). Certes cela n'est rendu possible que par l'univers d'Animal Crossing où l'oisiveté est naturelle, mais tout ceci tend néanmoins à rapprocher le joueur des PNJ (même si on se rendra vite compte qu'on peut sans problème les arnaquer en leur vendant des objets au double de leur valeur réelle !).

Un screenshot du jeu Animal Crossing.
Une image d'Animal Crossing New Leaf sur 3DS.

Ceci dit, la présence d'un aléas, ou au moins d'une évolution possible du comportement, me semble indispensable pour la crédibilité des personnages. Même s'il est plus pratique pour le joueur que tel personnage soit exactement au même endroit à la même heure (comme c'est le cas dans Xenoblade par exemple), cela a tendance à faire passer toute la population pour complètement psychorigide. De même pour les répliques des PNJ : actuellement il me parait parfaitement envisageable d'avoir des personnages qui ne se contentent pas de répéter inlassablement la même chose dès qu'on leur adresse la parole. Pourquoi les PNJ ne pourraient-ils pas avoir une humeur variable ? Pourquoi accepteraient-ils sans broncher la schizophrénie du joueur qui leur soutient tout et son contraire dans un intervalle de 30s dans l'unique but de tester les différentes possibilités d'un dialogue à choix multiples ? On pourrait même envisager de remplacer les lignes de dialogue préétablies par un champ de texte libre, moyennant un algorithme qui tenterait de mimer une vraie conversation avec la joueur (voire même prévoir des variantes du même algorithme pour rendre compte de différentes personnalités des PNJ). Le premier "chatterbot" date quand même de 1966 ! Évidemment, cela supposerait vraisemblablement de laisser tomber les voix doublées, et peut-être même les traductions (mais à l'heure où nombre de bons jeux ne sortent de toute façon qu'en version anglaise, cela aurait au moins le mérite de justifier l'absence de localisation).

Une autre chose qui me semble importante, est l'interaction entre les PNJ. Pour donner l'illusion d'un monde cohérent et en évolution, les personnages se doivent d'avoir des interactions entre eux, et pas uniquement avec le joueur. Cela est assez bien mis en place dans les événements aléatoires qui ont lieu hors des villes dans Skyrim : il n'est pas rare de voir des factions de soldats s'affronter, un renard chasser un lapin, ou bien des brigands rançonner des promeneurs. Malheureusement, les cités restent trop figées, et à part les gardes qui patrouillent, la plupart des promeneurs semblent errer sans but au fil de la journée, attendant seulement que le joueur vienne leur parler.

Un screenshot de Minecraft.
Interactions entre PNJ dans Minecraft (laissée à la libre interprétation du lecteur).

Une autre piste qui me semble intéressante, est celle de PNJ avec lesquels on ne peut pas interagir. C'était le cas dans Minecraft avant que le système de troc ne soit mis en place : les PNJ existaient dans des villages générés aléatoirement, mais le joueur ne pouvait ni leur parler, ni rien faire à part les tuer, ce qui ne lui apportait strictement rien, ou leur construire des maisons pour qu'ils se multiplient (ce qui ne lui apportait rien non plus). C'est également le cas dans Gravity Rush, la ville d'Hekseville est peuplé d'une multitude de passants qui pratiquent diverses activités et avec lesquels on ne peut pas discuter (hors des rares fois où cela est prévu dans le scénario), mais qui sont néanmoins sensibles aux changements de gravité que l'on effectue à côté d'eux (et qui se manifesteront alors par des cris de terreur pour bien signifier qu'ils n'apprécient pas vraiment de se retrouver la tête en bas). S'il peut sembler au départ frustrant de ne pas pouvoir interagir avec les PNJ, cela n'est pas tellement choquant dans la plupart des cadres "réalistes" (de même qu'il n'est pas choquant qu'un vendeur ou un paysan reste toute la journée au même endroit), et cela a l'avantage de nous désapprendre à vouloir parler à tous les personnages. De plus, ajouter un peu de mystère aux PNJ, par exemple en mettant le joueur face à des personnages qui s'expriment dans un dialecte qu'il ne comprend pas, peut être un moyen simple mais efficace de renforcer la curiosité vis-à-vis de ces personnages. En revanche, j'ai trouvé que Gravity Rush avait néanmoins manqué une bonne opportunité de sensibiliser le joueur aux victimes collatérales de ses actions (par exemple en laissant paraître dans des gros titres de journaux le nombre de PNJ tués par mégarde lors de ses déplacements gravitationnels). Pour citer un autre exemple, dans Shenmue, les gens sont généralement surpris lorsque l'on sonne à leur porte sans raison et ne vous donne parfois que peu d'informations, mais essayez un peu de parler avec tous les gens que vous croisez dans la rue pour voir si vous apprenez des choses utiles...

Une image de Gravity Rush.
Une image de Gravity Rush où on aperçoit des PNJ.

Enfin, la dernière possibilité, est bien sûr d'avoir un monde avec des personnages joués par différents joueurs, comme c'est le cas dans les jeux en ligne massivement multi-joueurs (MMO). Dans ce cas évidemment, on peut se permettre d'avoir des interactions avec des personnages qui vont répondre comme des joueurs (pas que ce soit toujours mieux d'ailleurs, car certains joueurs se comportent comme de vrais PNJ, qui font des actions en boucle et ne prennent pas le temps de répondre de façon construite à un message qui leur est adressé), mais cela ne relève plus vraiment de la même problématique que dans le cas d'un jeu prévu pour être joué seul. Et d'ailleurs, même dans les MMO la tendance me semble souvent être de donner à chaque joueur la même expérience de jeu, et donc de créer une distorsion temporelle pour permettre à chacun de croiser les mêmes PNJ, aux mêmes endroits, pour réaliser les mêmes quêtes. Je n'ai que peu joué à des MMO, mais l'un des seuls qui m'ait donné l'illusion d'avoir un vrai monde ouvert avec des évolutions perceptibles est le jeu en PHP Kraland Interactif. Mais cela se fait au prix d'une temporalité complètement brisée (il faut accepter de parler à certaines personnes, qui ne répondront que quand elles se connecteront à leur compte, parfois plusieurs heures après), et de la nécessité de recourir à une certaine imagination pour faire face à un jeu de rôle parfois bancal (en particulier, accepter de s'embarquer dans l'histoire que d'autres joueurs vont proposer même si cela ne correspond pas exactement aux actions que leur personnage va réaliser dans le jeu lui-même).

Voilà, tout ça pour dire que si j'apprécie beaucoup les jeux en monde ouvert (même si je n'ai pas joué à GTA V et que je ne compte pas y jouer), je trouve qu'il y a encore une grande marge de progression possible pour améliorer les comportements des personnages gérés par l'IA pour ne pas donner l'image d'un monde trop figé ! Et si l'aléatoire ou l'impossibilité de rejouer un dialogue en changeant ses réponses peut paraître frustrant, je pense que cela renouvelle également l'intérêt du jeu (en cassant la routine du "j'explore tout, je parle à tout le monde, je finis le jeu à 100%") et permettrait aussi d'offrir une aventure plus personnelle à chaque joueur (après bien sûr, je parle un peu dans le vide, et je me doute bien que si c'était facile à faire, ça aurait sûrement déjà été fait !).

Bref, n'hésitez pas à donner votre avis sur les PNJ en commentaire (attention quand même, je censurerai tout message blessant ou diffamant à l'encontre des PNJ).

mercredi 31 juillet 2013

Une borne d'arcade avec un Raspberry Pi - Partie 5 : conseils divers.

Voilà déjà la dernière partie du tutoriel, celle dédiée aux conseils divers, à savoir des trucs que j'aurai oublié dans les parties précédentes (oui, je sais que je peux éditer mes anciens messages !), ou des choses qui n'ont pas vraiment de place dans ce qui précède. Cette partie sera peut-être amenée à évoluer si des gens posent des questions en commentaires (et que je sais leur répondre, dans le cas contraire je ferai bien évidemment semblant de ne pas avoir lu leurs questions...).

Plan :

Les ROMs


Quelques conseils sur les ROMs pour Mame :
- Il ne faut jamais renommer le fichier .zip d'une ROM Mame, sinon elle ne sera pas reconnue par l'émulateur (il vaut mieux le savoir avant d'en télécharger un paquet en les renommant à chaque fois, parce qu'ensuite vous êtes bons pour tout renommer).
- Certaines ROMs (celles des jeux Neo-Geo par exemple) ont besoin d'un bios en plus de la ROM pour fonctionner. En général, le bios peut se trouver sous la forme d'un fichier .zip (qui sera disponible aux mêmes endroits que là où vous aurez trouvé vos ROMs) et qui portera un nom du type neogeo.zip.
- Même en faisant attention à la compatibilité des ROMs avec la version de Mame (je rappelle que mame4all est basé sur la version 0.37b5 de Mame), vous pouvez avoir quelques surprises. Notamment il y a des jeux que je n'ai jamais réussi à faire fonctionner (Toki et Caveman Ninja par exemple), et d'autres pour lesquels la ROM censée être compatible ne fonctionnait pas, alors qu'une autre prise au hasard marchait très bien (DoDonPachi par exemple).
- Pour certains jeux vous pourrez avoir la surprise d'avoir l'écran inversé (ce qui n'est pas très pratique pour jouer). Pour régler ce problème, il faut appuyer sur la touche F2 de façon prolongée pour lancer le mode de configuration, et ensuite sélectionner "normal screen" à la place de "invert screen". Vous pouvez en profiter pour régler les options comme vous le souhaitez (nombre de continues, compteur de points à atteindre pour gagner une vie supplémentaire, niveau de difficulté, etc.), tout en sachant qu'appuyer sur la touche qui correspond au bouton 2 remettra toutes les options par défaut, et que pour quitter le mode de configuration il vous faudra à nouveau appuyer sur F2 de façon prolongée

Quelques conseils sur les ROMs pour PiSnes :
- Il existe de nombreuses versions des différentes ROMs, en général une lettre ou un symbole placé à la fin du nom vous permet de les différencier (vous pouvez trouver la liste des abréviations utilisées sur Wikipédia).

Les manettes pour le Raspberry Pi


Je n'en n'ai pas testé, mais a priori vous pouvez jouer avec des manettes qui se branchent en USB sur le Raspberry Pi. L'intérêt est que cela coûte bien moins cher que de faire (ou d'acheter) un stick d'arcade, et qu'en plus ça vous permettra de jouer facilement à 2 joueurs (ce qui n'est pas vraiment possible avec ce pour quoi j'ai opté, et c'est quand même un peu triste pour les jeux de combat !).

Sur ce tutoriel, ils utilisent des manettes imitant les manettes Snes et qui se branchent en USB.

Si vous souhaitez utiliser des manettes de Xbox360 il est probable que vous ayez à installer un driver spécifique. Pour le trouver, vous pouvez faire une recherche dans un terminal en tapant apt-cache search xbox puis une fois que vous avez son nom complet, vous pouvez l'installer à l'aide de la commande sudo apt-get install nom_du_driver.

Conclusion


Voilà, cette partie est courte pour l'instant, mais elle étoffera peut-être à l'avenir. 
Maintenant qu'il est plus ou moins terminé, j'espère que ce tutoriel pourra vous être utile, et n'hésitez pas à poser une question ou à faire une suggestion si quelque chose n'est pas clair ou si vous pensez que l'une des étape que je décris peut être faite mieux ou plus facilement !

lundi 29 juillet 2013

Une borne d'arcade avec un Raspberry Pi - Partie 4 : construire le stick.

Comme promis, maintenant que le Raspberry Pi est configuré pour faire fonctionner des émulateurs, on continue ce tutoriel avec la construction du stick d'arcade en lui-même et son câblage.
À noter que cette partie peut vous être utile si vous souhaitez juste construire un stick d'arcade "standard" (qui se branche en USB sur un PC ou une console), même s'il existe déjà des tutoriels très détaillés à ce sujet.

Si jamais vous ne savez toujours pas de quoi on parle, jetez donc un oeil à la partie 1.
Si vous vous demandez comment configurer un Raspberry Pi pour faire fonctionner des émulateurs, rendez-vous à la partie 3.

Pour cette partie, vous avez deux alternatives :
  • Soit vous décidez de connecter les boutons et le joystick directement au Raspberry Pi via les ports GPIO.
  • Soit vous décidez de connecter les boutons et le joystick à un circuit imprimé (ou "PCB" pour "Printed Circuit Board") conçu à cet effet (par exemple le Kade), que vous brancherez en USB au Raspberry Pi.
La première a l'avantage d'être moins coûteuse (vous économisez le prix du circuit imprimé et de la rallonge USB dont vous aurez sans doute besoin), par contre elle vous demandera un peu plus de bidouillage sur le Rasberry Pi pour que ça fonctionne.
La seconde est un peu plus coûteuse, mais elle a l'avantage d'être plus simple, et surtout de garantir que votre stick d'arcade pourra facilement être converti en stick "standard" si vous décidez soudainement que vous ne voulez plus vous en servir avec le Raspberry Pi.

Plan :
1) Un mot sur la fabrication du caisson.
2) Le câblage dont vous aurez besoin dans tous les cas.
3) Si vous voulez connecter le stick directement au Rapsberry Pi sur les ports GPIO.
4) Si vous voulez utiliser un circuit imprimé.

Un mot sur la fabrication du caisson


Comme je l'ai déjà mentionné dans la partie 2, j'ai acheté un caisson de stick d'arcade vide pour mettre les boutons, le joystick, et le Raspberry Pi dedans. Cette étape n'est évidemment pas obligatoire et vous pouvez tout à fait fabriquer votre caisson comme vous l'entendez (ça demande juste d'être un peu bricoleur et d'avoir quelques outils, comme je l'ai déjà mentionné, on peut aussi bien en faire un en bois que dans un carton à pizza).
Dans ce cas, pensez-bien à : 
  • prévoir des dimensions suffisantes pour que tout rentre dedans (en particulier il vaut mieux avoir une profondeur d'au moins 6 cm). 
  • prévoir la disposition des boutons et du joystick que vous souhaitez utiliser (vous avez des exemples de dispositions des boutons disponibles sur slagcoin, mais vous pouvez aussi vous inspirer des templates utilisés pour faire des artworks personnalisés pour les stick commerciaux, par exemple ici ou ).
  • être prudents avec tous les outils qui sont dangereux (je précise, au cas où hein...).

Le câblage dont vous aurez besoin dans tous les cas


Peu importe l'option que vous choisissez, certains éléments du câblage resteront inchangés.

En particulier tous les boutons ont 2 connecteurs, donc l'un devra être relié à la masse, le plus pratique est donc d'utiliser une chaîne de masse commune, qui reliera tous les boutons, et aura son extrémité reliée à la masse.

Une série de câbles avec des cosses au bout pour relier les boutons entre eux et à la masse.
Vous remarquerez que cette image a été piquée sur le site canadianjoysticks.com (parce que je n'ai pas eu le courage de tout démonter pour prendre la mienne en photo).

Si vous voulez la faire vous même à partir de câbles et de cosses (prévoyez autant de cosses que vous avez de boutons à connecter), sachez que prévoir 20 cm entre 2 cosses est suffisant et qu'un fil de 40 à 50 cm pour relier le tout à la masse (que ça soit celle des ports GPIO ou celle du circuit imprimé) devrait suffire. Sinon vous pouvez l'acheter (le nom anglais est "common ground daisy chain" si vous en cherchez sur des sites anglophones).

Ensuite il vous faudra des câbles d'environ 40 cm avec une cosse à l'un des bouts pour les brancher aux boutons (ce qu'il y aura à l'autre bout des câble dépendra de la solution que vous avez choisie).

Voici à quoi ressemblent les cosses femelles.

Ainsi qu'un connecteur 5 broches (ou 5 câbles jumpers, au choix) pour se brancher sur le joystick (là encore l'autre bout des câbles dépendra de votre choix).

À noter que pour mettre les cosses au bout des fils, vous n'avez pas forcément besoin d'un fer à souder. Il vous suffit de dénuder le fil, d'introduire la partie dénudée dans la cosse, et d'écraser l'embout de couleur à l'aide d'une pince plate afin de bloquer le file en contact avec la cosse. (Cela demande un peu d'entraînement, mais après avoir massacré deux ou trois cosses, vous prendrez très vite le pli !).

Une fois tout branché sur les boutons et le joystick, ça devrait ressembler en gros à ça (vous avez le droit de faire un câblage plus propre que le mien, mais tant qu'il n'y a pas de faux contact, tout devrait bien fonctionner !) :

C'est là qu'on constate qu'il n'y pas besoin d'avoir un câblage parfait pour avoir quelque chose de fonctionnel.
On ne voit peut-être pas grand chose, mais il y a un fil avec une cosse femelle connecté sur chacun des 2 connecteurs de chaque bouton, et un connecteur 5 broches avec un fil multicolore branché sur le joystick.

Si vous avez un doute quant au sens de branchement du connecteur pour le joystick, voici un petit détrompeur que j'ai trouvé sur le forum shoryuken :

Si l'image ne s'affiche pas, essayez "joystick sanwa wirering" dans google image.

Connecter un joystick et des boutons au Raspberry Pi via les ports GPIO


Les ports GPIO (pour "General Purpose Input/Output") vous permettent de faire communiquer le Raspberry Pi avec un circuit électronique en entrée ou en sortie (si vous souhaitez utiliser des boutons pour commander le Raspberry Pi, il faudra donc vous en servir en entrée).

Pour brancher les fils sur les ports GPIO, vous pouvez soit utiliser des câbles jumpers, soit utiliser un connecteur 2x13 contacts avec un pas de 2,54 mm (dans cas faites bien attention à la numérotation des connecteurs afin de ne pas connecter un bouton sur le mauvais).

Voici une image d'un connecteur 2x13 contacts avec un bloc de câbles adéquat.

La façon de vous en servir est intégralement décrite sur ce tutoriel du site Adafruit (en anglais). Je l'ai testée avant d'utiliser finalement un circuit imprimé et tout fonctionne sans problème.

Comme le tutoriel est très clair et détaillé, je ne vais répéter que les éléments essentiels (en traduisant au passage en français) :
Sur les modèles B version 2 du Raspberry Pi (reconnaissables au fait qu'il y a des trous prévus pour le visser sur un support), les ports GPIO sont numérotés comme suit :

À noter que ceci peut changer avec les futures version du Raspberry Pi, si vous venez ici longtemps après la rédaction de ce tutoriel, pensez à vérifier que ce schéma s'applique toujours bien.

Vous avez donc 15 ports disponibles (ceux-ci sont représentés en vert avec marqué "GPIO" suivi d'un numéro) pour brancher boutons et joystick (sans compter les masses symbolisés par le sigle "GND" pour "ground"). Cela vous autorise donc à brancher un joystick à 4 directions, et 11 boutons supplémentaires.

Il vous faut ensuite utiliser un script fournit par Adafruit qui commandera au Raspberry Pi de réagir au signal reçu sur ces ports de la même façon que si on appuyait sur des touches du clavier. Il est disponible sur GitHub.

La procédure pour l'adapter aux touches que vous utilisez ainsi que pour faire qu'il se lance automatiquement au démarrage est décrite sur le tutoriel d'Adafruit.

Connecter un joystick et des boutons à un circuit imprimé (PCB)

Si vous choisissez cette option, les connecteurs dont vous aurez besoin à l'autre bout des fils branchés aux bouton et au joystick dépendront du circuit imprimé que vous prendrez.

Il existe différents circuits imprimés disponibles dans le commerce (certains compatibles PC/PS3/Xbox360 peuvent se trouver jusqu'à 60€ !), et il est également possible de désosser une vieille manette pour récupérer son circuit imprimé et souder les contacts à la place des contacts des boutons (autrement dit, vous avez le choix du circuit que vous utiliserez).

Comme je l'ai déjà mentionné, je recommande d'utiliser le Kade qui n'est pas très cher (26€, frais de ports compris), qui est très simple d'utilisation et est prévu pour servir de clavier ou de manette sur PC, mac, Linux, PS3, PS2, PS1, Xbox (et théoriquement sur Game Cube, Wii, Dreamcast et Xbox360 avec des adaptateurs). Comme ce circuit imprimé dispose de connecteurs vissages, il vous faudra soit des fils dénudés (de préférence étamés) soit des connecteurs de type "banane", des cosses mâles ou des embouts de câblage (en gros, quelque chose qui n'est pas trop gros et qui permettra d'avoir un bon contact une fois vissé).

Si vous ne voyez pas la photo, rendez-vous sur le site officiel "kadevice".

Il vous suffit ensuite de brancher les câbles dans les connecteurs (deux sont reliés à la masse, et vous en avez 20 disponibles, ce qui vous autorise donc à connecter un joystick 4 directions et 16 boutons supplémentaires). Puis de brancher le Kade à votre ordinateur en USB et de le configurer en utilisant le logiciel téléchargeable sur le site officiel, pour attribuer les fonctions que vous voulez aux différentes entrées  physiques (vous pouvez donc attribuer une touche du clavier à chaque bouton, et les flèches directionnelles aux 4 directions du joystick).

Tout est très simple d'utilisation. Vous pouvez trouver un tutoriel sur le câblage ainsi qu'un tutoriel pour utiliser l'utilitaire de configuration sur le site officiel (en anglais, une fois encore).

Pour la configuration, j'ai opté pour l'attribution suivante des touches (à gauche le bouton du stick, à droite la touche du clavier correspondante) :

Une image du stick vue de dessus pour visualiser la position des boutons.

Home = Echap (Escape)
Select = Retour arrière (Backspace)
Start = Entrée (Enter)
A = A
B = B
C = C
X = X
Y = Y
Z = Z
L = Espace (Space)
R = F1
Les flèches de direction pour les 4 directions du Joystick (Up, Down, Left, Right)

Faites attention, le Kade est par défaut configuré en QWERTY, donc si votre Raspberry Pi est en français (et s'attend donc à avoir un clavier AZERTY), il faudra mettre Q à la place de A et W à la place de Z.

Une fois que tout est configuré, il ne vous reste plus qu'à brancher votre Kade au Raspberry Pi à l'aide d'un câble USB (ce dernier le reconnaîtra automatiquement comme s'il s'agissait d'un clavier) et à trouver la place de tout mettre dans le caisson du stick d'arcade, avant de le refermer. Voilà à quoi ressemble l'intérieur du mien :

Voici l'intérieur du caisson du stick, il contient les câbles, le Raspberry Pi, une rallonge USB et le Kade.

Vous pouvez constater qu'il semble rester pas mal de place, mais ne vous y trompez pas, ça passe tout juste à cause de la place prise par le joystick et les boutons ! À noter que j'ai vissé le Kade sur un emplacement disponible à cet effet afin qu'il ne se balade pas, et que le Raspberry Pi est calé par la partie inférieure du joystick (une fois le couvercle vissé) et donc qu'il ne bouge pas même s'il n'est pas fixé. Le câble USB (de marque Carrefour) est simplement scotché au fond en plastique (on sent le bricolage d'expert !).

Une fois votre caisson fermé, il faudra vous assurer que le Raspberry Pi ne chauffe pas trop à l'intérieur (et éventuellement envisager de percer des aérations si vous voyez que la température monte significativement). Pour avoir fait des essais avec le mien, après 1h00 de jeu, la température reste raisonnable, donc je suppose qu'il n'y a pas besoin de ventiler en plus (mais je n'ai pas testé de pré-réglage d'overclocking supérieur à "Medium", ni eu le temps de tester de longues sessions de jeu pour l'instant).

Voilà, c'est terminé pour le tutoriel en lui-même, dans la dernière partie on verra des conseils divers que je ne sais pas trop où mettre (et surtout que j'aurai oublié de préciser dans les autres parties !).

dimanche 28 juillet 2013

Une borne d'arcade avec un Raspberry Pi - Partie 3 : configurer le Raspberry Pi.

Comme promis, on continue avec un tutoriel pour configurer un Raspberry Pi afin de pouvoir s'en servir comme station d'émulation.
À noter que cette partie peut vous être utile si vous voulez juste acheter un Raspberry Pi pour faire tourner des émulateurs dessus (et y jouer au clavier ou avec une manette standard), sans forcément bricoler un stick d'arcade.

Si vous ne savez pas de quoi on parle, allez jeter un œil à la partie 1.

Plan :
5) Configuration pratique (scripts de lancement rapide, alias et démarrage sans mot de passe).

Remarque : Il existe différents projets (par exemple Chameleon et RetroPie) qui ont pour objectif de faire une pseudo-distribution de Linux pour le Raspberry Pi entièrement dédiée à l'émulation. Ces projets vous proposent en général de télécharger des images de carte SD que vous aurez juste à installer sur une carte vierge et qui devraient fonctionner "clefs en main" (si vous ne savez pas comment installer une image de carte SD sur une carte vierge, rendez-vous au premier paragraphe). Ce n'est pas mon objectif ici, j'explique simplement comment faire fonctionner et configurer des émulateurs sur une distribution Linux standard du Raspberry Pi.

Installer et configurer une distribution Linux sur le Raspberry Pi


Tout d'abord, petite précision au cas où vous ne comprendriez pas ce que vient faire Linux là-dedans : le Raspberry Pi ne peut fonctionner que sous Linux (c'est en partie ce qui explique son coût très faible : il n'y pas d'OS à acheter).
Il existe plusieurs distributions dont les principales sont listées sur le site officiel : distributions Linux pour le Raspberry Pi (vous trouverez également des liens pour les télécharger sur cette même page).
Si vous n'y connaissez rien et ne savez pas quoi prendre, faites comme moi et prenez celle recommandée pour les débutants, à savoir la distribution Raspbian "wheezy".

Pour installer une distribution sur la carte SD, vous allez avoir besoin d'un ordinateur avec un lecteur de carte SD et d'un petit utilitaire : Win32DiskImager (je suppose ici que l'ordinateur que vous allez utiliser est sous Windows, mais si vous êtes sous Mac ou Linux il existe bien évidemment des solutions similaires).

L'installation est très facile, il suffit de :
- télécharger l'image de la distribution souhaitée (par exemple "wheezy-raspbian.img").
- insérer la carte SD dans le lecteur de carte SD de votre ordinateur.
- lancer le logiciel Win32DiskImager (après l'avoir téléchargé et dézippé).
- sélectionner l'image de carte SD "Image File" et l'emplacement "Device" où vous souhaitez l'écrire (en l’occurrence le lecteur qui correspond à votre lecteur de carte SD).
- cliquer sur "Write".
- attendre le message qui confirme que l'image a bien été inscrite sur la carte.

Voilà, votre carte SD est prête à être insérée dans votre Raspberry Pi qui démarrera maintenant sous Raspbian Wheezy.
Par défaut le nom d'utilisateur est "pi" et le mot de passe associé est "raspberry".

Pour la configuration initiale du Raspberry Pi sous Raspbian, il est vivement recommandé (voire quasi obligatoire) d'y brancher un clavier et une souris.

Lors du premier démarrage, vous aurez accès à un écran de configuration où vous pourrez choisir plusieurs choses pratiques.

L'écran de configuration propose différentes options.


NB : si vous voulez revenir à cet écran plus tard, il vous suffira de taper la commande suivante dans un terminal ("console") pour y revenir :
sudo raspi-config

Dans cet écran de configuration vous pouvez déjà :
- dire au Raspberry Pi d'utiliser tout l'espace que votre carte SD : "Expand Filesystem" (faites le dès maintenant !).
- changer votre mot de passe : "Change User Password" (ce n'est pas nécessaire, de toute façon on configurera plus tard le Raspberry Pi pour qu'il démarre sans avoir besoin d'entrer de mot de passe).
- choisir si votre Raspberry Pi doit démarrer sur un terminal (mode console où vous n'utiliserez que le clavier) ou sur un bureau "classique" avec une interface graphique (où vous utiliserez plus la souris) : "Enable Boot to Desktop" (à terme il sera préférable d'avoir un démarrage en mode console qui consomme moins de ressources, mais pour les réglages il peut être agréable de démarrer sur le bureau, sélectionnez "yes" si vous souhaitez que ça soit le cas).
- choisir la langue utilisée : "Internationalisation Options" (aide détaillée dans le paragraphe suivant).
- overclocker le Raspberry Pi pour qu'il soit plus puissant : "Overclock" (aide détaillée dans le paragraphe d'après).
- régler d'autres détails : "Advanced Options" en particulier gérer la répartition de la mémoire RAM entre le processeur (CPU) et le processeur graphique (GPU) "Memory Split" (il est recommandé d'allouer au moins 64 ou 128 Mo au GPU si vous comptez faire tourner des émulateurs, personnellement j'ai alloué 128 Mo).

Le menu et les choix proposés sont pour la plupart assez clairs, aussi je ne détaillerai pas tout.
Les seules choses qui ne sont pas très intuitives sont les réglages des options de langue :
Pour mettre le Raspberry Pi en français (ce qui devrait normalement mettre le clavier en AZERTY) il faut :
- aller dans "Internationalisation Options"
- sélectionner "Change Locale"
- attendre un peu que la liste des langues disponibles soit générée
- dans la (très longue) liste déroulante aller sur "fr_FR.UTF8 UTF8" et appuyer sur la touche "espace" pour la sélectionner
- valider avec la touche "entrée"
- dans la liste proposée, choisir "fr_FR.UTF8" et valider à nouveau avec "entrée"
- attendre que la configuration se fasse.
Pour utiliser un clavier spécifique il faut :
- aller dans "Internationalisation Options"
- sélectionner "Change Keyboard Layout"
- attendre la génération de la liste des configuration disponibles
- sélectionner votre clavier dans la liste proposée (ou ce qui s'en rapproche le plus).

Concernant l'overclocking, tout dépend des jeux que vous voudrez faire tourner, pour des jeux un peu "gourmands", comme Metal Slug par exemple, il sera nécessaire d'overclocker le Raspberry Pi si vous voulez espérer jouer sans trop de latence, mais cela veut aussi dire qu'il chauffera davantage (et donc s'usera plus vite).
Par défaut le Raspberry Pi propose 5 sets de pré-réglages allant de "None" (aucun overclocking) jusqu'à "Turbo" (qui transformera sans doute votre machine en plaque de cuisson).
Pour une utilisation standard je recommande de prendre le pré-réglage "Modest" (800 MHz ARM, 250 MHz core, 400 Hz SDRAM, 0 overvolt) qui ne devrait pas trop chauffer.
Pour des jeux un peu plus gourmands, le pré-réglage "Medium" (900 MHz ARM, 250 MHz core, 450 Hz SDRAM, 2 overvolt) devrait être suffisant (c'est celui que j'ai choisi).
À noter que tant que l'overclocking reste en dessous de 1000 MHz, normalement cela n'annule pas la garantie que vous avez sur l'appareil.

Une fois la configuration terminée, sélectionnez "Finish" avec les flèches du clavier, et vous arriverez sur le bureau.

Le bureau propose des icônes et des raccourcis accessibles à la souris.

Si vous n'y connaissez rien de rien à Linux


Voici quelques informations (mais il existe déjà des tonnes de documentations officielles des différentes distributions et de tutoriels très bien faits que vous pouvez trouver facilement sur internet et qui seront mille fois plus complet que ce que je vais mettre ici).

Sur Linux, vous pouvez faire toutes les actions dans un terminal en ligne de commande.
Pour lancer un terminal depuis le bureau, cliquez simplement sur l'icône associée :

Vous pouvez lancer un terminal en cliquant dessus.

Pour lancer l'interface graphique avec le bureau depuis le mode terminal (si vous avez désactivé l'interface graphique au démarrage par exemple) tapez la commande :
startx
et validez avec la touche "entrée".

Voici une liste (non-exhaustive) des commandes usuelles dont vous pourrez avoir besoin :
- ls : permet d'afficher la liste des fichiers et dossiers dans le répertoire où vous vous trouvez.
- ls -a : idem, mais affiche également les fichiers cachés.
- cd : permet de changer de dossier, tapez cd suivi d'un espace et du nom du dossier dans lequel vous souhaitez vous rendre (la touche "tabulation" vous permet de compléter automatiquement le nom du dossier si vous avez tapé les premières lettres), pour revenir au dossier précédent tapez cd ..
- mv : permet de déplacer un fichier d'un endroit à un autre, tapez mv suivi d'un espace et du nom du fichier à déplacer puis d'un autre espace et du nouvel emplacement où vous souhaitez le mettre
- rm : permet d'effacer un fichier, tapez rm suivi d'un espace et du nom du fichier à effacer.
- mkdir : permet de créer un dossier vide, tapez mkdir suivi d'un espace et du nom du dossier à créer.
- rmdir : permet d'effacer un dossier vide, tapez rmdir suivi d'un espace et du nom du dossier à effacer.
- nano : permet d'ouvrir un fichier avec l'éditeur de texte nano (ce qui vous permettra de voir et de modifier son contenu), tapez nano et le nom du fichier à ouvrir.
- apt-cache search : permet de chercher un mot clef dans la liste des logiciels "connus" de la distribution (ceux que vous pourrez installer très facilement si vous êtes connecté à internet). Par exemple pour chercher un émulateur tapez apt-cache search emulator.
- sudo apt-get install : permet d'installer un logiciel depuis les sources connues de la distribution. Par exemple pour installer le jeu moon-lander tapez sudo apt-get install moon-lander.
- man : affiche le manuel d'une commande ou d'un programme, tapez man suivi du nom de ce dont vous voulez voir le manuel. Par exemple, pour accéder au manuel de la commande ls tapez man ls.

Pour le reste, je détaillerai au fur et à mesure ce dont on aura besoin au moment où on en aura besoin.

Les problèmes que vous risquez de rencontrer


Voici une liste non-exhaustive des problèmes que vous pouvez rencontrer, et comment les résoudre :
  • Tout mon écran n'est pas utilisé il reste des bandes noires sur le tour : dans le menu de configuration, allez dans "Advanced Options" et changez le paramètre "Overscan".
  • Je n'ai pas de son : premier réflexe à avoir, branchez des écouteurs sur la prise jack pour voir si vous avez du son de cette façon. Si c'est le cas pour certains écrans, le Raspberry Pi croit qu'il est connecté en DVI au lieu du HDMI (et donc il n'y a pas de son, puisque le DVI ne transmet que l'image), il faut donc le forcer à se comporter comme s'il était branché en HDMI. Pour cela, ouvrez le fichier config.txt qui se trouve dans le dossier /boot/, par exemple en tapant sudo nano /boot/config.txt et décommentez la ligne sur laquelle il est marqué "hdmi_drive=2" (supprimez le # qui se trouve devant). Quittez en pressant "contrôle + X" et répondez Oui lorsqu'on vous demande si vous voulez sauvegarder les changements effectués. Cela devrait résoudre le problème. 

Installer des émulateurs


Il existe différents émulateurs pour Linux, dont certains sont spécialement conçus pour le Raspberry Pi. Malheureusement, peu sont disponibles avec la commande apt-get dont je parle plus haut, et certains peuvent être compliqués à installer.

J'ai choisi d'installer mame4all pour les jeux d'arcade (basé sur MAME 0.37b5) et PiSnes pour les jeux Super Nintendo (basé sur Snes9x 1.39). Ils ont l'intérêt d'être très faciles à installer et rapides à configurer.

Pour installer mame4all, le plus simple est de vous rendre sur le Pi Store via l'icône du bureau (vous devez être connecté à  internet, pour cela le plus simple est de connecter le Raspberry Pi à votre box internet à l'aide d'un câble Ethernet) :

Vous pouvez lancer le Pi Store en cliquant dessus.

Il vous suffit alors de vous créer un compte, de taper "mame" dans la barre de recherche, et de sélectionner "mame4all" pour l'installer.

Pour installer PiSnes, il vous suffit de vous rendre sur la page officielle du projet : PiSnes
De cliquer sur l'onglet "Downloads" (en haut à gauche), de télécharger le dossier .zip, de le dézipper et de le mettre où vous voulez dans les dossiers de votre Raspberry Pi. (Personnellement, je l'ai mis dans "/home/pi/" dans un sous-dossier "PiSnes").

Cette étape peut être faite sur votre ordinateur usuel, et dans ce cas il vous suffit de le transférer sur votre Raspberry Pi via une clef USB, mais vous pouvez également le faire directement depuis le Raspberry Pi connecté à internet (en le branchant à votre box internet avec un câble Ethernet par exemple) en utilisant un navigateur web tel que Midori :

Vous pouvez aller sur internet en cliquant sur cette icône.

Pour dézipper le fichier, il vous suffit d'aller le chercher dans le gestionnaire de fichiers (qu'on peut lancer en cliquant sur la 2ème icône dans la barre de lancement rapide en bas à gauche de l'écran) et de faire un clic droit sur le fichier zippé puis de sélectionner l'option pour le dézipper : 

Cliquez sur la deuxième icône pour lancer le gestionnaire de fichiers.

Une fois que vous avez des émulateurs, il vous faut des ROMs pour faire fonctionner les jeux N'oubliez pas que pour pouvoir utiliser une ROM légalement vous devez soit posséder le jeu original, soit attendre que le copyright qui lui est lié ait expiré (vous pouvez avoir une liste de jeux "libérés" ici).
Faites bien attention à prendre des ROMs compatibles avec la version de l'émulateur que vous avez. En particulier pour MAME, la version 0.37b5 est ancienne, et toutes les ROMs ne seront pas compatibles (mais en cherchant un peu, vous pourrez même trouver un zip des 2270 jeux compatibles avec la version 0.37b5 de MAME).
Pour mame4all placez vos ROMs dans le dossier
/usr/local/bin/indiecity/InstalledApps/mame4all_pi/Full/roms/.
Pour PiSnes placez vos ROMs dans le sous-dossier "roms" du dossier où vous l'avez mis.

Configuration pratique


Pour l'instant lancer les émulateurs n'est pas très pratique.
Pour lancer mame4all vous devez passer par le Pi Store, et pour lancer PiSnes vous devez aller le chercher dans son dossier à l'aide du gestionnaire de fichiers.

Pour permettre de les lancer depuis la console, et de façon simple, nous allons créer deux mini-scripts shell qui se rendent dans le bon dossier et lancent les émulateurs.

Pour créer un script, lancez le logiciel "Leafpad" en allant le chercher dans le menu "démarrer" de la barre de lancement rapide (en bas à gauche de l'écran).

Cliquez sur l'icône la plus à gauche de la barre de lancement rapide, puis choississez "accessoires" et "leafpad".

S'ouvre alors un fichier texte vierge.

Pour le script pour lancer mame4all écrivez :
# !/bin/bash
cd /usr/local/bin/indiecity/InstalledApps/mame4all_pi/Full
./mame
Puis enregistrez le script où vous voulez (personnellement je mets mes scripts dans le dossier "/usr/local/bin/") en lui donnant un nom explicite suivi de ".sh" (par exemple "mame4all.sh").

Pour le script pour lancer PiSnes écrivez :
# !/bin/bash
cd /home/pi/PiSnes
./snes9x.gui
En remplaçant éventuellement "/home/pi/PiSnes" par le chemin du dossier où vous avez mis PiSnes.
Puis enregistrez le script au même endroit que le précédent et en lui donnant un nom explicite finissant par ".sh" (par exemple "PiSnes.sh").

Ces deux scripts sont très simples, ils demandent juste au terminal de se rendre dans le dossier qui contient l'émulateur voulu, et de le lancer.

Il faut maintenant les rendre exécutables pour pouvoir les lancer facilement dans un terminal. Pour cela, ouvrez un terminal et rendez-vous dans le dossier où vous les avez enregistrés (cd /usr/local/bin si vous les avez mis dans le dossier "/usr/local/bin") et tapez :
sudo chmod +x nom_du_script.sh
En remplaçant évidemment "nom_du_script.sh" par le nom de votre script ! (ici encore, la touche tabulation vous permet de faire l’auto-complétion si vous avez tapé les premières lettres du nom du script).

Maintenant, il vous faut rajouter le dossier qui contient vos scripts à la liste des chemins connus par votre Raspberry Pi. Pour cela, il faut rajouter une ligne dans le fichier ".bashrc" qui se trouve dans votre dossier "/home/pi/". Comme c'est un fichier caché, si vous passez par le gestionnaire de fichier vous aurez sans doute à lui demander d'afficher les dossiers cachés (en faisant "clic droit" et en cochant l'option adéquate).

Faites clic droit et cocher "Montrer les fichiers cachés".

Faites ensuite un clic droit sur le fichier ".bashrc" et ouvrez-le avec Leafpad (vous pouvez aussi lancer Leafpad et faire "ouvrir" puis aller chercher le fichier .bashrc). Allez à la fin du document et rajoutez :
export PATH=$PATH:/usr/local/bin
En remplaçant éventuellement "/usr/local/bin" par le chemin du dossier où vous avez enregistrés vos scripts.

Maintenant, il vous suffira de taper le nom de votre script dans la console pour le lancer.
Par exemple, tapez : mame4all.sh et vous lancerez directement l'émulateur MAME (vous aurez alors accès à la liste des roms présentes).

Comme taper le nom du script est encore trop long, nous allons créer des alias afin qu'une simple commande lance le script. Pour cela, rouvrez le fichier .bashrc à l'aide de Leafpad et ajoutez :
alias a='mame4all.sh'
alias b='PiSnes.sh'
Cela fera que la commande a tapée dans un terminal, lancera le script mame4all.sh, et que la commande b lancera PiSnes.sh.

Vous êtes bien sûr libres de mettre les alias que vous souhaitez. Et il peut-être une bonne idée de créer un alias pour éteindre ou rebooter rapidement le Raspberry Pi depuis la console.
Par exemple :
alias xx='sudo halt'
alias aza='sudo reboot'
Ce qui fait que la commande xx éteindra le Raspberry Pi, et que la commande aza le refera redémarrer.

L'intérêt de mettre des alias courts, est que vous pourrez les entrer à l'aide de quelques boutons uniquement (pour peu que vous ayez mappé les boutons sur les lettres du clavier que vous utilisez dans vos alias).

La dernière étape consiste à faire que le Raspberry Pi démarre sans demander de mot de passe (je supposerai à partir de maintenant que vous avez configuré votre Raspberry Pi pour qu'il démarre en mode console et non pas sur le bureau, comme expliqué dans le premier paragraphe) :
- tapez la commande sudo nano /etc/inittab
- descendez jusqu'à trouver la ligne où il est marqué 1:2345:respawn:/sbin/getty 115200 tty1
- commentez- la en écrivant un # devant
- écrivez sur la ligne en dessous 1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1
-  faites "contrôle + X" pour quitter et répondez Oui lorsqu'on vous demande si vous voulez sauvegarder.

À noter que le "pi" qui apparaît dans la ligne à rajouter correspond au nom de la session qui se lancera au démarrage (par défaut le nom d'utilisateur est "pi" sous Raspbian). Si vous avez changé le nom de l'utilisateur (par exemple si vous avez créé un autre compte utilisateur), remplacez "pi" par le nom que vous avez choisi.

Voilà, votre Raspberry Pi est configuré pour fonctionner uniquement à l'aide d'un joystick et de boutons qui simuleront des touches du clavier (nous verrons dans le prochain article comment faire pour que les boutons du joystick soient reconnus comme des touches de clavier par le Raspberry Pi).

Configurer les émulateurs mame4all et PiSnes


Pour configurer mame4all, il vous suffit d'appuyer sur la touche "tabulation" une fois un jeu lancé, et de configurer les touches depuis en choisissant "Configure General Input" (sélectionnez une commande dans la liste avec "entrée" puis appuyez sur la touche que vous souhaitez utiliser pour réaliser cette commande).

Pour configurer PiSnes, il vous suffit d'ouvrir le fichier "snes9x.cfg" qui se trouve dans le dossier où vous avez mis PiSnes et d'éditer les numéros qui correspondent aux différentes touches. Vous trouverez la liste des numéros correspondants aux différentes touches ici.

Personnellement, j'ai configuré de la façon suivante (à gauche la touche du clavier, et à droite la fonction dans l'émulateur) :
  • Pour Mame :
    - Entrée = Player 1 Start
    - Retour arrière = Player 1 Coin
    - A = Player 1 Button 1
    - B = Player 1 Button 2
    - C = Player 1 Button 3
    - X = Player 1 Button 4
    - Y = Player 1 Button 5
    - Z = Player 1 Button 6
    - F1 = increase frameskip (cette option permet de "sauter" un certain nombre d'images si le jeu est trop gourmand et que l'émulateur peine à le faire fonctionner à pleine vitesse)
    - Espace = Pause
  • Pour PiSnes :
    - Entrée = Start
    - Retour arrière = Select
    - A = A button
    - B = B button
    - C = L button
    - X = X button
    - Y = Y button
    - Z = R button
    - Espace = turbo
Et j'ai donc mappé les boutons du joystick sur les touches du clavier A, B, C, X, Y, Z, Espace, Entrée, Retour Arrière, F1 et Echap (pour quitter), et les directions du Joystick sur les flèches de direction (comme je l'ai déjà mentionné, nous verrons dans l'article suivant comment faire ça).