A quand un environnement intelligent ?

Répondre
Partager Rechercher
J’imagine que mettre en place à un environnement intelligent doit être très difficile, sinon nos chers MMORPG ne seraient pas peuplés de mobs débiles qui popent de manière tout aussi débiles, autour de villes elles-mêmes peuplées de PNJ débiles.

Est-ce vraiment si compliqué de réussir à reproduire les besoins naturels animaux ? Puis de les modifier de façon à les rendre adaptables aux besoins d’un gameplay ?
(ex : j’ai faim, je chasse, j’ai pas faim, je me reproduis)

Est-ce vraiment si compliqué de réussir à reproduire les besoins naturels d’un petit village, ou d’une troupe de nomades ?
(ex : j’ai faim, je chasse, j’ai pas faim, j’vais péter la gueule aux factions ennemies)

N’étant pas programmeur, je n’ai aucune idée de ce qui est faisable en la matière, sans que cela devienne un gouffre à temps / fric.

Maintenant, quand je vois « l’intelligence » des bots dans certains FPS, je me dis qu’il est tout de même étonnant de ne pas pouvoir modifier cette intelligence de « combat », en une intelligence de « survie ».

Sans pour autant parler d’intelligence au sens propre, de capacité d’apprendre (même si j’ai aussi mon avis là-dessus), n’est-il pas envisageable, grâce à un jeu de faction (carnivore / herbivore, elf / nain), et de jauge (faim / bellicosité) de singer des comportements moins idiots que ceux qu’on nous sert à l’heure actuel ?

Je le répète, je ne suis pas codeur, et encore moins spécialiste en IA de jeu. Maintenant je me dis qu’il doit tout de même être envisageable d’apporter un petit « plus » à nos chers mobs, afin d’apporter à nos environnements un pseudo souffle de « vie », en opposition à l’actuel état statique et déplorablement figé que nous constatons.

Ma question est donc : quelles sont les raisons qui empêchent de tels environnements de voir le jour ?

La taille des mondes et la puissance de calcul qu’impliquerait la gestion de milliers de mobs « intelligents » ?

La difficulté de concilier des comportements « intelligent » à un système de quête pré-établi, et plus généralement de les incorporer dans un gameplay viable ?

Je suis convaincu que les futurs MMORPG proposeront ce type d’environnement, je me demandais juste pourquoi on n’en entendait pas encore parler.
D'un point de vue technique, cela pose au moins un problème : si le jeu est découpé en plusieurs parties et qu'un serveur s'occupe d'une seule partie, alors il va falloir gérer les interactions entre deux parties, ce qui est techniquement coûteux. Par exemple, si tu veux des tribus nomades, alors soit elles seront nomades dans un petit carré du monde (et donc c'est pas top), soit elles devront traverser les "parties", ce qui pose problème.

Mais ce qui est souvent sous-estimé, c'est les problèmes d'un point de vue gameplay et modélisation. Prenons un exemple. Naïvement, tu vas coder un système où les lions mangent les lapins (tgcm ). Tu lances le jeu, et tu te rends compte qu'au bout d'un moment il n'y a plus de lapins et que les lions sont partout, n'ayant pas de prédateurs ! Tu vas donc devoir faire un rééquilibrage de fortune et avoir un jeu bancal.

Ensuite, il faut tenir compte des joueurs. Si tu as un système lions / lapins en équilibre moyennement stable, qu'est-ce qui empêche un joueur d'aller farmer les lions et laisser place à une catastrophe écologique désastreuse pour les autres joueurs qui avaient pourtant prévu le coup et mis en place un système pour limiter la chasse ?

Donc il faut mettre au point un système à la fois dynamique (pour que le jeu ne soit pas statique) et avec un équilibre à la fois stable et naturel. Ce n'est pas évident, c'est même carrément pas simple rien que pour un simple système écologique avec des lions et des lapins qui ont juste besoin de manger et violer.

Alors maintenant imagine que tu veuilles mettre en place une tribu nomade et qu'il faille à la fois imaginer un comportement de groupe (pour la tribu) et un comportement individuel, cohérents l'un avec l'autre, tout en assurant que le joueur pourra s'amuser (typiquement il ne faut pas que le comportement de groupe soit : "un joueur attaque, tout le groupe défend" sinon le jeu est injouable car il est impossible de pull).

Dans ton comportement de groupe il va falloir modéliser des trucs très simples pour nous mais compliqués pour la machine, par exemple : la recherche d'un lieu pour fonder un village (des tas de critères entrent en jeu, et certains sont durs à calculer, notamment tout ce qui va toucher à la forme du village et de ce qui l'entoure).

Dernier détail, il va falloir plus de bande passante. Typiquement, si une tribu fais un village, il va falloir en informer le joueur (ce qui n'est pas le cas dans un monde statique) pour qu'il puisse placer les maisons là où il faut.

Au final, on voit bien que c'est beaucoup plus complexe qu'il n'y paraît. Personnellement, je reste convaincu que c'est faisable et que les problèmes à résoudre se posent surtout du point de vue de la modélisation (faire un système à la fois dynamique, équilibré, amusant et techniquement peu gourmand), mais apparemment ce n'est pas le genre de problème qui intéresse les développeurs ou les investisseurs...
Merci pour tes éclaircissements DooMeer

Tu penses bien qu'y ayant un peu réfléchi, j'ai quelques propositions de solution à te soumettre


Citation :
Publié par DooMeeR
Mais ce qui est souvent sous-estimé, c'est les problèmes d'un point de vue gameplay et modélisation. Prenons un exemple. Naïvement, tu vas coder un système où les lions mangent les lapins (tgcm ). Tu lances le jeu, et tu te rends compte qu'au bout d'un moment il n'y a plus de lapins et que les lions sont partout, n'ayant pas de prédateurs ! Tu vas donc devoir faire un rééquilibrage de fortune et avoir un jeu bancal.
Oui effectivement. Après de rapides recherches effectuées sur les reproductions informatiques de biosystèmes, l'équilibre est justement le point le plus difficile à atteindre.
Cependant, je pense justement que c'est là que les joueurs pourraient intervenir, via des quêtes automatiques du type:
- le "système" détecte un nombre trop important de carnivores dans une zone donnée. Pouf une quête apparaît "aller buter X mangeurs de lapins".
Ou à l'inverse, aller "protéger" ou "accélérer" (par un mécanisme de gameplay à définir, ça peut se faire de 1000 façons différentes) la reproduction des lapins.

Bref on voit qu'avec ce système basique, on obtient des quêtes basiques "intelligentes", à impact direct sur le monde. Le but étant de "compliquer" les interactions entre PNJ afin de "compliquer" les quêtes automatiques.

Citation :
Publié par DooMeeR
Ensuite, il faut tenir compte des joueurs. Si tu as un système lions / lapins en équilibre moyennement stable, qu'est-ce qui empêche un joueur d'aller farmer les lions et laisser place à une catastrophe écologique désastreuse pour les autres joueurs qui avaient pourtant prévu le coup et mis en place un système pour limiter la chasse ?
Complètement d'accord.
C'est pour cette raison qu'un jeu proposant un tel environnement doit repenser totalement le "je te tue tout ce qui bouge en 2 boules de feu".
Adapter la difficulté de tuer un lion aux conséquences que cette action peut avoir sur le monde.
Après, certes, le joueur "de base" aura probablement tendance à vouloir tout péter sur son passage, mais peut-être est-il possible de contre-balancer cette tendance malheureuse en proposant à d'autres joueurs la possibilité de rétablir les équilibres "plus facilement".

Citation :
Publié par DooMeeR
Alors maintenant imagine que tu veuilles mettre en place une tribu nomade et qu'il faille à la fois imaginer un comportement de groupe (pour la tribu) et un comportement individuel, cohérents l'un avec l'autre, tout en assurant que le joueur pourra s'amuser (typiquement il ne faut pas que le comportement de groupe soit : "un joueur attaque, tout le groupe défend" sinon le jeu est injouable car il est impossible de pull).
Eh bien justement, à autre type de monde, autre façon de jouer.
Un jeu dans lequel on ne puisse pas bêtement "puller" des mobs afin de les enchaîner sans fin, voilà justement une des raisons d'être de cette feature.
Alors certes, après, il faut que le joueur s'amuse, et, cela a été démontré plusieurs fois ici, taper et tuer sont les "amusements" les plus "rentables" en terme de production actuellement pour un MMORPG.
Mais il doit bien y avoir un moyen de s'amuser sans pour autant qu'il s'agissent à 100% (ou 80% si on tient compte de la part de l'artisanat) de monster killing.

