Jump to content

  • Log In with Google      Sign In   
  • Create Account

Le Journal de Yahiko

Formalistes et Zinesters : Pourquoi le formalisme n'est pas l'ennemi (2/3)

Posted by , in Game Design 20 August 2013 - - - - - - · 498 views

Cet article est une traduction autorisée de la deuxième partie de celui-ci : Formalists and Zinesters: Why Formalism Is Not The Enemy (Tadhg Kelly)

Dans quel domaine

Concernant les jeux de rôles autour d'une table, l'idée de changer le sens du mot "jeu" en pensant que le reste du monde suivra et validera cette révolution, n'était que de l'aveuglement. Le concept de "jeu" n'a pas changé pour les non-initiés, et au lieu de cela il a été rattrapé par son prédécesseur, plus important et plus ancien. Sous une forme numérique, je crains que les Zinesters fassent exactement la même erreur.

En tant que mec blanc souvent indécis à qui il arrive d'écrire quelque peu sur les jeux, j'ai récemment rencontré beaucoup de résistances autour de l'idée de ce que sont les jeux. Ces arguments ont tendance à se résumer à "vous n'aimez pas ce jeu", "il n'est pas fait pour vous", "il s'est vendu à X exemplaires" ou encore "vous détestez secrètement les jeux en général". Je suppose que je dois m'attendre à ce genre de réaction, étant donné que je suis assez franc. Je dis souvent que les manières les plus efficaces pour mettre en valeur l'art des jeux (thauma) doivent provenir du langage même des jeux, ce qui permet des choses au concepteur et en empêche d'autres d'une certaine façon. J'ai tendance à prendre le parti du joueur, concernant la nécessité pour les jeux d'être dynamiques afin de construire un univers crédible.

Je suis aussi connu pour avoir dit que certaines œuvres interactives ne sont pas des jeux. Je ne considère pas, par exemple, que Dear Esther soit un jeu, ni Proteus. Je ne pense pas que The Passage soit un jeu, ni The Stanley Parable et encore moins les réalisations de Tale of Tales. Je les considère essentiellement des performances artistiques ludifiées.

Dans son propre domaine, l'art peut être très puissant. Cependant, vue à partir d'un autre domaine, l'art peut amener à des comparaisons malheureuses. Selon la façon dont vous la considérez, la Fontaine de Marcel Duchamp est soit une œuvre incontournable de l'art moderne ou un exemple d'arnaque. De même, en considérant l'art interactif sur la base d'un jeu, cela dévalorise grandement ce dernier. "Proteus" est peut-être intéressant, pourrait-on dire, mais ce n'est pas très amusant. L'art interactif comme "Proteus" tente par tous les moyens d'attirer l'attention (traction) au-delà du monde académique, de certaines sections de Steam, des publications pour intellos ou de conférences comme la GDC, parce que l'étiqueter en tant que "jeu" invite à la comparaison avec notre compréhension habituelle de jeu qui se base sur la pratique pour progresser.

Les Zinesters demandent à ce que leur travail soit considéré sans distinction avec les jeux vidéo occasionnels ou pour les passionnés hardcore, les puzzles, les mots croisés, les sports, les Jeux Olympiques, la Coupe du Monde, les casinos de Las Vegas et ainsi de suite. En outre, le manque d'amusement issus de leur œuvre conduit à des réactions négatives (comme cette revue satirique de Super PSTW), qui à son tour conduit leurs créateurs à l'incompréhension ou à la défiance envers les "mecs d'un certain genre" qui les réduiraient au silence délibérément. Selon ces créateurs, le "jeu" ne se transformera pas pour les accepter à cause d'un patriarcat effrayé / incertain / résistant.

Et cela est vrai pour de nombreuses réalisations artistiques ludifiées. Beaucoup d'entre elles sont difficiles, pertinentes ou intéressantes, mais elles ne font au final que se mettre elles-mêmes à l'écart en voulant être considérées comme des jeux. Leur gameplay a tendance à être limité. Elles ont tendance à être soit unidirectionnel ("Ceci est mon message") ou sans direction ("juste se promener"). Elles ont tendance à avoir l'air intéressantes en tant que concepts de hauts niveaux pour les discours de la GDC. Pourtant, ce ne sont pas des jeux.


Les formes et les appellations de l'interaction

Le fait que le livre La Couleur Pourpre d'Alice Walker existe signifie autant en tant que roman que ce qu'il raconte. Pour certains concepteurs c'est essentiellement la même chose avec les jeux. "Rise of the Videogame Zinesters" avance l'argument que parce que les jeux sont faits pour la plupart par des geeks mâles et blancs pour des geeks mâles et blancs, ils ont tendance à être mono-culturels. Des hommes musclés tirant sur d'autres hommes musclés est le plat de résistance, et les femmes ont tendance à être soit des remplaçantes d'hommes dans ce scénario, ou reléguées. Il y a très peu d'avatars de femmes homosexuels dans les jeux.

Je suis plutôt d'accord. Les blockbusters ont tendance à être mono-culturels et mettent en scène beaucoup de personnages masculins. Pourtant, dans le même temps, répondre à ces questions sur "ce qu'est un jeu" - tout en exigeant que la moindre œuvre interactive et artistiquement expressive soit considérée comme un jeu - n'est pas fondée.

