Language de developpement?

Répondre
Partager Rechercher
Salut,

Selon vous, quel est le meilleur langage pour créer un MMORPG? beaucoup mentionne le C++, mais quels sont ses possibilités? ses limites?

quel est le langage utilisé pour un Daoc ou un Wow par exemple?

Merci de votre aide.
il n'y a pas de "meilleur" langage ....
ils ont tous des avantages ...

La plupart des jeux (et donc des MMOGs) actuels sont développés en C ou en C++...
D'autres sont en java, ruby, flash, ...
Celui que tu maîtrises ?...
Celui qui correspond le mieux à ton installation et aux features de ton jeu ?...
Celui qui va le plus vite ou celui qui est le moins lourd ?...

On ne peut pas répondre à ta place.
Citation :
Publié par Blasteguaine
Puisqu'il faut bien que quelqu'un le dise, je te conseille Common Lisp, ça roxe tout.
Oublie pas le pack de développement comprenant la corde à pendu
Les MMO ont tendances à avoir une représentation objet plus qu'évidente. Donc tout langage orienté objet permet une approche facile pour un développement amateur.
Si tu vas plus en profondeur, tu tomberas forcément sur du C ou C++. Mais tu peux très bien tomber sur des projets alternatifs dont les objectifs ne sont pas d'avoir la plus grosse, comme ToonTown développé en python si je me souviens bien.
Citation :
Publié par nepser
Oublie pas le pack de développement comprenant la corde à pendu
Pas faux, mais quitte à apprendre la programmation de 0...
Citation :
Les MMO ont tendances à avoir une représentation objet plus qu'évidente. Donc tout langage orienté objet permet une approche facile pour un développement amateur.
Common Lisp.
Citation :
Si tu vas plus en profondeur, tu tomberas forcément sur du C ou C++. Mais tu peux très bien tomber sur des projets alternatifs dont les objectifs ne sont pas d'avoir la plus grosse, comme ToonTown développé en python si je me souviens bien.
Common Lisp
Citation :
Publié par Blasteguaine
Common Lisp...Common Lisp
Pour cette réponse tu aurais pu être mon héro, mais le Common Lisp est un langage fonctionnel et pas objet.
Et le Lisp ça sert que à faire des maths nah .
Pour un MMO, il y a rarement un seul et unique language.

Pour ce qui est du client (note: quand je parle du "client", il s'agit évidement du logiciel client, par opposition au logiciel serveur), il est nécessaire d'utiliser un language performant au niveau du temps du traitement, et capable d'utiliser une bibliothèque graphique (principalement OpenGL ou DirectX).

On tombe donc très souvent sur du C++, Java, C#.

Pour ce qui est du Lisp, je ne pense pas qu'il soit possible d'utiliser une API graphique directement, et je n'ai jamais entendu parler de quelconque binding qui le permettrait

A noter que, avec l'explosion de la création des "mod" pour les clients des MMO depuis quelques années, ces derniers supportent de plus en plus l'utilisation de languages de scripts ( LUA, JavaScript, pour ne citer qu'eux...).


Pour ce qui est du serveur, alors là c'est autre chose.
Car, en plus évidement de nécessite des grandes performance au niveau de la rapidité du traitement des instructions, il est quasi-obligatoire d'obtenir une application distribuée.
C'est à dire que l'ensemble du logiciel est découpé en plus programmes, chacun sur un PC différent, et que tous ces modules doivent pouvoir communiquer entre eux.

On trouve donc souvent du C, C++, JAVA (avec J2EE; les Sims Online est un exemple puisqu'il utilise à ma connaissance JBoss), également du .Net
Les languages de scripts sont également de la partie (avec pourquoi pas du LISP ).


Donc, à défaut d'avoir "le meilleur language", on en utilise plusieurs, pour utiliser le meilleur de chacun.
Mouai, en gros Sebajuste tu dis qu'il faut tout le temps utiliser un langage hyper performant client comme serveur et en plus combiner plein de langages...

En fait, c'est un raisonnement absurde compte tenu de la réalité de la conception des produits.
Un client peut être lent, d'ailleurs il y a très peu de code dans le client finalement qui tient spécifiquement du gameplay et système de jeu. La plus grande par reste amha du coding graphique et de gestion de ressources (commun à tous les jeux).
Si tu ne comptes pas avoir les graphismes de Far Cry, pas besoin de chercher les hautes performances du C.
Si tu comptes orienter ta méthode de gestion de jeu sur du scripting et avoir du graphisme convenable mais sans plus, oriente toi vers du Python par exemple.
Si tu vas vers du haut de gamme avec une grande par de personnalisation de l'utilisateur, tu peux comme pour WoW combiner un langage très haut niveau comme ceux énoncés par Sebajuste.
Le client n'a pas spécialement besoin d'être hyper rapide, loin de là d'ailleurs. Si tu sais faire des jeux dans langage, restes-y.

En ce qui concerne le côté serveur, ça dépend encore de tes besoins et espérances. Est-ce que tu vas faire jouer 5000 joueurs en simultané? Est-ce que tu veux faire un système de combat de "zone" comme AoC ou en lock'n'kill comme la plupart des autres MMO?
Plus tu vas dans la complexité, plus tu auras besoin d'un langage bas niveau pour traiter l'information.
Cependant, le plus important est de garder à l'esprit que c'est le protocol réseau et ta capacité à distribuer l'information sur des Xaines de joueurs qui fera de ton programme serveur un bon programme.
Citation :
Publié par Sebajuste
Pour ce qui est du Lisp, je ne pense pas qu'il soit possible d'utiliser une API graphique directement, et je n'ai jamais entendu parler de quelconque binding qui le permettrait
http://common-lisp.net/project/cl-opengl/
plic

Citation :
Les languages de scripts sont également de la partie (avec pourquoi pas du LISP ).
Je parle de Common Lisp, qui n'est pas franchement dédié au script et propose des compilateurs générant du code très performant.
J'ai pas dis "hyper performant", j'ai juste dis "performant".
J'entends par là quelque chose qui puisse tourner correctement, qui reste fluide.

Il est plus facile et plus productif de programmer en Java / C#.
Ces langages (en particulier J2EE et .Net ) sont plus orienté serveur.
Les serveurs d'applications qui les fond tourner gèrent facilement le load balancing.

Les langages compilés sont plus utilisés pour les traitements où le temps de calcul et crucial ( affichage 3D, calcul physique, IA ).

Les langage de script sont préférés pour leur modularité: il n'est pas nécessaire de recompiler l'application pour effectué des modifications.
Sur un serveur, bien utilisé, il n'est même pas nécessaire de le redémarrer. Et une mise à jour sans interruption de service, on ne crache jamais dessus !

Donc oui, je maintient: il est préférable pour utiliser plusieurs langages.
Concernant la performance, il est toujours préférable d'avoir une application qui tourne vite:
- pour avoir de la marge
- car on ne sait pas quels autre processus tourne en plus (80% des Windows ont plus de 50 processus en utilisation, alors que moins d'une trentaine est utilisé par Windows)
- car on ne connait pas les performance de la machine sur laquelle le logiciel va tourner

Alors certes, il ne sert à rien d'avoir une jeu qui tourne à 200 FPS.
Pourtant, 200 FPS, c'est ce qu'on peut obtenir avec un PC récent sur un jeu comme Guild Wars, là où certains vieux PC tournent à 30/40 FPS.
En cherchant de bonnes performance, on obtient une bonne mage qui permet de faire tourner l'application sur une plus grande gamme de machine.

Je déconseillerais par exemple de faire en jeu 3D en VB si c'est pour dépasser le domaine du casse brique. Les fonctions récursives, ce n'est pas son fort... je ne sais pas ce que peux donner la lecture d'un graphe de scène d'une map, remplis de 20 joueurs, 20 armes, 50 mob, 300 arbres etc... mais je doute que ce soit aussi rapide qu'un langage compilé.

Le langage compilé, venons en, je n'avais pas abordé le problème dans mon post au dessus.
Il est INDISPENSABLE. Non pas pour des raisons de performances, mais pour des raisons de sécurité.
Un script lisible, est un code susceptible d'être lu, et d'être détourné pour créer un programme de triche.

Un jeu 100% python par exemple, est de ce point de vue une absurdité (quoi que le python peut être un mauvais exemple, il me semble qu'il est possible de compiler les scripts).

Le deuxième problème, c'est le traitement gameplay qu'effectue le client. Il est beaucoup plus important qu'on pourrait le croire.... suivant le jeu.
Déjà, tout ce qui est du déplacement de son personnage est réalisé par le client.

Un moteur physique est également souvent présent. Que ce soit pour piloter des véhicules, ou pour calculer des trajectoires de projectiles, explosion etc...
Et c'est gourmand un moteur physique... d'ailleurs, la plupart des MMO n'en utilisent pas, ou très peu.
Mais pour des jeux multijoueurs plus "classique", on était souvent limité à une 20aine de joueur il y a une dizaine d'année.
Battlefield 2 n'en permettait que 64.

La puissance de calcul permet d'augmenter le nombre de joueurs, mais on est encore très loin des mmo.


Le problème majeur est "performance vs sécurité".

Si le client calcul lui même la position du joueur, et envois le résultat au serveur, on gagne en performance globale, car le serveur n'aura pas à calculer la position des joueurs connecté (ce qui peut revenir à des milliers des calculs évité).

Mais par contre, la faille se trouve au niveau du protocole réseau. Il "suffit" d'envoyer au serveur une mauvaise position et ce dernier va l'accepter sans rechigner (ainsi fonctionnent les "speed hack" et compagnie).


Pour une sécurité maximum, il faudrait en effet que le client n'ai à gérer que l'aspect graphisme, et de léguer au serveur toutes les opérations de gameplay.

Il lui incomberait alors de calculer lui même les déplacement des joueurs (en plus des mob et PNJ ). Si ces calculs sont réaliser par un moteur physique, c'est un temps considérable au niveau du processeur qui sera demandé (et on sera obligé de limiter le nombre de joueurs par map).


Et enfin, le dernier problème, le lag.

Dans le cas où le client ne réalise plus de calculs de gameplay, il devient encore plus dépendant du serveur, et les effets du lag seront encore plus important !

En effet, les "micro lag" ne sont généralement pas perceptibles. On commence à avoir des difficultés à combattre à partir de 400/500 ms.
Mais pas pour se déplacer...
Tout simplement car le client est autonome, et permet de jouer sans réponse du serveur pour toutes les actions de gameplay qu'il peut calculer lui même.


Si c'est le serveur qui calcul tout, le moindre lag de 200ms sera épouvantable.


Tout ça pour dire qu'au final, au delà du choix du langage, ce qui fait un "bon" mmo techniquement parlant, c'est avant tout la façon d'implémenter les opérations du gameplay suivant le type de jeu désiré.
Citation :
Publié par Blasteguaine
D'après ton profil :

C'est très générique comme profession, et l'administration des systèmes réseaux n'inclue pas le développement d'applications, et heureusement pour ma santé mentale

J'ai toujours trouvé les programmeurs comme des types complètement fracassés ou carrément étranges

Merci à tous de vos réponses, j'y vois un peu plus clair.
Citation :
Publié par Hotsie
C'est très générique comme profession, et l'administration des systèmes réseaux n'inclue pas le développement d'applications, et heureusement pour ma santé mentale

J'ai toujours trouvé les programmeurs comme des types complètement fracassés ou carrément étranges

Merci à tous de vos réponses, j'y vois un peu plus clair.
C'était pas contre toi, mais plus contre la dénomination "informaticien" qui regroupe tout et n'importe quoi. Je me suis bien douté que t'étais admin

(moi c'est les admins qui me paraissent toujours bizarres...)
Citation :
Publié par Hotsie
Salut,
Selon vous, quel est le meilleur langage pour créer un MMORPG? beaucoup mentionne le C++, mais quels sont ses possibilités? ses limites?
Faut surtout voir ce qu'il se cache derrière ta question.

Si t'es tout seul, aucun espoir que tu arrives à quelque chose si tu veux tout faire de A à Z. Trouve-toi un framework (du type NEL ou RealmCrafter). Tu auras un petit espoir d'arriver à quelquechose de jouable. Donc le langage dépendra de la plateforme choisie.

Si vous êtes plusieurs, ca dépend surtout des connaissances et compétences du groupe. Vous n'allez pas développer en Python si y'en a 2 qui connaissent le C# et un autre le .NET.

Alors ? C'est-y pour quoi faire ?
Il n'y a pas de meilleurs langages...

Une équipe de développement utilisera en fonction du projet le langage le plus adapté, le plus productif en fonction de ce qui doit être réaliser.

De plus souvent des parties entières sont sous traitées à d'autres équipes qui vont surement utilisés d'autres langages en fonction de ce qu'elles ont déjà réalisées et qu'elles peuvent réutiliser sans devoir tout réécrire.

Après c'est un savant mixte d'interface entre chaque partie pour les faire cohabiter et là souvent ca se complique...

Enfin je dis ça, il s'en trouvera toujours pour vanter les mérites de tel ou tel langage sans prendre la peine de se poser avant la question : Est il le mieux adapter pour ce que je dois développer ?

Citation :
Publié par Toro
Si vous êtes plusieurs, ca dépend surtout des connaissances et compétences du groupe. Vous n'allez pas développer en Python si y'en a 2 qui connaissent le C# et un autre le .NET.
Heu .NET ce n'est pas un langage... C'est une technologie et C# est prévu pour s'appuyer largement dessus (Enfin dans le monde Microsoft)
Citation :
Publié par Sebajuste
Les langage de script sont préférés pour leur modularité: il n'est pas nécessaire de recompiler l'application pour effectué des modifications.
Sur un serveur, bien utilisé, il n'est même pas nécessaire de le redémarrer. Et une mise à jour sans interruption de service, on ne crache jamais dessus !
D'une manière générale, je suis d'accord avec le contenu de ton post.
Juste une remarque concernant les langages de script et la nécessité de redémarrer un serveur: ceci n'est pas qu'un problème de langage ou de technologie, c'est avant tout un problème de cohérence ou de continuité du jeu.

Que se passe-t-il si en modifiant une carte, on fait apparaître un mur là où se situent des joueurs au même moment ? Que se passe-t-il si on modifie le script d'un PNJ pendant qu'un joueur est entrain de lui parler ?
Je pense que la modification d'un serveur MMO sans le redémarrer est avant tout un mythe.

dstar
Répondre

Connectés sur ce fil

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