[Mesh rebelle] Le topic des techniques qui décoiffent dans les jeux


#141

J’ai l’impression d’avoir vu cette analyse mille fois mais c’est toujours bon de le rappeler, je suppose.

En tout cas, un truc que j’adorerais revoir sur Youtube ou Nico, c’est la vidéo d’une émission de télé japonaise du style Trivia no Izumi, dont le sujet était “ce n’a jamais touché à la Famicom de sa vie” ; ils le faisaient jouer à Super Mario Bros. sans rien expliquer et il avait un mal fou à passer le premier goomba ou même simplement comprendre que le champignon n’était pas un ennemi. C’était assez tordant. Malheureusement je ne la retrouve pas alors qu’on y déniche même la vieille vidéo Zeronews du violoniste.


#142

Une discussion sur les limitations de la NES qui ont été respectées ou pas dans Shovel Knight: http://www.gamasutra.com/blogs/DavidDAngelo/20140625/219383/Breaking_the_NES_for_Shovel_Knight.php


#143

Redite du making of Guilty Gear Xrd, mais en ligne chez 4gamer cette fois-ci, donc avec des belles grosses images qui me font baver:
http://www.4gamer.net/games/216/G021678/20140703095/

L’article confirme entre autre que le moteur est bien UE3, pas UE4.


#144

Il y a une traduction (au moins partielle) de l’article sur Polycount :
http://www.polycount.com/forum/showpost.php?p=2099538&postcount=229


#145

La boucle est bouclée \o/

Un des trucs les plus intéressants dans leur approche, c’est vraiment que tout est au service du look anime. Souvent quand des devs se mettent au cel shading, ils font des aplats mais ils gardent grosso modo les mêmes formules pour calculer la lumière et tout derrière. là ils ont vraiment démonté et remonté tout le processus pour arriver à leur résultat. Un des gens sur polycount disait que la moitié du travail est d’ajouter des imperfections, mais c’est plus qu’ils peignent la réaction du perso à la lumière d’une manière complétement différente de ce qui est fait d’habitude. Je suis complétement jaloux de Softimage (le programme 3D qu’ils utilisent) qui leur permet de voir tous leurs persos exactement comme ils seront dans le jeu pendant qu’ils bossent dessus. Blender par exemple ne peut pas le faire, on doit switcher entre un mode édition qui permet de bosser et un mode jeu qui permet de voir le modèle avec les shaders et tout dès qu’on veut faire un look un peu hors du commun (mais bon, je pense que cette faiblesse de Blender ne doit pas être commune, c’est plus que la communauté de devs Blender n’est pas trop orientée jeu).

Je trouve aussi intéressant le choix d’UE3 pour des raisons de prix et de maturité plutôt que de prendre UE4. Et le fait qu’ils ont directement implémenté leur moteur de gameplay déjà existant dedans (alors que les collisions dans SF4 sont assez différentes de celles de SF3 par exemple), pour reprendre les données et outils qu’ils avaient déjà, on sent qu’ils ont essayé de se simplifier l’existence et d’être efficaces.

C’est dommage que GDMag soit mort, c’est le genre d’article qui aurait forcément fini traduit professionnellement dedans et il me semble que Gamasutra ne fait plus des trucs aussi intéressants.


BUMP: la seconde partie est en ligne sur 4gamer:
http://www.4gamer.net/games/216/G021678/20140714079/


#146

Seconde partie de la traduction de l’article sur GGXrd :
http://www.polycount.com/forum/showpost.php?p=2107579&postcount=241


#147

Un poil hors-sujet mais je mets ça ici ; on sait jamais à qui ça peut servir sur B.


#148

Pour faire chauffer un peu la CG.


#149

Comme promis envers Arkedo, Kinect (2) reconnaît maintenant les doigts :


#150

Un type sur GAF lance un projet éducatif “fais ton premier jeu vidéo sur Dreamcast” que je trouve assez cool dans l’esprit. A suivre.


Chev/Shito/Nova/n’importe qui avec le permis, on me dit que c’est “super pour Unreal”, mais expliquez-moi pourquoi svp ?
http://tirania.org/blog/archive/2014/Oct-23.html

C# c’est vraiment un si gros avantage sur C++ au point de vouloir avec une couche de programme supplémentaire ? Je pensais que les mecs qui bossaient sur UE4 étaient à l’aise avec C++. Ou alors personne n’est jamais à l’aise avec C++ et il doit mourir dans les flammes de l’enfer ? Ou alors c’est parce que tous les petits nouveaux qui arrivent avec Unity dev sur C# et du coup faut que UE4 s’adapte à leurs connaissances ?


#151

J’optes pour “Ils le font pour les noob”

Un des fondements du C# c’est la gestion de la memoire automatique. Tu n’as pas a reserver un bout de memoire quand tu en a besoin, le language le fait pour toi. Allouer de la memoire n’est pas dur en soi, le probleme c’est de pas oublier de desallouer la memoire quand tu n’en a plus besoin et etre sur qu’une autre partie de ton programme ne va pas l’utiliser ensuite pensant que cette partie de la memoire est toujours valide.

Un vieux con (moi inclu) te dira qu’un programmeur se soit de gerer soi meme sa memoire, ou du moins comprendre comment ca marche. La realisté c’est que pas mal de code peut-etre ecrit sans se soucier de la memoire sans trop de risque, genre le gamplay ou la logique du jeu. Donc dans U4 ca a du sens. Le moteur en lui meme est super optimiser en C/C++ donc ils peuvent permettre le C# pour le reste du code.

C# ou alternative comme javascript, Rust ou Go sont juste une evolution des langages de programmation pour etre plus flexible / sur / fonctionel / simple (different langage, differente philosophie). Tout comme l’a été le C++ a une epoque. Les outils doivent s’adapter a cette evolution.
Tout ce résume dans ce Q&A a cppcon (conference C++) avec Mike Acton de Insomniac. Apres avoir passé une heure a chier sur toute les fonctions avancées de C++ viens une question toute simple “Pourquoi developper en C++?” https://www.youtube.com/watch?v=rX0ItVEVjHc#t=5030


#152

Sankyuu ! Pour récompenser tes efforts :


#153

A* qui est utilisé donc très largement dans les jeux. C’est vraiment l’un des algos de référence pour développer du pathfinding <3

On trouve des choses plus compliquées lorsqu’on parle de navigation 3D, avec des variantes sur A* et des exemples de pathfinding verticaux, comme sur Left 4 Dead.

Un chouette simulateur de pathfinding avec différentes algo pour ceux qui veulent voir les différentes approches.


#154

C’est un pas exactement même chose, même si c’est un sujet connexe: Mike Bostock a de très belles animation (canvas+javascript, pas de gif) sur la résolution et la génération de labyrinthe. Sélection aléatoire:
Prim’s Algorithm
Prim’s Algorithm II
Wilson Algorithm
Randon traversal
Wilson Algorithm
Random Search
Random traversal
Best first search
Random Search II


#155

#156

Shadertoy, un chouette site qui compile des shaders fait en webGL, que l’on peut modifier à la volée en plus <3

De jolis nuages.
Descente en enfer.


#157

C’est super intéressant et super pas facile. Si on arrivait à le faire ce serait une nouvelle génération d’IA de baston, mais même le top est mille fois plus primitif que ça. En gros les principales approches que je connais sont:

-L’automate. Si tu es là je fais ça, si tu es là-bas je fais ça, et ainsi de suite. SF2 était comme ça.
-L’automate aléatoire. M’eme principe qu’au-dessus, mais pour chaque situation on peut piocher parmi plusieurs décisions avec différentes probabilités. C’est déjà assez avancé pour le genre mais pas plus malin que l’autre, juste moins prévisible. La plupart des IA avancées dans Mugen sont écrites comme ça, donc Saltybet (si ça existe encore) est un bon échantillon
-Skullgirls, dont l’IA écrite en Lua est raisonnablement facile à désosser, a une approche un poil plus élaborée car la situation est analysée. On regarde différent critères (est-ce que l’ennemi est en l’air, en train d’avancer, d’attaquer, combien de persos a-t-il, etc) et suivant chacun on ajoute ou retire des mouvements à une liste de bonnes idées, et on leur donne des points suivant leur pertinence. Une fois qu’on a tout calculé, on choisit au hasard dans la liste résultante comme la méthode précédente, avec le score de pertinence comme probabilité.

Note qu’aucune de ces approches n’analyse ce que tu fais en général, elles sont toutes exclusivement réactives à l’instant présent et se basent sur une logique préprogrammée par un développeur. Elles ne peuvent pas apprendre de ce que tu fais. En tout cas dans le commerce. Mais en plus expérimental il y a l’approche Rainman (les chaînes de Markov pour ceux qui ont leur permis): tu comptes les cartes, autrement dit tu mémorise les enchaînements d’actions de l’autre joueur et tu fais des stats, et ça permet de raisonnablement prédire le prochain mouvement et déterminer une parade. Du coup ça va te prédire et c’est sensible à une forme basique de mind game (ce qui serait désirable pour faire prendre des bonnes habitues au joueur) mais il faut de la mémoire pour mémoriser les mouvements possibles. Exemple ici: http://www.masterbaboon.com/2009/05/my-ai-reads-your-mind-and-kicks-your-ass-part-2/
Je pense que les amiibos et les “ghosts” de certains jeux (qui découlent de la m’eme idée, simplement dans un cas on utilise la prédiction pour imiter le joueur et dans l’autre pour le contrer) ne sont même pas aussi avancés que ça, ils se contentent de stats plus simples.

Mais c’est difficile à appliquer en-dehors de jeu du style pierre-papier-ciseaux vu qu’il y a beaucoup plus de possibilités de mouvement qui vont vite grignoter de la mémoire. Et au fond c’est aussi réactif, il saura te dire ton prochain mouvement raisonnablement bien mais pas forcément quoi faire à la place, là on part forcément sur une connaissance qui doit être apportée par un designer. Et le danger, c’est que cette connaissance soit périmée avec l’évolution du metagame qui n’ira pas souvent dans la direction envisagée par les designers.


#158

Oula, sans aller dans un délire high tech on pourrait imaginer quelque chose de beaucoup plus simple.

Je pense que n’importe quelle IA actuelle est capable de créer un entrainement thématique et de le servir au joueur, mécaniquement au début, et puis à la carte au fur et à mesure du taux de réussite du joueur.

Prenons le training mode actuel de KOF XIII : les premiers chapitres concernent des notions de base comme “mettre sa garde”, “les différents types de saut” etc… sauf qu’au lieu d’être dynamique et vivant, c’est servi par des chapitres qu’ils faut sélectionner, du texte chiant à lire, et un personnage dummy qui ne fait que ce pour quoi il a été programmé dans ce chapitre. Ce que j’aime bien avec les Amiibo, et ça vient de m’exploser au visage grâce à l’article d’Iggy, c’est qu’ils personnifient quelque chose d’abstrait. C’est vraiment con, mais terriblement efficace.

Imaginez maintenant un Street avec Dan en guise d’entraîneur. C’est la première fois qu’on lance le jeu, Dan fait son cinéma et nous propose de nous entraîner, il commence par nous proposer un thème, par exemple réussir à mettre sa garde, et indique au joueur qu’il est temps de faire un peu de sparring pour vérifier s’il a bien assimilé le concept. Un combat classique se lance, et l’IA comptabilise le taux de garde réussie à la suite d’assauts programmés pioché dans les thématiques en question, note le résultat dans un petit tableau sous forme de pourcentage et félicite le joueur quand ce dernier semble avoir maîtrisé le sujet. Puis, DYNAMIQUEMENT, quand le taux de réussite dépasse un certain trigger, il passe au concept suivant. Si le taux d’erreur est trop élevé, il peut demander au joueur si ce dernier veut essayer autre chose, histoire de ne pas créer de monotonie ni de bloquer le joueur dans une impasse. Et puis en plus c’est élégant, un vrai prof change aussi d’angle s’il s’aperçoit que tu bloques sur un problème… pour y revenir après.

Pour arriver jusqu’au combos, où l’IA encourage le joueur à réussir “cet enchaînement que je vais te montrer”. Alors dans cet exemple ça ne marcherait peut-être pas, parce que je ne sais pas si le modèle 3D de Dan serait capable de rejouer tous les coups du roster, mais ça n’est qu’une considération technique, et surtout dans le cas de Smash c’est vite réglé avec un Mii générique en guise d’entraîneur puisque tout est permis.

Arrivera le moment où le joueur dépassera son “maître” en éclatant toutes les stats imaginables, ce qui pourrait donner lieu à une séquence super jouissive pour les joueurs à base de “je suis fier de toi, je n’ai désormais plus rien à t’apprendre, voici ma ceinture en guise de cadeau”.

Sérieusement, c’est vraiment tout con à implémenter, il suffit de faire “jouer” le rôle de l’entraîneur par une marionnette pour casser un mur supplémentaire. J’ai envie de m’offrir de la baleine sur ce coup là.


#159

Ce que tu décris n’es pas une IA (un processus qui apprend), mais un tutorial scénarisé. Mais ça reste une bonne idée; j’ai l’impression que la majorité des enseignements des jeux de combat se fait sur le tas / à l’arrache plutôt qu’avec une démarche progressive.


#160

pour ceux qui s’intéressent aux algos utilisés dans les jeux, voici un site ludique et pédagogique codingame.

vous pouvez coder directement dans votre navigateur, parmi une multitude de langages disponibles (java, C, C#, groovy, scala, PERL, pyhton, VB…), vous pouvez compiler et voir le résultat en live de vos expérimentations.
vous avez accès à plusieurs dizaines d’exercices de différents niveaux qui posent les bases : déplacement, calcul de distance, pathfinding, conduite, triangulation… mais aussi à des concours dans lesquels vous affrontez les IA des autres joueurs.

en terme d’I/O c’est au plus simple, les ordres sont envoyés en system.out vos ordres selon une nomenclature basique.
vous pouvez choisir d’affronter des IA standard ou l’IA des joueurs pour vos tests.
vous pouvez jouer votre algo pas à pas, suivre les I/O et le debug, l’éditeur propose même l’auto-complétion !

ono c’est ce que tu attendais ! viens coder ton IA ultime et m’affronter sur platinum rift !