Le roman est un format de récit, pas un sceau de légitimité. Le roman d'Alice Walker est autant un roman qu'un d'Honoré de Balzac, car ils sont deux exemples du même format général (une forme longue d'histoires en arcs narratifs avec différents niveaux de lecture, etc.). Le débat sur la reconnaissance d'un type de roman sur un autre est généralement séparée du débat de si oui ou non il s'agit d'un roman (même si, certes, quelques œuvres modernistes et postmodernistes ont délibérément essayé de jouer avec le format) .

Le bateau ivre est un poème. Un poème a un format, un type de structure et une expression différents d'un roman. Nous pouvons facilement comprendre et accepter que la poésie et les romans soient deux types d'écriture distincts, et afin de maintenir l'attention et l'intérêt du lecteur, chacune d'elles fonctionne selon ses propres règles. De même, nous pouvons voir que la nouvelle, le scénario, la bande dessinée, la pièce de théâtre ou la chanson ont également leurs propres exigences. Aucun de ces formats n'est plus ou moins valable qu'un autre. Les romanciers ne passent pas tout leur temps à souhaiter que les poètes les acceptent parmi eux.

Ce que les Zinesters les plus revendicatifs semblent vouloir c'est comme si Rimbaud exigeait que Le "bateau ivre" soit reconnu comme un roman. Pour quelques raisons, ils estiment que "jeu" signifie "valide, légitime, être accepté", comme quelque chose à reprendre de hautes luttes des mains des mecs blancs.

Ce qui me fascine, c'est combien cela est en soi une reconnaissance tacite que (malgré tous les arguments contraires) apparemment les étiquettes importent aux Zinesters. Si le Zinestérisme était vraiment uniquement une expression de soi, ce que pensent les formalistes n'aurait pas d'importance. Bien que ce puisse être un idéal d'exister dans un monde fédéré, libre à la publication où l'on puisse faire ce que l'on veut, un monde au-delà des étiquettes et des catégories, le Zinestérisme est obsédé par l'obtention d'une appellation particulière. Il semble tourner autour de la volonté d'avoir une légitimité accordée de gré ou de force, ce que je trouve contre-productif.

La question de la dénomination est également celle qui existe uniquement dans le monde des Zinesters. En dehors de celui-là, tout le monde s'en contrefiche. Dans le monde de tous les jours, un "jeu" est un nom qui décrit une façon de jouer. Le "jeu" signifie sport, puzzle, tâche, problème et test. Les jeux peuvent être gagnés ou perdus. Les jeux peuvent être pratiqués. Les jeux peuvent aider à la compréhension et à l'éveil émotionnel, peuvent engendrer des héros et des engouements culturels, mais ils le font à travers des constantes créatives. Ils doivent opérer sous la satisfaction de gagner tout en maîtrisant la dynamique du jeu équitable.

Sinon, en tant que jeux, ils ne fonctionnent pas vraiment. Et les critères de jugement pour expliquer pourquoi il en est ainsi ne viennent pas du patriarcat ou de groupuscules obscurs, mais des joueurs. Si un jeu n'est pas amusant, il n'est tout simplement pas joué longuement, quel que soit son intention. Les jeux sont faits pour être joué. Mais rien de tout cela n'est vrai concernant l'art de la performance interactive si le joueur sait que ce n'est pas destiné à être un jeu.

Mais alors comment transmettre cette intention ?

La troisième partie en français est disponible ici : Formalistes et Zinesters : Pourquoi le formalisme n'est pas l'ennemi (3/3)


Développer son premier jeu Web (partie 1)

Posted by , in Développement 18 August 2013 - - - - - - · 778 views
développement, jeux, typescript and 5 more...
Mise en place de l'environnement de travail

Prérequis :
  • Windows XP ou supérieur
  • 2,5 Go d'espace disque dur

(0.1)

Sommaire :
  • Introduction
  • Choix du langage et de la plateforme
  • Visual Studio Express 2012 for Web
  • TypeScript
  • Création du premier projet
  • jQuery
  • Git for Windows
  • Personnalisation de Visual Studio
  • L'alternative Notepad++
  • Conclusion

(0.2)


1. Introduction
Quand on souhaite développer un jeu en tant qu'amateur, tout débute souvent par une idée originale ou simplement une envie venue à maturité qui nous pousse à franchir le pas et à nous lancer dans un projet de développement. Cependant, passé cette première étape, la réalité du concret reprend ses droits et on se pose fatalement de nombreuses questions : choix du langage, choix de la plateforme, choix des bibliothèques logicielles ou du moteur de jeux, etc. On peut se sentir assez facilement perdu, et à raison, tant ce n'est pas le manque d'innovations qui guettent l'industrie du logiciel de nos jours.

C'est pourquoi, après avoir moi-même tâtonné longtemps à chercher des outils et des solutions, cet article se veut une petite introduction pour partir sur des bases suffisamment stables dans un projet de développement qui comportera suffisamment de problèmes pour ne pas perdre inutilement du temps sur des questions de simple organisation mais qui ont leur importance si elles ne sont pas prises en compte.


2. Choix du langage et de la plateforme
Choisir une technologie plutôt qu'une autre est toujours matière à débats et à controverses. Ici, nous ne chercherons pas à justifier par A+B les choix faits, l'important étant d'obtenir au final un jeu qui fonctionne dans un délai raisonnable.

Nous opterons dans le cadre de cette discussion pour la plateforme Web, à savoir les principaux navigateurs du marché. Cela aura l'avantage d'avoir un jeu qui pourra tourner sur de nombreuses architectures techniques (Windows, Linux, Mac, Android, iOs, etc.) sans retoucher à la moindre ligne de code. Concernant le langage de nombreux choix sont possibles comme les moteurs de jeu tel Unity ou Unreal Engine, mais même si ces derniers sont reconnus actuellement dans le domaine des jeux vidéo, il n'en est pas de même dans l'industrie du logiciel prise dans son ensemble.

Nous partirons du postulat que parmi les motivations à développer un jeu, on peut trouver celle de vouloir apprendre ou se perfectionner dans l'activité même du développement pour un usage généraliste. C'est la raison pour laquelle choisir un moteur de jeux propriétaire ne nous aidera pas forcément à acquérir des connaissances utiles dans le monde de l'entreprise, qui recherche plus des compétences sur l'informatique de gestion.

Pour un jeu Web, si nous excluons donc les moteurs de jeux (et à fortiori les outils de création de jeux comme Game Maker ou RPG Maker) pour une raison de ré employabilité des connaissances ainsi apprises à travers un tel projet, un langage comme Javascript vient immédiatement à l'esprit, et à juste titre.

Javascript qui a connu une montée en puissance ces dernières années grâce aux travaux de normalisations du HTML et des CSS, est actuellement la pierre angulaire du Web dynamique. Tout ou presque est possible avec Javascript. Pour s'en convaincre, j'invite les lecteurs à consulter le projet Epic Citadel et ce qui se fait autour des technologies Emscripten et Asm.js.

Néanmoins, malgré un Javascript pratiquement incontournable dès qu'une application concerne le Web, traîne encore l'héritage de son passé. Jadis conçu pour apporter une petite dose d'intelligence à des sites Web sous la forme de quelques lignes de codes, ce sont aujourd'hui des applications de plusieurs dizaines, voire centaines de milliers de lignes qui sont écrites en Javascript. Ce qui pose quelques problèmes de débogage à cause entre autre de son typage dynamique et aussi des problèmes d'architecture logicielle par l'absence de réelle notion de Programmation Orientée Objet, remplacée dans Javascript par la notion puissante de prototype, mais néanmoins différente.

Ceci étant dit, même si notre projet ne sera pas un monstre d'ingénierie logicielle, il y a fort à parier qu'il dépassera la dizaine de milliers de ligne de code (en comptant les commentaires). Ce qui risque de poser un petit souci de confiance envers le code produit ainsi que des dizaines et des dizaines d'heures perdues à debugger une erreur qui aurait été détectée à la compilation dans un langage de type C/C++.

Il existe actuellement deux principales alternatives intéressantes au Javascript pur qui sont CoffeScript et TypeScript. Ce sont tous deux des langages qui permettent de compiler le code source, typé et orienté objet, vers du Javascript, permettant ainsi de retomber sur nos pieds avec un code résultant en Javascript, interprétable sur tous les navigateurs.

Sans rentrer dans une guerre de religion pour l'un ou pour l'autre, nous choisirons ici le langage TypeScript qui est certain un peu moins mature que CoffeScript, mais a pour avantage d'être un sur-ensemble de Javascript (autrement dit, du code Javascript natif est directement reconnu sous TypeScript, ce qui n'est pas le cas de CoffeScript), c'est un projet Open Source dont le code est accessible à tous, et a été créé par le papa de C# qui travaille chez Microsoft ce qui est un gage de sérieux quoiqu'on en dise.

Le principal défaut de TypeScript est sa relative jeunesse, puisque le langage est toujours au stade de développement, même si une version de production est prévue d'ici la fin de l'année, ce qui restreint à l'heure actuelle les outils prenant en charge ce nouveau langage qui reste néanmoins promis à se pérenniser.

Pour tirer pleinement parti des possibilités de ce langage, papa de C# oblige, il nous faudra installer Visual Studio si vous ne l'avez pas déjà.


3. Visual Studio Express 2012 for Web

Visual Studio est un environnement de développement intégré (IDE) très populaire mis au point par Microsoft qui supporte nativement les principaux langages de l'éditeur (C#, ASP, J#) ainsi que le Javascript. Ce logiciel est payant et relativement onéreux pour une activité en amateur, mais heureusement il existe une version gratuite, Visual Studio Express, qui est cependant bridée avec notamment une restriction à un seul langage et une limitation dans l'ajout de modules complémentaires. Malgré tout, cela sera amplement suffisant pour nos besoins.

Il est recommandé de faire attention à bien télécharger la version anglaise et non pas française de Visual Studio, du fait d'un bug sur la localisation de la dernière version de TypeScript 0.9.1.

Téléchargez Visual Studio Express 2012 for Web - English

Ceci téléchargera l'image ISO de Visual Studio Express 2012 for Web - English, et pour lancer l'installation proprement dire, il vous faudra soit graver sur un CD ou bien utiliser un logiciel de virtualisation tel Virtual Clone Drive dont on pourra trouver des tutoriels sur la toile tel que celui-ci.

A noter aussi que l'installation nécessite plus de 2 Go d'espace libre sur votre disque dur.

Laissez-vous guider par la procédure d'installation, simple mais assez longue, en restant sur les choix par défaut.


4. TypeScript

Une fois Visual Studio Express 2012 for Web installé, ainsi que les mises à jour de base et l'obtention d'une clé d'enregistrement pour usage privé, nous pouvons installer TypeScript.

Pour rappel, TypeScript est un langage fortement typé avec une syntaxe orientée-objet plus conventionnelle que celle du Javascript, et qui permet de générer au final du Javascript afin d'être interprété par tous les navigateurs.

L'avantage de ce langage réside en partie sur le fait que c'est un sur-ensemble du Javascript et ce qui lui permet d'accepter nativement n'importe quel code Javascript.

Téléchargez le plugin TypeScript 0.9.1 pour Visual Studio

A noter que si vous avez installé une version différente que la version anglaise de Visual Studio Express 2012 for Web, alors le plugin de TypeScript ne fonctionnera pas.


5. Création du premier projet

Armés désormais de Visual Studio et de son plugin TypeScript, nous voilà prêt pour créer notre projet dans l'outil de développement.

Il faut tout d'abord savoir que Visual Studio fait une distinction logique entre la notion globale de solution et celle de projets qui sont des composants d'une solution. Tout au long de ce guide, le mot projet en italique, désignera la notion spécifique à Visual Studio, tandis que le mot projet sans mise en forme en italique désignera la définition du langage courant, à savoir développer un jeu vidéo. La notion de solution est pour le moment facultative, car étant surtout nécessaire dans le cadre de grandes applications d'entreprise.

Pour créer un projet, cliquez sur le menu FILE > New Project, ou bien appuyez sur CTRL + MAJ + N. Une fenêtre de dialogue telle que ci-dessous devrait apparaître :

Posted Image

(5.1)

Puis saisissez les informations nécessaires dans les champs suivants :
Projet : PremierJeuVideo
Location : C:/Users/VotreCompte/Dev

Si vous n'avez pas de sous-répertoire Dev dans votre répertoire utilisateur dédié, je suppose que vous ne vous êtes pas connecté en Administrateur, alors Visual Studio le créera pour vous.

Veillez aussi à ce que l'option Create directory for solution soit décoché afin d'éviter de rajouter un niveau d'arborescence inutile.

Une fois la fenêtre de création de projet validée, vous pouvez ignorer la fenêtre suivante à propos du Team Foundation Server. Cela peut être éventuellement utile dans le cadre d'un projet en équipe, mais je suppose aussi que vous réalisez votre projet en solo.

Nous allons maintenant mettre en place une arborescence type qui nous permettra de ranger les multiples fichiers qui seront impliqués pour ce projet. Le but est au final d'obtenir l'arborescence minimale suivante :
PremierJeuVideo
  \-- art
  |     \-- interface
  |     \-- sounds
  +-- doc
  |     \-- private
  |     \-- public
  \-- lib
  \-- src
  \-- tools

(5.2)

Voici un rapide descriptif des répertoires de cette arborescence :
  • art : ensemble des éléments artistiques du projet
  • art/interface : ensemble des éléments d'interface utilisateur
  • art/sounds : musiques et bruitages
  • doc : documentation du projet
  • doc/private : documentation interne
  • doc/public : documentation utilisateur
  • lib : bibliothèques Javascript personnalisée
  • src : sous-projets contenant les fichiers sources
  • tools : utilitaires divers facilitant la gestion du projet

(5.3)

Il est entendu que cette arborescence n'est pas complète. Elle sera complétée au fil des développements, notamment le répertoire "src" pour le moment vide.

La création de cette arborescence peut se faire à travers le panneau Solution Explorer qui devrait apparaître par défaut à droite.


Posted Image

(5.4)

A l'aide d'un clic droit sur l'élément PremierJeuVideo désignant la racine du projet, un menu contextuel devrait apparaître où vous pouvez choisir l'option Add > New Folder. De cette façon vous pourrez créer simplement l'arborescence du projet au sein de Visual Studio.


6. jQuery

S'il y a un framework incontournable pour qui veut développer en Javascript, c'est bien jQuery développé et maintenu par Google.

Néanmoins, pour l'intégrer à nos développements TypeScript, il convient de générer un fichier d'interfaçage pour TypeScript afin que le compilateur puisse vérifier le typage de votre code utilisant jQuery.

Pour récupérer en local le framework jQuery ainsi que le fichier d'interfaçage TypeScript, c'est très simple, il suffit d'utiliser le module NuGet intégré à Visual Studio. Pour cela, dans le panneau Solution Explorer comme dans le paragraphe précédent, cliquez droit sur l'élément racine du projet PremierJeuVideo puis cliquez sur l'option Manage NuGet Packages.

Après une phase de chargement, voici le type d'écran qui devrait s'afficher :


Posted Image

(6.1)

Le package jQuery devrait arriver en tête de liste. Si ce n'est pas le cas, vous pouvez le rechercher à l'aide de la zone de recherche en haut à droite. Cliquez sur le bouton Install.

En l'état, jQuery est opérationnel pour qui veut programmer en Javascript, mais comme dit précédemment, il a besoin d'un complément pour que TypeScript puisse l'exploiter.

Dans le champ de saisie de recherche en haut à droite, tapez : jquery.Typescript.DefinitelyTyped

Puis cliquez sur le bouton Install sur l'élément correspondant à notre recherche (en principe le premier) dans la zone principale de la fenêtre

A l'issue de cette étape, nous venons d'installer avec succès jQuery pour TypeScript.


7. Git for Windows

Un cycle de développement n'est jamais linéaire et gérer manuellement les versions de ses fichiers sources quand ceux-ci se multiplient peut se révéler un véritable casse-tête.

Pour répondre à ce problème aussi ancien que la programmation, les développeurs ont mis au point des outils pour gérer les modifications apportées aux fichiers sources. Il en existe de nombreux qui se regroupent sous l'appellation CVS (Control Version System). Nous utiliserons l'un d'entre eux qui se nomme Git for Windows qui a l'avantage d'être simple à utiliser et compatible avec la solution d'hébergement de sources en ligne GitHub.

Téléchargez Git for Windows

Lors de l'installation, il est recommandé de laisser toutes les options par défaut.

Une fois installé, nous allons indiquer à Git d'utiliser le répertoire de la solution précédemment créée avec Visual Studio en cliquant sur l'option Créer un nouveau dépôt.

Dans la zone de saisie, tapez le répertoire du projet que vous avez créé avec Visual Studio précédemment : C:/Users/VotreCompte/Dev/PremierJeuVideo



Posted Image

(7.1)

Indiquons maintenant à Git de suivre les modifications de tous les fichiers du projet en les sélectionnant tout d'abord :
  • mettre en surbrillance le tout premier élément de la liste en haut à gauche,
  • faire défiler l'ascenseur pour parvenir tout en bas,
  • maintenir la touche MAJ et cliquer sur le dernier élément.

(7.2)

Une fois tous les fichiers sélectionnés, nous pouvons en demander l'indexation de trois façons :
  • En sélectionner dans le menu Commit > Indexer
  • En cliquant sur le bouton Indexer modifs.
  • En tapant sur CTRL + T.

(7.3)

Si une boite de dialogue apparaît pour avertir qu'un nombre important de fichiers sont sur le point d'être indexés
Si une boite de dialogue apparaît pour vous demander de réaliser une conversion de retour chariot, accepter la conversion en cliquant sur le bouton Continuer.

Désormais, tous les fichiers qui se trouvaient dans le panneau des Modifs non indexées en haut à gauche, devraient apparaitre maintenant dans le panneau des Modifs indexées (pour commit) en bas à gauche.

Dans la zone de saisie inférieure, correspondant à la description de vos modifications, tapons le texte "Initialisation", et cliquons sur le bouton Commiter.

Nous venons ainsi de créer le dépôt de suivi des changements de notre projet dans Git ce qui sera très utile lorsque vous souhaiterez revenir sur une ou plusieurs modifications malencontreuses.

Nous pouvons apporter un petit raffinement à notre suivi des changements dans la mesure où certains fichiers sont générés et modifiés automatiquement par Visual Studio comme les fichiers internes de Visual Studio pour gérer le projet, ou bien les fichiers de travail qui seront générés lors des compilations. A l'aide d'un éditeur de texte, dans le répertoire du projet, ici en l'occurrence C:\Users\VotreCompte\Dev\PremierJeuVideo\, créez un fichier dénommé .gitignore avec le contenu suivant :
.gitignore:
pakages.config
*.csproj
*.csproj.user
*.sln
*.suo
bin/
obj/

(7.4)


8. Personnalisation de Visual Studio

Visual Studio y compris dans son édition Express est un outil très puissant. Néanmoins, cela ne l'exonère pas de quelques lacunes qu'il est possible de combler à l'aide d'outils externes.

Il sera par exemple utile de pouvoir compiler indépendamment du reste du projet un seul fichier TypeScript, notamment pour des raisons de rapidité. Tout comme il peut être intéressant d'appeler Git for Windows sans quitter Visual Studio.

On peut rajouter un appel à ces deux outils simplement en cliquant sur le menu TOOLS > External Tools.


Posted Image

(8.1)

Si vous avez laissé les options par défaut durant l'installation de ces deux outils, voici les paramètres à saisir pour ces deux outils.

Paramètres pour TypeScript
  • Title: TypeScript
  • Command: C:\Program Files\Microsoft SDKs\TypeScript\tsc.exe
  • Arguments: $(ItemPath)
  • Initial directory: $(ItemDir)

(8.2)

Paramètres pour Git for Windows
  • Title: Git for Windows
  • Command: C:\Program Files\Git\bin\wish.exe
  • Arguments: "C:\Program Files\Git\libexec\git-core\git-gui"
  • Initial directory: $(SolutionDir)

(8.3)


9. L'alternative Notepad++

Si vous êtes allergique à Visual Studio et sa consommation de mémoire vie de plusieurs centaines de Mo, vous pouvez vous rabattre sur des éditeurs plus simples et moins gourmands en ressources machine.

Si vous êtes sur le système d'exploitation Windows, il existe une solution open source qui a fait ses preuves : Notepad++

En plus d'être à la base un éditeur de texte très puissant, il s'est vu rajouter de nombreuses fonctionnalités au fil du temps faisant de lui un outsider non négligeable par rapport à des solutions commerciales dans le domaine du développement logiciel.

Même si vous ne comptez pas programmer votre jeu avec Notepad++, je vous recommande néanmoins de l'installer pour tous les services qu'il pourra vous rendre comme la conversion des fichiers en UTF8 et ses plugins de formatage de fichiers XML.

Téléchargez Notepad++

Une fois Notepad++ installé puis lancé, configurons-le pour en faire un environnement TypeScript friendly.

Encodage
Le compilateur TypeScript dans sa version 0.9 n'accepte plus que les fichiers encodés en UTF-8. Pour éviter de se retrouver devant de mystérieuses erreurs d'inclusion de fichiers, activons d'emblée le mode UTF-8 par défaut. Pour cela, cliquez sur le menu Paramétrage > Préférences > Nouveau document. Sélectionnez la troisième option, UTF-8.

Auto complétion
L'auto complétion est une fonction dans un environnement de développement qui permet d'accélérer sensiblement la saisie à partir des premiers caractères en se basant sur l'ensemble des variables, des fonctions et autres identificateurs déjà déclarés dans le projet, tout en filtrant les possibilités en fonction du contexte de la saisie (eg. seuls les attributs de l'objet courant seront pris en compte).

Notepad ne permet pas d'aller jusqu'à ce raffinement, mais permet tout de même de proposer une liste de l'ensemble des mots déjà présent dans un fichier source. Pour activer cette possibilité, il faut cliquer sur le menu Paramétrage > Préférences > Auto complétion, puis sélectionnez les options suivantes :
  • Activer la complétion automatique > Complétion de mot
  • Paramètres affichés durant la saisie
  • A partir du 2 è caractère

(9.1)

Coloration syntaxique
Bien qu'il n'existe pas à ma connaissance de fichier de définition de coloration syntaxique pour TypeScript, nous pouvons utiliser une possibilité bien pratique offerte par Notepad++, à savoir la possibilité d'étendre la coloration syntaxique d'un langage déjà défini.

Pour cela cliquez sur le menu Paramétrage > Configurateur de coloration syntaxique.


Posted Image

(9.2)

Tout d'abord, vous pouvez si vous le souhaitez changer ici le thème de votre éditeur. Certains développeurs préfèrent non sans raison un fond moins vif que le blanc brillant par défaut, mais cela reste avant tout une histoire de goûts personnels.

Dans la première liste de gauche, recherchez et sélectionnez l'élément Javascript.
Dans la deuxième liste, sélectionnez l'élément KEYWORD.

Dans la zone de saisie en bas dénommée Ext. utilisateur, saisissez ts qui est l'extension des fichiers TypeScript.

Enfin, dans la zone de saisie tout à droite dénommée Mots-clés utilisateur, saisissez les uns à la suite des autres, les mots suivants :
any boolean class constructor declare enum export extends implements import interface module number public private require static string super

Il existe de nombreux plugins pour Notepad++. Parmi eux, deux seront indispensables à notre situation :
  • NppExec
  • XML Tools

(9.3)

Pour vérifier si ces deux plugins sont installés ou non, il suffit de cliquer sur le menu Compléments et de rechercher ces deux noms. Si au moins l'un des deux manque à l'appel, pas de souci, l'installation d'un plugin est très simple grâce à un autre plugin qui est livré par défaut avec l'outil, à savoir Plugin Manager qu'on peut retrouver également dans ce menu Compléments.

Plugin Manager un petit module qui permet de rechercher l'ensemble des plugins disponibles et de les installer. C'est en quelque sorte l'équivalent de NuGet sous Visual Studio.

Une fois ces deux plugins d'installés, et surtout NppExec, nous pourrons définir les commandes prédéfinies suivantes :
  • TypeScript
  • Git for Windows

(9.4)

La procédure de définition est identique pour ces trois commandes, seule le script d'exécution varie. Cette procédure est la suivante :
1. Cliquez sur le menu Compléments > NppExec > Execute, ou appuyer sur la touche F6.
2. Dans la zone de saisie, tapez le script de la commande
3. Cliquer sur le bouton Save
4. Donner un nom à votre commande
5. Cliquez sur le menu Compléments > NppExec > Advanced Options. Dans la boite de dialogue qui s'affiche, seule la zone Menu Item est vraiment importante.
6. Dans le champ de saisie Item name, taper le nom de votre commande.
7. Dans le menu déroulant Associated script qui se trouve juste en dessous, choisissez la commande souhaitée puis valider en cliquant sur le bouton OK.


Posted Image

(9.5)

Script de commande TypeScript
cd "$(CURRENT_DIRECTORY)"
tsc.exe "$(FILE_NAME)"

Script de commande Git for Windows
"C:\Program Files\Git\bin\wish.exe" "C:\Program Files\Git\libexec\git-core\git-gui"

Après, rien ne vous empêche d'ajouter les commandes de votre choix comme make/jake, node.js et bien d'autres, mais cela dépasserait sans doute le cadre de ce guide.


10. Conclusion

Comme nous venons de le voir, l'installation d'un environnement de développement en TypeScript n'est pas très compliquée, mais n'est pas si triviale non plus lorsqu'on démarre de rien, ce qui est souvent le cas quand on débute dans le développement.

Tout ce qui est décrit dans cet article est absolument facultatif. En effet, il est tout à fait possible de réaliser un projet sans mettre en place toute cette logistique, mais tôt ou tard, à mesure de la complexification de l'application, le besoin d'organisation se fera ressentir, et il sera plus difficile d'y remettre de l'ordre à postériori que de partir sur de bonnes bases.

En espérant que cet article vous a été utile.

( Partie 2 )


Formalistes et Zinesters : Pourquoi le formalisme n'est pas l'ennemi (1/3)

Posted by , in Game Design 06 August 2013 - - - - - - · 609 views

Cet article est une traduction autorisée de la première partie de celui-ci : Formalists and Zinesters: Why Formalism Is Not The Enemy (Tadhg Kelly)

Avant-propos du traducteur
Ce qui suit est une critique d'un professionnel de longue date de l'industrie du jeu vidéo, Tadhg Kelly, au sujet d'un récent mouvement de créateurs amateurs d'œuvres vidéo ludiques. Ce mouvement prône une démarche à la fois artistique et non commerciale, voire même militante, se faisant appeler les Zinesters, en référence à l'univers des fanzines, magazines de passionnés autoproduits. Le Zinestérisme, s'appuie notamment sur un livre en anglais, encore non traduit en français, d'Anna Anthropy dont le titre est "Rise of the Videogame Zinesters" (L'avènement des Zinesters du jeu vidéo). Dans ce livre qui est évoqué dans la critique de Tadhg Kelly, Anna Anthropy traite de sa vision des jeux vidéo en s'appuyant sur une de ses réalisations appelée Dys4ia.


Avant d'émigrer, je me suis retrouvé à défendre vigoureusement Raph Koster sur Twitter. Cela a commencé en réaction à cet article, en particulier par cette citation d'Anna Anthropy :









"Les jeux vidéo ont été l'une des communautés les plus sectaires que j'ai jamais vu", m'a-t-elle dit par e-mail, "des mecs, comme Raph Koster, insistent sur le fait que dys4ia "n'est pas un jeu", ce n'est pas un jugement de valeur. Ce sont des foutaises. la tentative sur des jeux comme dys4ia de mettre les étiquettes de "non-jeux", "d'expériences interactives", c'est juste une tentative à travers le statu quo de maintenir la discussion autour des jeux centrée sur le genre de jeux avec lequel on se sent à l'aise - car s'il y a bien une chose dont la culture du jeu vidéo sait faire, c'est de mettre très très à l'aise des mecs d'un certain genre."

Récemment, j'ai remarqué une recrudescence de l'argument "des mecs d'un certain genre". D'une part, cela concerne l'acceptation et le traitement des femmes, des minorités et d'autres groupes au sein de l'industrie du jeu - et à juste titre. D'autre part, cela concerne la perception du patriarcat. C'est affirmer que des "mecs d'un certain genre" oppriment les gens créatifs avec leur vision d'une industrie organisée à maintenir leur satisfaction, et manipulent la définition de "jeu" comme une démonstration de leur pouvoir.

Cette affirmation est beaucoup plus sujet à controverse parce qu'elle confond trois problématiques différentes. La première est politique et affirme que la passivité ou l'apathie sont en fait des formes de complicité. La seconde est en rapport avec la préférence du marché, se demandant pourquoi est-ce que le segment des mâles blancs achète sans cesse certains types de jeu tout en ignorant une plus grande diversité. Ce point met en cause la responsabilité de l'industrie, tandis que l'industrie elle défend que les dynamiques de marché sont évolutives de telle façon que l'industrie suit le marché plutôt que de lui imposer quoi que ce soit.

La troisième problématique porte sur la critique. Pour beaucoup de formalistes (moi y compris), de nombreux nouveaux types d'art interactif ne sont pas des jeux, ou alors pas très bons si on les considère comme des jeux. Beaucoup s'apparentant à des jeux, sont des systèmes ludifiés, des histoires interactives, personnelles, convaincantes et limitées. Certains sont des mondes virtuels. D'autres sont plus intéressants conceptuellement parlant que jouable. Beaucoup reposent sur la connaissance des intentions de l'auteur.

En créant un "jeu" qui n'est pas destiné à être joué ou gagné, son créateur dit quelque chose. Le fait ensuite d'appeler ce travail autre chose que "jeu" peut apparaître comme une attaque dirigée contre son créateur. En particulier pour le groupe de ceux qui peuvent en première approche être qualifiés de "Zinesters", le "jeu" est devenu un champ de bataille politico-artistique féroce qui doit être gagné. De plus en plus de Zinesters en arrivent à mélanger le formalisme avec le patriarcat, la complicité et les débats sur "des mecs d'un certain genre", en les dénigrant sans faire la moindre distinction.

C'est non seulement encore une autre tentative pour remporter le débat sur les jeux en ayant recours à l'équivoque, mais cela a pour effet de dissuader certaines voix autrement plus intéressantes de se faire entendre. Certains, comme Raph, continue d'essayer, notamment avec cette lettre ouverte dans laquelle il évoque le débat et les attaques personnelles (un développeur indépendant qu'il respecte a changé de trottoir pour éviter de le croiser à la GDC – Game Developper Conference) pour être contraint au final à devoir crier une fois de plus sur Twitter. La question pour les Zinesters est la suivante : Hurler et insulter est-ce donc là tout ce dont vous êtes capables ?

Parce que si c'est le cas, les Zines vont inévitablement finir par disparaître.

Des ennemis inoffensifs

Les Zinesters se considèrent comme une classe émergente d'artistes interactifs. Leur travail couvre tout, de leur histoire personnelle jusqu'aux observations sur l'univers et des expériences purement esthétiques, et que ce travail prend des milliers de formes. Dans son livre, "Rise of the Videogame Zinesters", Anna Anthropy dépeint le mouvement comme apparenté aux posteurs de vidéos sur YouTube ou à d'autres créateurs agrégeant divers médias, libres des entraves du mercantilisme ou de l'élitisme, et en mesure de faire ce qu'ils veulent. C'est assez vrai.

Et pourtant, contrairement aux posteurs de vidéo sur Youtube, le Zinestérisme a aussi un côté combatif. Provocateurs comme a pu apparaître Anna à la GDC en lisant des poèmes sur leurs luttes, leurs combats, leurs victoires et leurs défaites dans la bataille pour l'égalité réelle. Parfois le Zinestérisme va au-delà même de ça. Pour certains, la lutte est moins sur la confirmation de soi que sur l'infirmation des autres. Il s'agit de la possibilité de crier "Je suis furieux contre toi, espèce de blanc de service". C'est-à-dire que vous voulez juste un ennemi.

Nous pouvons être formalistes, mais ceux qui écrivent comme Raph ou moi-même sommes le mauvais type d'ennemi dans le cas où votre intention est de défendre le droit des créateurs de jeux à donner leur avis sur les jeux, parce que nous sommes d'accord avec vous. Parmi nos rangs, vous trouverez quelques-uns de vos plus fervents partisans, des défenseurs passionnés et des évangélistes affirmés. Vous rencontrerez un débat vif et des réponses argumentées puisque nous essayons d'aboutir à un stade où notre cadre critique est à la fois le plus général et le plus clair possible. Mais pour ces raisons, vous trouverez peu de gens qui tenteront de prendre à défaut vos réalisations sur la qualité (soit dit en passant, dans la course au jugement au cours des dernières semaines sur l'ensemble de cette question, où beaucoup se contentent d'affirmer que les jugements de valeur et autres sont au cœur de ce qu'est un jeu, aucun de ses partisans ont encore cité un exemple crédible à ce propos.)

Ce que vous y trouverez aussi, cependant, ce sont des gens qui connaissent assez bien l'univers du jeu vidéo. Des gens qui ont vu cette lutte sur "ce qu'est un jeu" se produire avant. Des gens pour qui l'idée d'un jeu qui a recours à la mort définitive n'est pas étonnamment originale. Des gens pour qui l'astuce de l'inversion de rôle et la notion de jouer avec le dégoût de soi, ou des jeux qui demandent à ne pas être joués, sont des idées qu'ils ont déjà vues. Des gens pour qui le débat n'a rien à voir ou presque avec leur propre sentiment de puissance et tout à voir avec le fait d'essayer d'arriver à une meilleure compréhension. Des gens qui considèrent que les Zinesters semblent répéter une erreur très ancienne.

Vers la fin des années 80, un désir grandit parmi les jeunes rôlistes sur table (moi y compris) pour repousser les limites des nombres. Nous commencions à parler de jeux de rôle en tant que jeux narratifs. Nous considérions plusieurs joueurs de la vieille garde qui parlaient de campagnes, de classes et de points de vie comme désuets. Nous étions convaincus qu'un jour le "jeu" aurait place pour des histoires, des épopées et des thèmes. Nous parlions sans cesse de narrations non scénarisées, de jeux sans règle et de dépasser la notion de divertissement.

L'énergie des débuts entourant ce mouvement a généré beaucoup de créativité. Les genres de jeux que nous avions créés étaient des concepts. Nous avons travaillé sur des jeux dont le but était d'explorer les thèmes de la mythologie, de l'identité et de la sexualité. Dans un premier temps, nous utilisions des trames, des scénarios ou des mécaniques traditionnelles, mais au fil du temps nous étions passés dans l'abstraction stylistique, l'équivalent en jeu de rôle des Six personnages en quête d'auteur de Pirandello. Nous étions plus ou moins les précurseurs des Zinesters d'aujourd'hui.

Pour nous, c'était quelque chose de fascinant, mais cela n'a pas attiré au-delà de nos rangs. Alors, au fil du temps nous sommes tombés dans un débat de plus en plus confidentiel. Alors que le reste de la communauté des joueurs ne s'en souciaient pas tellement, nous sommes devenus militants et obsédés par les broutilles, les affronts et les insultes perçues. Nous sommes passés d'une tribu de passionnés à des groupuscules qui passaient leur temps à râler les uns sur les autres, et au fil du temps nous avons décliné. Le "jeu" est resté tel qu'il était, malgré toutes nos fanfaronnades, et vers la fin des années 90, il était retourné à ses racines avec la 3e édition de Donjons et Dragons.

Ceci, en grande partie, est le modèle que semble suivre le Zinestérisme.

La deuxième partie en français est disponible ici : Formalistes et Zinesters : Pourquoi le formalisme n'est pas l'ennemi (2/3)