Citation :
Publié par DooMeeR
Dans ton comportement de groupe il va falloir modéliser des trucs très simples pour nous mais compliqués pour la machine, par exemple : la recherche d'un lieu pour fonder un village (des tas de critères entrent en jeu, et certains sont durs à calculer, notamment tout ce qui va toucher à la forme du village et de ce qui l'entoure).
Hmmm pourtant de nombreux STR arrivent à faire construire aux IA des bases à des emplacements viables. Je ne sais pas comment ils s'y prennent, mais c'est quelque chose d'assez courant.

Citation :
Publié par DooMeeR
Dernier détail, il va falloir plus de bande passante. Typiquement, si une tribu fais un village, il va falloir en informer le joueur (ce qui n'est pas le cas dans un monde statique) pour qu'il puisse placer les maisons là où il faut.
Oui, ça j'imagine bien que techniquement, un tel environnement est beaucoup plus gourmand qu'une map avec 4 points de pop. C'est d'ailleurs pour moi la problématique majeure du concept, est-ce qu'en l'état actuel des technos (puissance de calcul des serveurs / bande passante), il serait envisageable de créer un tel environnement.


Citation :
Publié par DooMeeR
Au final, on voit bien que c'est beaucoup plus complexe qu'il n'y paraît. Personnellement, je reste convaincu que c'est faisable et que les problèmes à résoudre se posent surtout du point de vue de la modélisation (faire un système à la fois dynamique, équilibré, amusant et techniquement peu gourmand),
Complexe oui, et c'est justement ce qui le rend intéressant !

Citation :
Publié par DooMeeR
mais apparemment ce n'est pas le genre de problème qui intéresse les développeurs ou les investisseurs...
Ô Grand Capital, comme je te maudis
Des jeux comme Wakfu ont annoncé un environnement non statique et "intelligent", du type une armée de bûcheron qui farme va entraîner la disparition de certains monstres dans le coin, ou leur déplacement. Ca amène sur le gameplay un rôle important aux politiques en fonction IG, pour gérer tout ça, donc un contenu inhabituel, à voir.

D'autres ont annoncé dans des jeux PvP la création de factions ennemies gérées uniquement par le serveur, capables d'attaquer des villes gérées par des joueurs, de se replier, de se développer etc. Ce comportement devrait être transcriptibles à des mobs je pense.
Techniquement, il n'y a guère de problèmes techniques a rendre les mobs/pnj et l'environnement dynamique. La seule difficulté est éventuellement, comme l'a évoqué doomeer, le lag causé par un environnement trop dynamique, mais cela est plutot lié au fait que les MMO, dans le système de représentation de map, ne sont actuellement pas du tout conçus pour cela.

Pour être précis, le problème vient du fait que l'environnement est modélisé en 3D. Pour que l'environnement pusse etre modifié, il faudrait modifier le terrain et les objets qui vont dessus. Le serveur en est incapable car il est impossible de créer une IA suffisament avancée pour qu'elle soit capable de modifier la modélisation, les textures, les lumières, etc. C'est pour cela par exemple que dans DAOC, il y a des emplacements prédéfinis pour construire sa maison.

Le seul moyen de modifier un environnement comme ceux des MMO actuels, c'est que les joueurs puisse le modifier, par exemple comme dans Second Life. Un autre exemple est Pirates of the Burning Sea qui permet aux joueurs de créer leurs bateaux. Malheureusement, ce n'est guère applicable en pratique pour l'immense majorité des MMO

Pourtant, la solution existe, est vieille comme le jeu video et c'est pour ca que Wakfu risque d'être un des premiers MMO a l'environnement reelement dynamique.

Les Tiles. Au lieu de d'avoir un environnement prédéfini par un gros modèle 3D, on a des milliers de petits modèles que l'on assemble pour former l'environnement. Pour donner une image simple mais trés représentative : c'est lego contre playmobile.

L'énorme avantage, c'est que via 3 coordonnées, le serveur sait ou se trouve le moindre brin d'herbe. Au lieu d'avoir d'avoir un enorme modèle 3D qu'il ne peut interpréter, le serveur a une longue liste qui ressembla a ca :
X,Y,Z:herbe
X,Y,Z+1:caillou
etc, etc.
Ce qui signifie qu'il est trés simple pour le serveur de dire : a tel endroit, j'applanis le sol, je vire les arbres, j'installe des tentes, des cranes sur des perches et une dizaine d'orcs.

Il y a un MMO amateur, Wurm qui utilise ce système et dans lequel on peut couper les arbres, creuser, remblayer, etc. Je ne vous le recommande pas, le gameplay est absolument affreux, mais ca permet de comprendre le concept.

Le seul inconvénient de ce système, c'est qu'on ne peut pas faire du level-design aussi poussé que dans un environnement modélisé. Les légos, c'est pas aussi joli que les playmobiles.
Pour résumer, on peut pas atteindre la même finition graphique. C'est pour cela que Neverwinter Nights est moins beau que Morrowind.

D'ailleurs, avez vous remarqué que WOW est tile-based ? Et il se trouve que c'est probablement un des jeux les plus dynamiques (techniquement, je précise ) et dans lequel les interactions joueur-environnement sont les plus poussées a l'heure actuelle.

Pour conclure, la réponse a
Citation :
Oui, ça j'imagine bien que techniquement, un tel environnement est beaucoup plus gourmand qu'une map avec 4 points de pop. C'est d'ailleurs pour moi la problématique majeure du concept, est-ce qu'en l'état actuel des technos (puissance de calcul des serveurs / bande passante), il serait envisageable de créer un tel environnement.
est : c'est non seulement envisageable, mais en plus ca donnerait des jeux moins gourmants en bande passante et demandant moins de puissance graphique coté client.
C'est rigolo parce qu'il y a quelques semaines j'ai fais une petite expérience et j'ai écrit un programme qui génère des donjons. En fait, il gère l'évolution d'un donjon. Des gobelins peuvent venir et creuser des galeries tandis que des trolls peuvent venir occuper ces galeries avec une architecture plus sophistiquée. Ca donne ça (en mode texte c'est dur à lire mais bon) par exemple :

Code:
#####################$##
#I_I      ##############
#___I_I.  ############$#
#I_I___ #$##############
#~  I_I~################
#~$    ~~~###########$$#
#~ ###   ~~~~###########
#~ ###. #..#~~ ########$
#~########## ~ #####$$##
~~##$#######.~######$###
###########  ~~ ###$####
###$####### .#~ ######$#
############. I_I#######
########$###  ___#######
############ #I_I######$
####$####$#. #~    $#$##
$######## ..##~  .     #
$########     ~ #$ I_I #
$########## . ~### ___ $
##$###$###$ $ ~~## I_I #
#$#########   #~#$I_I..#
#####$######  $~~~___  #
$##$#####$##  ##$ I_I .#
###$#$########$#####$###
Les dièzes (#) sont de la roche, les dollars ($) sont du minerai (de l'or par exemple). Les espaces sont les galeries creusées par les gobelins et laissées vides.

Les tildes (~) sont des couloirs fais par les trolls (avec des murs de chaque côté, donc si c'est creux derrière on peut péter le mur avec une dynamite pour aller voir les galeries que les trolls n'ont pas occupées par exemple).

Les tirets bas (_) sont les sols trolls et les I sont des pylônes dans ces pièces trolls (un à chaque coin, c'est juste pour montrer que c'est plus sophistiqué qu'un gobelin). Les points (.) sont des feux de camps gobelins.

On voit que ça fait un donjon rigolo, même dans un tout petit espace (20*20). Et ce qui est rigolo aussi c'est qu'au début, il n'y a rien, et que le donjon se forme petit à petit et continuera à se former après.

On pourrait imaginer que lorsqu'un espace reste trop longtemps inoccupé des araignées prennent d'assaut la place, bref, le donjon vit et évolue sans le joueur. Mais si le joueur arrive et décime les occupants, ceux-ci ne pourront plus faire évoluer le donjon, donc il faudra de nouvelles invasions. Ces nouvelles invasions peuvent se faire par d'autres espèces et ainsi le donjon sera un mélange de styles architecturaux rigolo.

Et on peut même générer automatiquement des livres retraçant l'histoire du donjon, selon le point de vue de l'occupant "gobelin" ou "troll" ou... Bref y'a de quoi générer automatiquement du contenu.

Par contre, y'a du travail pour rendre ça joli (cf les remarques sur les tiles au-dessus) et le contenu du donjon n'est pas paufiné comme pour un donjon de raid à la WoW par exemple, avec des rencontres vraiment uniques...

Enfin tout ça pour montrer que c'est faisable si on est motivé, c'est même plutôt amusant à faire.

Allez, pour la forme, un autre donjon généré par mon prog (même recette : gobelins d'abord et trolls ensuite) :

Code:
$~####################$#
$~ .  I_II_II_II_I. #$##
#~ ...____________  ####
#~ ~~~I_II_II_II_I .$###
#I_I ##  ##$$#######$###
#___ ## ########$$######
#I_I    ################
# ... ###$##$$##########
$     #$#####$###$######
###  #########$#########
#########$###########$##
imagine la meme chose en 3D avec des tiles non cubique / rectangulaire.

Si t'y arrive, tu aura deja fait quelque chose de bien

c'est pas impossible mais c'est deja beaucoups plus complexe que ton prog (gerer les liaisons entre les pieces, eviter que les pieces ce superpose etc... tout en ayant un donjon interessant et potentiellement utilise de facon proche optimal l'espace, histoire de pas avoir plein de vide).

surtout qu'il faut prevoir la "reduction" / disparition de ton donjon (histoire que le truc soit pas figer dans le marbre) donc gerer des eboulements par exemples et tous les problemes associés (que faire des parties inaccessible ? si y a des troll/ gob dedans, vont ils chercher à creuser vers la sortie ?).

de plus, il faut pouvoir generer des quetes associés, parceque bon un donjon dynamique c''est bien simpa, mais si y a pas de quete a faire personne ira...


ca devient vite assé complexe surtout si on veux que ce soit "credible" et "amusant".
Euh, en même temps, pourquoi en 3D...?

Sinon ça me fait penser à Dwarf Fortress, pour ceux qui ne connaissent pas, c'est immédiatement à essayer. En matière d'environnement intelligent, on fait difficilement mieux. Par contre, ben, c'est en ASCII quoi..
Citation :
Publié par Gardien
imagine la meme chose en 3D avec des tiles non cubique / rectangulaire.

Si t'y arrive, tu aura deja fait quelque chose de bien

c'est pas impossible mais c'est deja beaucoups plus complexe que ton prog (gerer les liaisons entre les pieces, eviter que les pieces ce superpose etc... tout en ayant un donjon interessant et potentiellement utilise de facon proche optimal l'espace, histoire de pas avoir plein de vide).
Dungeon keeper le fait à moitié (c'est de la 3D mais sur un seul niveau) donc c'est carrément faisable ^^ Même avec un moteur à la Oblivion (basé sur des tuiles mais sans l'aspect randomisé de Dungeon Keeper) serait suffisant à condition d'avoir beaucoup de tuiles à relier.

Citation :
Publié par Gardien
surtout qu'il faut prevoir la "reduction" / disparition de ton donjon (histoire que le truc soit pas figer dans le marbre) donc gerer des eboulements par exemples et tous les problemes associés (que faire des parties inaccessible ? si y a des troll/ gob dedans, vont ils chercher à creuser vers la sortie ?).
Ca j'y ai réfléchi et c'est pas très compliqué. Tu te bases sur un automate cellulaire où tu t'assures que chaque éboulement ne supprime pas de chemin. Le donjon va donc se réduire progressivement voire même changer sa topologie mais rester connexe. Ce n'est vraiment pas un problème en fait.

Citation :
de plus, il faut pouvoir generer des quetes associés, parceque bon un donjon dynamique c''est bien simpa, mais si y a pas de quete a faire personne ira...
Il faut effectivement des quêtes pour, d'une part, que le joueur ait connaissance du donjon et d'autre part, pour le motiver un peu (récompense). En fait, il va être assez facile à priori de générer des quêtes "classiques" automatiquement, du style "va tuer les ogres qui font du mal à ces gentils gobelins et profite-en pour voir si y'a pas des araignées parce que j'ai besoin de venin". Mais, de la même façon qu'on ne pourra pas créer automatiquement des rencontres de boss uniques (quoique ça serait à creuser), on ne pourra pas créer automatiquement des quêtes très originales. Juste de quoi motiver le joueur à explorer.

Une autre motivation à ne pas négliger est qu'après le passage du joueur le donjon ne sera plus jamais pareil. Une crise aura eu lieu dans l'histoire du donjon, grâce / à cause du joueur. On peut même envisager que les joueurs fassent de ce donjon une base pour leur guilde, ou une mine pour récupérer l'or que les gobelins n'ont pas eu le temps de récupérer, etc...
Citation :
Publié par Ebe
Par contre, ben, c'est en ASCII quoi..
Encore heureux, sachant que c'est le seul jeu que j'ai pour l'instant qui fait ramer mon ordi au point de le planter, je n'imagine même pas le résultat avec des images .

Pour l'histoire de l'équilibre écologique, après un test basique à base de renards et de gazelles pour mon TIPE, je confirme qu'il n'est effectivement pas simple d'obtenir un véritable équilibre.
Mais comme en même temps la modélisation que j'ai utilisée n'est pas du tout très poussée, j'ai bon espoir quant à l'apparition de mécanisme de ce genre dans des jeux vidéos .

Et 2D>>3D.
Le problème dans votre réflexion, c'est que vous oubliez que la question principale pour inclure quelque chose dans un jeu n'est pas "est-ce faisable?" mais plutôt "est-ce que cela rapporte plus de sous que cela n'en coûte?"

Un environnement intelligent? Hé bien, pourquoi pas... mais pour quoi faire?
Est-ce que cela va vraiment faire s'abonner plus de joueur que les lions se reproduisent quand ils n'ont pas faim?

UO avait un modèle intelligent: il était par exemple prévu à l'origine que si les joueurs tuaient trop de loups, alors le nombre de moutons augmentait, ce qui attitrait au final les dragons et plein de choses de ce genre...
Le système a été mis en place, mais les joueurs n'y ont jamais vraiment porté attention.

A quoi ça sert de savoir pourquoi le dragon est là?
L'important c'est qu'il fait de la pexe et du loot... voilà le degré de sophistication des joueurs.
Au final, les joueurs tapaient les moutons, les loups et les dragons indifféremment et puis point barre.

Autre exemple, plus récent cette fois: sur COH, les mobs ont un certain degré d'intelligence artificielle.
Quand on ne les attaque pas, on peut assister à des scènes assez sympa mais... combien de joueurs restent à observer les mobs suffisamment longtemps pour cela?

"Tiens au fait, j'ai vu un truc marrant hier... Y'avait un boss de la 5ème colonne* qui demandait à un de ses subordonnés s'il avait pas vu son tube de rouge à lèvres...
- Nooonnn sans déc?
- Ca t'es jamais arrivé?
- Euh, tu sais moi, les 5ème colonne, je leur tape dessus direct, alors bon..."

Bref, la raison pour le manque d'intelligence de l'environnement est déjà en premier lieu que si les joueurs en parlent beaucoup sur les forums, en jeu, ils s'en contrebalancent relativement bien.



(* 5ème colonne = groupe de méchants mobs nazis qui veulent conquérir le monde, disparu avec la sortir eurpéenne de CoH, parce que les devs avaient peur de vexer la clientèle allemande)
Citation :
Publié par Moonheart


(* 5ème colonne = groupe de méchants mobs nazis qui veulent conquérir le monde, disparu avec la sortir eurpéenne de CoH, parce que les devs avaient peur de vexer la clientèle allemande)
Non?!? Ils les ont virés? Ils étaient jolis en plus.
Les lions qui mangent ou se reproduisent c'est clair que le joueur s'en fout, mais le monde qui change (donjons qui évoluent, cités qui apparaissent ou qui se détruisent) je doute que le joueur y soit insensible.
Citation :
Les lions qui mangent ou se reproduisent c'est clair que le joueur s'en fout, mais le monde qui change (donjons qui évoluent, cités qui apparaissent ou qui se détruisent) je doute que le joueur y soit insensible.
Le joueur "lambda" n'y est pas insensible mais c'est tres souvent vecu comme une frustration de voir changer le monde sans forcement avoir participé a ces modifications (et surtout de devoir subir les effets d'un changement a l'origine non souhaité).

Bien sur je parle de modifications majeures qui vont avoir un impact sur le "jeu de tout les jours", si c'est pour faire de l'esbrouffe a coup de sons et lumieres, autant ne rien faire.

Citation :
Techniquement, il n'y a guère de problèmes techniques a rendre les mobs/pnj et l'environnement dynamique.
Alors la je t'arrete tout de suite, c'est au contraire une contrainte majeure en terme de puissance pure que de vouloir faire du dynamique sur la base d'un systeme d'action/reaction.

Et c'est encore pire si tu veux implementer un semblant d'IA (d'ailleurs on parlera plutot de script adaptatif dans le cadre d'un jeux video standart meme MMO).

Un des ordres de grandeur de base dans le domaine c'est d'etre capable de gerer (meme de facon simple) un nombre d'actions/reactions evoluant a minima en fonction du carré du nombre d'entités a diriger.

Et encore on reste la dans un domaine relativement simpliste pour ne pas dire basique.

C'est bien pour ca que dans un jeu solo ou multijoueur, on trouve des scripts bien plus interessants puisque classiquement les developpeurs maitrisent le nombre d'entités et peuvent donc adapter la finesse du script aux capacités de la machine "moyenne" du joueur.

En MMO, ca se complique enormement, puisque chaque "espace de jeu" (que cela soit une instance ou une zone ouverte ca ne change pas grand chose) peut voir son nombre d'entités varier de facon sensible, augmentant alors tres fortement la puissance de calcul sollicitée sur le serveur/cluster.

Bien sur la solution "ideale" serait alors de reporter une partie de la charge sur les clients, mais c'est extremement dangeureux en terme de securité et de fiabilité.

Citation :
Pour être précis, le problème vient du fait que l'environnement est modélisé en 3D. Pour que l'environnement pusse etre modifié, il faudrait modifier le terrain et les objets qui vont dessus. Le serveur en est incapable car il est impossible de créer une IA suffisament avancée pour qu'elle soit capable de modifier la modélisation, les textures, les lumières, etc. C'est pour cela par exemple que dans DAOC, il y a des emplacements prédéfinis pour construire sa maison.
Oui et non.

En terme visuel, le serveur se fout comme de l'an 40 des modifications d'aspect qu'impliquerait la construction d'une ville ou equivalent. Pour lui ce sont juste des coordonnées qui changent avec des references d'entités differentes (et In-game ca ne changerait pas assez vite pour se ressentir).

La ou ca fait mal, c'est que la 3D (plus exactement le positionnement sur 3 axes des entités) va augmenter le nombre d'interactions potentielles entre les entités (puisque non seulement on cherche a faire interagir les entités sur les axes X et Y mais on rajoute Z), cela revient donc en terme de calcul a faire une projection sur le plan X/Y des entités supplementaires de l'axe Z.

La solution est alors d'eviter de superposer grace a la 3D trop d'entités qui peuvent interagir (c'est a dire mettre une condition sur Z pour definir si oui ou non il y a interaction).

Un petit exemple "pratique" (et traité de facon simple):

Prenons une maison de plein pied (donc pas d'etage)

Maintenant je mets un joueur dans cette maison qui se deplace avec 1 lampe possedant la capacité de s'allumer si une autre lampe de meme nature est a moins de 5 m.

Tout seul il n'y a aucun autre calcul a faire que l'eclairage "naturel".

Rajoutons un 2ieme joueur avec une 2ieme lampe de meme type: a chaque deplacement on aura 2x1=2 interactions/calculs a effectuer pour determiner le caractere eteint ou allumé des 2 lampes. Et 3 calculs d'eclairage au maximum (1 naturel + 2 lampes).

Maintenant on passe au groupe de 5 joueurs: ce qui fait 5x4=20 calculs de distance a faire a chaque deplacement et 6 calculs d'eclairage au maximum (1 naturel + 5 lampes).

Passe a 25 joueurs et on arrive a 25x24=600 calculs de distance pour seulement 26 calculs d'eclairage.

Maintenant je decide de contruire 1 etage dans ma maison (hop je passe en 3D la positionnement de mes entités), la il se pose 1 question, les lampes peuvent elle interagir d'un etage a l'autre.

Si oui, j'ai juste augmenter le nombre d'interactions/calculs en fonction du nombre supplementaires de lampes/joueurs a l'etage. si non, ca ne change rien.

Dans tout les cas, les calculs d'eclairage ne seront modifiés que par mon nombre total de lampes.

Si j'applique mon exemple a la conception classique d'un MMO, le serveur/cluster a la charge de definir si les lampes sont allumées ou eteintes (il est donc tres sensible a une modification du nombre d'interactions provoquée par les arrivées et deplacements des joueurs et ce a une echelle exponentielle), en revanche le rendu visuel reste du coté client et aura une progression lineaire en terme de puissance.

Cet exemple peut aussi servir a illustrer l'impact des instances sur la charge de calcul que produit une zone definie d'un MMO en fonction du nombre de joueurs (des etages qui n'interagissent pas pouvant etre comparés a des instances).


Tout ca pour dire que l'environnement "intelligent" c'est pas pour demain en MMO et que vouloir tenter de se rapprocher meme de facon tres simple d'un fonctionnement coherent en terme simulationniste ca va encore demander un sacré gain de puissance (en supposant que les joueurs ne s'amusent pas non plus a faire deriver le modele en permanence, ce qui serait tres etonnant).
Tout à fait Dufin, et c'est pour ça que personnellement je recherche des solutions à mi-chemin. Mes essais de donjon dynamique par exemple, je pense qu'on pourrait les mettre en oeuvre dans un MMO.

En effet, les interactions sont parfaitement contrôlées puisqu'elles n'ont pas lieu entre les entités (les mobs) mais à un niveau supérieur : la faction troll veut agrandir son donjon, pouf y'a une salle qui apparaît. Le seul calcul à faire est la localisation de la salle, ce qui d'une part n'est pas si compliqué que ça, et d'autre part peut se faire une fois de temps en temps (puisque les salles n'apparaissent pas 50 fois par seconde non plus). Les critères pour savoir si la faction veut une nouvelle salle ou non sont là aussi globaux et peuvent tenir en quelques chiffres clés maintenus au niveau de la faction (ressources, ...).

Une bonne partie des étapes d'évolution sont simplement des règles locales (du style : là j'ai un carré de 3*3 cases creusées par les gobelins mais pas renforcées, alors j'ai une chance sur 1000 que le centre du carré soit remplacé par une case "effondrement") qui ne dépendent pas des entités présentes et dont le calcul se fait en temps linéaire en la taille du monde (c'est à dire quadratique en la "largeur" du monde) et peut se faire très facilement en parallèle. Ca ressemble beaucoup aux shaders des cartes graphiques pour ceux qui ont déjà programmé dessus, ou aux versions simples des automates cellulaires (type "jeu de la vie").

L'autre avantage de ma proposition c'est qu'elle a vraiment un impact intéressant pour le joueur. En effet, il pourra vider un donjon et dire "c'est moi qui ai vidé ce donjon ; bon, d'accord, du coup il a été envahi par un dragon mais je pouvais pas prévoir". Il pourra vider un donjon, revenir plus tard et avoir une expérience de jeu complètement différente (attention, j'ai pas dit "nouvelle" ; il faut comparer ça aux niveaux aléatoires de Diablo, l'aspect évolutif et persistant en plus).

En clair, le rapport intérêt / complexité est beaucoup, beaucoup plus élevé que pour une simulation de "j'ai faim ou je cherche une femelle".

Ensuite, est-ce que ça va rapporter de l'argent ? Si les joueurs préfèrent tuer des sangliers en boucle, alors non, ça ne sera pas rentable par rapport aux solutions existantes.
Citation :
Un des ordres de grandeur de base dans le domaine c'est d'etre capable de gerer (meme de facon simple) un nombre d'actions/reactions evoluant a minima en fonction du carré du nombre d'entités a diriger.
Il faudrait etre completement idiot pour concevoir la gestion de toutes les entitées individuellement.

Ton exemple avec les lampes est juste un exemple de mauvaise conception

C'est une des bases du génie logiciel : il faut créer des classes de comportements communs puis des sous classes pour chaque comportement différent.

Exemple :

Imaginons un systeme dans lequel un clan d'orcs nomade se déplace dans le monde. Il sont a la recherche de proies faciles pour faire du pillage mais doivent éviter de rencontrer une force militaire trop puissante qui serait capable d'atteindre leur campement et massacrer femmes et enfants.

L'entité que le serveur a gérer est un clan. Par une simple analyse des villages de joueurs, le serveur détermine une cible potentielle. Ensuite, par une analyse du terrain et des statistiques de repartition des joueurs, il détermine un endroit peu fréquenté et difficile d'accés.

Il place le campement a cet endroit. Il met en place une zone sur laquelle patrouillent des guerriers et place loot et mobs dans le campement.

Ensuite, il analyse les joueurs qui trainent aux environs, et les fait attaquer par des orcs qui lootent les joueurs. Il a juste a faire apparaitre les mobs, ensuite l'IA de chaque mob gere le combat. Si les orcs sont vainqueurs, les objets lootés sont placés au campement.

Le serveur fait des statistiques. Si les orcs sont plus souvent défaits que vainqueurs, il fait lever le camp. Si le campement est découvert, en fonction de ces stats, il decide ou non de lever le camp avant que les joueurs ne puissent organiser un raid. etc etc.

En résumé, gérer l'IA d'un campement d'orc dynamique, ca ne coute pas beaucoup plus de ressources que de gérer l'IA d'un seul orc.

Citation :
Bien sur la solution "ideale" serait alors de reporter une partie de la charge sur les clients, mais c'est extremement dangeureux en terme de securité et de fiabilité.
Rien qu'avec cette phrase, tu montre que tu ne connais absolument rien du fonctionnement technique d'un MMO. La crédibilité de ton message en prend un sacré coup.

Ce n'est pas une solution idéale, c'est une solution impossible. Tu ne peut pas gérer coté client quelque chose qui affecte les autres client, puisqu'un client ne communique pas directement avec les autre clients.

Citation :
En terme visuel, le serveur se fout comme de l'an 40 des modifications d'aspect qu'impliquerait la construction d'une ville ou equivalent. Pour lui ce sont juste des coordonnées qui changent avec des references d'entités differentes (et In-game ca ne changerait pas assez vite pour se ressentir).
Le serveur il s'en fout, mais pas le client. Si le serveur doit placer un camp d'orcs dans le monde, il ne faut pas qu'il le place en plein milieu d'une foret ou d'une montagne. Dans un environnement modélisé, le serveur est incapable de faire la différence entre un terrain plat, une montagne, un ocean, une foret, etc. Si tu veut placer quelque chose dans ton environnement, tu doit lui dire manuelement : a tel endroit, il y a un espace libre. Il est donc impossible de faire un environnement dynamique dans ces conditions.

Citation :
Un petit exemple "pratique" (et traité de facon simple)
Et sans aucun rapport avec le sujet. Moi aussi, je peut te donner des dizaines d'exemples de systèmes qui bouffent inutilement de la puissance de calcul.


@ DooMeer

Ton système est certes interessant, mais il fait justement réagir chaque entité l'une avec l'autre. Dans ton système, ca va parce que ca reste simple, mais a l'echelle d'un environnement de MMO, ca requiert effectivement trop de puissance de calcul.
Citation :
Publié par Gautman
Ton système est certes interessant, mais il fait justement réagir chaque entité l'une avec l'autre. Dans ton système, ca va parce que ca reste simple, mais a l'echelle d'un environnement de MMO, ca requiert effectivement trop de puissance de calcul.
J'écris 20 lignes qui tentent de démontrer le contraire et toi tu me réponds par "c'est faux" ??

D'abord, les entités qui réagissent les unes avec les autres, ce sont les cases du monde. Celles-ci ne réagissent qu'avec leurs voisines, ce qui est beaucoup plus simple qu'un test d'interactions entre des entités qui potentiellement réagissent toutes entre elles. Leur nombre est donc parfaitement contrôlé, le temps de calcul est linéaire en fonction de la taille du monde, et en plus c'est vachement bien parallélisable. Cerise sur le gâteau, tu n'as à faire ce calcul qu'une fois de temps en temps. Les autres entités qui agissent sont les factions mais les seuls cas où il y a interaction sont les cas où il y a déjà une interaction au niveau de la case, donc là encore c'est parfaitement contrôlé.

Donc je vois pas comment tu peux dire que ça ne passe pas à l'échelle à moins d'avoir fait le test.
J'adore:

Citation :
Il faudrait etre completement idiot pour concevoir la gestion de toutes les entitées individuellement.
+

Citation :
Il a juste a faire apparaitre les mobs, ensuite l'IA de chaque mob gere le combat. Si les orcs sont vainqueurs, les objets lootés sont placés au campement.
Ton exemple a 2 niveaux de gestion: l'un global (l'apparition du camp et les grandes decisions du "clan") l'autre individuel (gestion des interactions entre mobs et PJs).

Alors bien sur le script adaptatif ou "IA" de ton camp n'est pas generateur de beaucoup de charge pour le serveur/cluster mais a la limite ca pourrait l'etre que ca n'est pas important puisque tu peux gerer la chose en temps "differé" par rapport aux pointes que subit le serveur/cluster.

Ca c'est tres bien pour faire evoluer (comme ce sur quoi travaille Doomer) un univers en terme de population et reapartition des structures propres aux PJs/PNJs/Mobs.

Par contre ca ne rend pas ton environnement plus "intelligent" ca le rend juste evolutif au yeux des joueurs (et donc comme signalé avant dans le thread les joueurs risquent de s'en foutrent completement).

Pour que le joueur percoive un semblant d'inteligence (vous me direz dans les yeux d'un orc ca va etre dur de le trouver mais bon....) il va falloir que tes Mobs (au sens 1er du terme c'est a dire Mobile Object) puissent adopter des reactions coherentes qui pourront etre interpretées come "intelligentes" par les joueurs lorsque ces derniers vont les rencontrer (c'est le meme syndrome que le debat PvE/PvP).

Et la on est obligé de passer a une echelle quasi individuelle (sauf a vouloir faire se rencontrer des armées de plusieurs milliers d'entités ou l'astuce consisterait a les gerer par "paquets coherents" afin de limiter la charge tout en permettant l'illusion d'une gestion au cas par cas).

Citation :
Rien qu'avec cette phrase, tu montre que tu ne connais absolument rien du fonctionnement technique d'un MMO. La crédibilité de ton message en prend un sacré coup.

Ce n'est pas une solution idéale, c'est une solution impossible. Tu ne peut pas gérer coté client quelque chose qui affecte les autres client, puisqu'un client ne communique pas directement avec les autre clients.
Est ce que j'ai annoncé qu'un calcul client pouvait affecter un autre client ? Je ne crois pas.

C'est simplement une methode qui consiste a delocaliser une partie de la charge sans pour autant donner la responsabilité du resultat final. C'est le principe des groupes de calculs SETI autrement appellé "Calcul massivement distribué".

Le probleme de cette methode (qui est techniquement tres efficace) c'est que face a l'imagination des joueurs pour "tromper" le jeu, elle se revele beaucoup trop sensible.

Citation :
Et sans aucun rapport avec le sujet. Moi aussi, je peut te donner des dizaines d'exemples de systèmes qui bouffent inutilement de la puissance de calcul.
Mon exemple n'est pas la pour montrer qu'on bouffe inutilement de la puissance de calcul, il est juste la pour donner un ordre de grandeur de la puissance de calcul necessaire en fonction des entités que tu veux gerer suivant un principe d'action/reaction quasi immediat (ce qui est la cas des combats en MMO).

Une des problematique que l'on rencontre dans les MMOs et pas dans les autres jeux, c'est justement la non-maitrise du nombre d'entités interagissant au meme endroit au meme moment. Cette non-maitrise entraine une explosion exponentielle des interactions et donc de la charge serveur/cluster.

Alors bien sur les editeurs rivalisent d'astuces pour eviter ces rassemblements d'entités non-maitrisés, cela va des limitations de population de joueurs en passant par l'instanciation pour arriver dans certains cas extremes a une limitation du nombre de Mobs avec lesquels un joueur peut interagir.

Et aujourd'hui, en dehors de ces astuces, aucun systeme (en dehors d'une separation pure et dure des joueurs/entités) ne peut eviter l'explosion de la charge de calcul dans les cas de rassemblements trop importants.

Citation :
C'est une des bases du génie logiciel : il faut créer des classes de comportements communs puis des sous classes pour chaque comportement différent.
Ca permet surtout d'eviter de se taper autant de classes de comportements que d'entités. Ca n'elimine absolument pas la forme de progression de la charge (exponentielle) en fonction du nombre d'entités (on peut juste la reporter sur une classe/sous-classe ce qui dimunera la charge totale sans regler le probleme de sa progression).

En sachant que tout ca ne marche que vis a vis des Mobs, des que tu vas mettre au milieu un nombre plus ou moins importants de joueurs tu vas devoir gerer autant de "comportements" que de joueur et donc une charge que tu ne peux absolument pas t'amuser a essayer de separer en classe/sous-classe.

Le phenomene est d'ailleurs constatable dans pas mal de MMOs, tu peux mettre 300 Mobs et 3 joueurs, ca va se passer sans trop de soucis (meme avec des comportements assez precis des Mobs). Rajoutes 30 ou 40 joueurs au milieu et tu as de forte chance de faire exploser la zone/serveur.

C'est typiquement ce qu'ont utilisé les joueurs de SWG pour emmerder SOE il y a quelques années (ou comment faire une manif dans une ville au point d'obliger les GMS a "disperser" la foule pour eviter le plantage), ce qui s'est passé sur WoW lors d'evenement previsibles (ouvertures des portes d'AQ), ce qui se passait sur EQ2 avant l'instanciation des zones exterieures en fin de Beta (pour 100 a 200 joueurs au dela ca pliait) ou correspondait a une technique de Lamers lors de certains raids sur EQ1 (comment faire planter la zone pour forcer un repop ou faire wipe une autre guilde).

Pourtant dans tout les cas, il y avait largement autant, si ce n'est plus de Mobs, a gerer pour le serveur/cluster que de joueurs et bizarrement ce sont les joueurs et leurs comportements non-maitrisables qui entrainent l'explosion de la charge.
Vive les débats stériles.

Effectivement, je prefère regarder ce qu'il est possible de réaliser avec la technologie actuelle. Rien n'empeche de faire un environnement trés dynamique aux yeux des joueurs en sans avoir a micro-gérer chaque entitée.

Si ton objectif est de faire un jeu qui est aussi complexe en intereactions que la réalité, je te souhaite bon courage.

Le constat de ce thread était que les environnement actuels sont completements statiques. On peut trouver des solutions sans tomber dans l'extreme inverse.

Citation :
C'est simplement une methode qui consiste a delocaliser une partie de la charge sans pour autant donner la responsabilité du resultat final. C'est le principe des groupes de calculs SETI autrement appellé "Calcul massivement distribué".
Décidement, tu aime t'enfoncer encore plus. C'est impossible car il faudrait que les temps de latence dans la communication client/serveur soit inferieurs a la milliseconde. Dans le système SETI, il n'y a pas de contrainte de communication en temps réel.

Citation :
Ca c'est tres bien pour faire evoluer (comme ce sur quoi travaille Doomer) un univers en terme de population et reapartition des structures propres aux PJs/PNJs/Mobs.
Si ca ce n'est pas un environnement dynamique, donne moi ta définition parce que je comprends pas bien ce que tu recherche.

Citation :
Pour que le joueur percoive un semblant d'inteligence (vous me direz dans les yeux d'un orc ca va etre dur de le trouver mais bon....) il va falloir que tes Mobs (au sens 1er du terme c'est a dire Mobile Object) puissent adopter des reactions coherentes qui pourront etre interpretées come "intelligentes" par les joueurs lorsque ces derniers vont les rencontrer
Je ne crois pas que ce soit vraiment le sujet du débat. Mais c'est une utopie de croire que l'on arrivera dans un futur proche a une IA d'un meilleur niveau dans les jeux video puisque comme souligné précedamment, l'IA actuellement n'est en fait qu'une liste d'actions/récations prédéfinies. La seule chose qui pourra évoluer , c'est le nombre d'actions/reactions.

Citation :
Une des problematique que l'on rencontre dans les MMOs et pas dans les autres jeux, c'est justement la non-maitrise du nombre d'entités interagissant au meme endroit au meme moment. Cette non-maitrise entraine une explosion exponentielle des interactions et donc de la charge serveur/cluster.
Tout les MMO que je connais on des systèmes pour maitriser le nombre d'entités et de joueurs présents dans une zone.

Pour etre plus clair, ce qui augmente avec le nombre de joueurs, c'est surtout la quantité de données qui doivent être transférées. Cela pose problème surtout au niveau du client car il dispose d'une connexion de mauvaise qualité en ce qui concerne les temps de latence et le débit. La charge de calcul sur le serveur est un problème de qualité du génie logiciel mais on est loin actuellement d'être vraiment limité par ce problème.

Ce qui est problèmatique, c'est que plus l'environnement est dynamique, plus les informations doivent etre stockées coté serveur et transferées au client, ce qui augmente la masse de données que le client doit télécharger et donc les problèmes de lag. Bien sur il existe des solutions plus ou moins contraignantes, mais cela reste la principale limitation actuelle.

Mais bon, je pense que tu te crois suffisament calé sur la question pour ne pas prendre en compte ce que je t'explique. Libre a toi.
Citation :
Le constat de ce thread était que les environnement actuels sont completements statiques. On peut trouver des solutions sans tomber dans l'extreme inverse.
Un environnement qui est dynamique juste dans la dispositions des Mobs ou structures c'est l'equivalent d'un sim XXX.

Ce qui va etre important pour les joueurs c'est comment ils vont pouvoir interagir avec ce meme environnement et les autres entités mobiles et si possible dans des situations en temps réel.

Citation :
Décidement, tu aime t'enfoncer encore plus. C'est impossible car il faudrait que les temps de latence dans la communication client/serveur soit inferieurs a la milliseconde. Dans le système SETI, il n'y a pas de contrainte de communication en temps réel.
Aujourd'hui tu as deja des temps de latence rien que pour l'envoi et la reception des informations qui sont de l'ordre du dixieme de seconde dans le cadre des MMOs. Inclure un calcul a reception d'une info pour renvoyer l'info au serveur ne serait qu'une majoration marginale de ces temps de latence existants (bien sur tout va dependre de ce que tu demandes mais on peut faire leger et rapide).

Citation :
Pour etre plus clair, ce qui augmente avec le nombre de joueurs, c'est surtout la quantité de données qui doivent être transférées
L'augmentation de la quantité d'information a transferer est lineaire par rapport au nombre d'entités presentes (sauf dans le cas ou tu geres par "paquet" tes entités), rien a voir avec l'augmentation exponentielle des interactions qu'un serveur/cluster devra se taper.

Encore aujourd'hui tu peux parfaitement jouer a un MMO avec une connection RTC en 56k sauf dans le cas d'un code reseau pondu avec les pieds (ce qui arrive de plus en plus et c'est dommage).

Citation :
Si ca ce n'est pas un environnement dynamique, donne moi ta définition parce que je comprends pas bien ce que tu recherche.
Un environnement evolutif est un environnement dynamique mais cela ne le rend pas "intelligent" pour le joueur "lambda" (il me semble que le titre du thread c'est justement de parler d'intelligence au niveau environnemental).

Bien sur un developpeur pourra se palucher devant un pseudo ecosysteme plus ou moins coherent, mais ca fera bien rire le 1er joueur qui deboulera au milieu et prendra un malin plaisir a decortiquer le comportement des mobs pour constater qu'il est toujours aussi basique.

On appelera ca le syndrome "Ryzom" ou franchement si le comportement social des mobs entre eux etait sympa a voir, le comportement vis a vis des joueurs n'etait pas plus evolué que les autres MMOs.

Citation :
La charge de calcul sur le serveur est un problème de qualité du génie logiciel mais on est loin actuellement d'être vraiment limité par ce problème.
Une charge de calcul peut etre allegée ou modifiée par la qualité logiciel (dans une fourchette mini/maxi definie par les concepts/algorythmes utilisables) mais la progression de cette meme charge sous la demande c'est de l'algorythmique pure et dure.

Et ca tu ne peux pas y couper, ce qui est possible a gerer a l'echelle de l'unité ou du petit nombre devient totalement impossible a des echelles superieures sans une augmentation consequente de la puissance de calcul instantanée ou son etalage dans le temps.

Rajouter 1 action possible pour 1 entité, c'est voir la charge totale "diagnostic/reflexion" de ton script multiplier d'un facteur X ou X est le nombre d'unité que tu voudras faire interagir en meme temps et au meme endroit.

Ou alors tu te contrefous de rajouter une action a titre unitaire et cela revient a gerer par paquet tes entités, ce qui risque de faire desordre dans le cadre classique d'un MMO (tu vois 10 orcs reagir de la meme facon quoiqu'il arrive parce que tu as fait l'economie d'appliquer ton action supplementaire a chaque unité ?).

Citation :
Je ne crois pas que ce soit vraiment le sujet du débat. Mais c'est une utopie de croire que l'on arrivera dans un futur proche a une IA d'un meilleur niveau dans les jeux video puisque comme souligné précedamment, l'IA actuellement n'est en fait qu'une liste d'actions/récations prédéfinies. La seule chose qui pourra évoluer , c'est le nombre d'actions/reactions.
Une IA commence pas un systeme tres simple de: Collecte de données=>Diagnostic/Reflexion=>Action.

Ce qui prend le plus de "charge", c'est tout le process de Diagnostic/Reflexion.

Quand tu travailles sur l'evolution d'un environnement, le principe d'IA est tres peu limité par la puissance brut instantanée de calcul puisque tu as le "temps" et/ou tu peux differer certains calculs.

Par contre quand tu travailles sur de l'action/reaction en temps réel, les choses se gatent.

Arriver a modeliser les deplacements d'un troupeau de 200 ou 300 bisons (ou tout autre animal gregaire) dans un univers c'est tres bien (et ca fera probablement halluciner la 1iere fois que tu le vois), maintenant ce qui peut faire réellement "triper" le joueur c'est de lui proposer une veritable chasse au bison, si possible a plusieurs dizaines de chasseurs.

Seulement la, ton bel ecosysteme evolutif/dynamique, ne sert a rien, ce qu'il faut c'est de l'action/reaction (ressenti comme de l'intelligence) a l'echelle d'un troupeau vis a vis d'un groupe de chasseurs en temps réel (ou semi temps réel).

Citation :
Ce qui est problèmatique, c'est que plus l'environnement est dynamique, plus les informations doivent etre stockées coté serveur et transferées au client, ce qui augmente la masse de données que le client doit télécharger et donc les problèmes de lag.
Tout va dependre de comment sont gerées les données concernant l'environnement et specialement pour les "decors". La ou ca va poser un réel probleme c'est pour les modifications majeures de la topographie, mais on peut supposer que ces modifications majeures prennent du temps et sont parfaitement compatibles avec des patchs reguliers de tres courtes durée ne necessitant pas forcement d'eteindre les serveurs (ca ce fait d'ailleurs sur certains MMOs).

Reste la partie de decor qui peut evoluer plus rapidement au yeux des joueurs (constructions/vegetations) et la si la conception du jeu le prevoit ca ne genere pas plus de traffic reseau que la normal (ville de joueur ou champ d'extraction sur SWG par exemple).

Pour les Mobs, ca ne change rien, que cela soit un orc ou un vulgaire lapin, la quantité d'infos a transmettre pour les visualiser reste la meme.

Tu n'as jamais assisté a un depop/repop de 100 % des mobs d'une zone/donjon effectué par un GM ou un Dev ? Ca ne genere aucun lag supplementaire et c'est normal vu le peu d'infos a transmettre a ce moment la (une loc et un type par mob concerné, ca pese pas lourd au final).

Citation :
Mais bon, je pense que tu te crois suffisament calé sur la question pour ne pas prendre en compte ce que je t'explique. Libre a toi.
J'ai fait suffisamment de Recherche Operationnelle et d'algorythmique dans ma vie professionnelle pour connaitre les contraintes inherentes a un systeme d'action/reaction et a la charge que cela genere en fonction du nombre d'entités impliquées dans le process.

Bref, aujourd'hui on peut parfaitement envisager la conception et la mise en place d'un environnement evolutif/dynamique (niveau conceptuel et technique) sans solliciter plus de puissance de calcul ou de taux de transfert de données.

Par contre, demander de plus en plus d'interaction en temps réel avec cet environnement (au sens large, c'est a dire en considerant aussi les Mobs et les autres joueurs) en y incluant des actions/reactions coherentes (a defaut d'etre intelligentes) se heurte de plein fouet a une inadequation avec la puissance de calcul disponible.

Et si le 1er aspect est tres aguicheur pour faire venir un joueur, c'est le 2ieme qui le retiendra.
Bon juste mon grain de sel a propos du point de stabilite d'un biotope:

J'y connait rien en prog, mais parcontre je m'y connait un peu en science naturelles...

Donc pour reprendre l'exemple des lapins et des lions... Le probleme pose etait de savoir ce qui se passerait si les lions mangent trop de lapin, et que les lions deviennent trop nombreux... Ben il suffit de regarder la nature et de s'en inspirer... Quand une espece devient trop dominante que se passe t'il?

La nourriture n'etant plus suffisante la population predatrice ne parvient plus a ce nourrire, donc certain meurent de faim, ou deviennent cannibale, ce qui aurait pour effet dans le cadre lion-lapin de reduire le nombre de lions automatiquement donc de permettre aux lapins de reaugmenter leur population...

Si la population des lions n'est pas suffisante, et que les lapin proliferent trop, on peut imaginer que passe un certain ratio, une epidemie ce declanche et reduit en tres peu de temps le nombre de lapin...

Je pense pas qu'introduire des % de population maximal dans une aire donnee ou en rapport avec une autre espece avant un declanchement d'un evenement soit tres difficile a coder, mais peut-etre que je me trompe...
Citation :
Je pense pas qu'introduire des % de population maximal dans une aire donnee ou en rapport avec une autre espece avant un declanchement d'un evenement soit tres difficile a coder, mais peut-etre que je me trompe...
A coder absolument aucune difficulté (ca peut meme etre tres drole de donner juste quelques regles comportementales de base en 30 sec aux lions et aux lapins et de regarder ce qui se passe), mais qu'est ce que ca impliquera/apportera dans le "jeu de tout les jours" ?

On peut imaginer que les lapins servent de ressources de base indispensable pour les joueurs et que les lions soient plus "prestigieux" (XP, loot, quete, etc...) mais du coup est ce que le fait d'integrer un environnement evolutif ne va pas aussi permettre a certains de completement pourrir certains aspects du jeu ?

Que ce passe t'il si j'organise un raid dans la zone ayant pour but d'eradiquer en quelques minutes l'integralité de la population de lapin et de lion ? (on "reset la zone" et du coup on repart a 0 ?)

Que ce passe t'il si des petits malins decident de tuer exclusivement des lapins ou des lions juste pour voir ? (on bloque une partie du contenu ?)

Etc...

Le principe d'un ecosysteme equilibré (ou tendant vers un equilibre) c'est que a aucun moment il n'y a d'actes "gratuits" ou en total incoherence avec l'image qu'on s'en fait.

Hors en MMO, les joueurs sont les specialistes des actes incoherents par rapport a l'univers.
Citation :
Publié par Dufin


Hors en MMO, les joueurs sont les specialistes des actes incoherents par rapport a l'univers.
Bon pas seulement en mmo en realite aussi

Pour ce qui est de buter tous les lapins par exemple:

Avoir quelques points de pop (des terriers par exemple) qui de toutes facons pop un lapin tous les x temps... ( on peut faire la meme chose avec les lions)

Si on bute tous les lapins, la population de lions va certainement diminuer tres fortement, mais ton aire tu ne vas la farmer 24h/24 donc automatiquement cela va se repeupler...
Ou autre solution, Le niveau de regeneration(reproduction) augmente en proportion par rapport au nombres de Lapin/lion tues par des joueur
Tu viens de decouvrir que pour une simulation environnementale relativement simple au 1er abord, tu vas devoir y inclure un nombre importants de "garde-fous".

Et le pire, c'est que les solutions sont totalement incoherentes si on compare a la realité.

C'est bien pour ca que du coup, la facon de fonctionner d'un environnement en MMO n'a pas forcement besoin d'etre realiste mais juste adapter aux habitudes de "consommation" des joueurs.

En gros pour arriver a un resultat probablement identique avec moins d'emmerdement, il vaudrait mieux faire une bete table de spawn partagée (genre 90% de voir apparaitre un lapin/groupe de lapin et 10% de Lion) avec quelques regles de comportements sociaux pour l'ambiance (aggro des lions sur les lapins a X metres et fuite en groupe des lapins devrait suffire).

Apres rien n'empeche de modifier a chaud la table partagée si on desire que cela corresponde a une evolution de la zone (et ce meme de facon automatique apres analyse de l'activité).
Les systèmes d'autorégulation existent, que ce soit dans la nature, en informatique, en biologie... Boucles de rétroaction, feedback inhibiteurs ou excitateurs, etc...

Pour donner une autonomie vraie, mais également une évolutivité ainsi qu'une adaptabilité aux systèmes créés, ce que l'on utilise (pas dans les MMO ) ce sont des couplages systèmes experts/réseaux neuronaux.

Le système expert pose les règles, les garde fous comme disait un des intervenants. Le réseau neuronal apporte la composante apprentissage/évolution. Le jeu consiste à trouver les bons modes d'interaction entre les deux (sysex=master, réseau=slave, l'inverse, système flou...), le bon set de règles pour le sysex, la bonne architecture pour le réseau... Mais on dira que si c'est encore peu employé (parce que bonjour la galère à développer), ça marche très bien pour des choses aussi diverses que le diagnostique médical, le contrôle/régulation du thermique sur un site seveso 2, bref des trucs un chouilla complexe quoi.

Revenons à nos moutons. Si le but est de récréer ingame un biotope voir un écosystème complet, pas la peine, c'est infaisable. Par contre, créer des systèmes plus frustres, mais néanmoins possédant les carac suivantes :
-autonomie
-évolutivité
-adaptabilité
oui c'est faisable, avec les tech actuelles, et sans que cela n'amène une charge telle que les infra rendent l'âme.

Le petit prog de DooMer est excellent, en fait pour atteindre ce dont moi je parle, il ne lui manque qu'une chose : une visée téléonomique, en gros un objectif. Et une règle de rétropropagation permettant au système de tendre vers cet objectif au cours des itérations successives par modification de ses paramètres internes.

Certes, moi je ne suis pas prog, donc je ne me prononcerai pas sur la faisabilité de ce genre de choses dans un cadre MMO. Mais je ne saisis pas en quoi cela viendrai bouleverser la donne, que ce soit côté client ou côté serveur. Côté serveur, qu'un mob/groupe de mob agisse en fct de règles fixes ou évolutives ne change pas grand chose. En terme d'échanges clients/serveurs, c'est kif kif. Et côté client pur, c'est kif kif aussi.

Enfin, pour rebondir sur les fameux lapins et lions. A vous lire, j'ai l'impression de vivre sur une autre planète. Je ne sais pas ce qu'est un système équilibré, encore moins un eco système équilibré. Jusqu'à preuve du contraire, tous les systèmes tendent vers la rupture, après ce n'est qu'une question d'échelle de temps, de point de vue... Les seuls systèmes réellement à l'équilibre sont des systèmes logiques, mathématiques, abstraits.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés