Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'savoir'.

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Discussions communautaires
    • Annonces importantes
    • Suggestions
    • Postulation
    • Présentation des membres
    • Discussions générales
    • Multimédias
    • Jeux vidéos
    • Actualités
    • Aide / Support
    • Études
    • Archives
  • Informatique
    • Projets des membres
    • Autres / Divers / Découvertes
    • Crypto-monnaie(s)
    • Hardware / Electronique
    • Réseaux
    • Gestion de serveur
    • Système d'exploitation : Smartphone
    • Système d'exploitation : Ordinateur
  • Programmation
    • Projets des membres
    • Développement web
    • Développement de logiciels
    • Développement d'applications pour smartphones
    • Outils du développeur
    • Aide / Support
  • Emulation
    • Aion
    • Arma III
    • Dofus
    • Dragonica
    • Emulateurs consoles
    • S4 League
    • FlyFF
    • Grand Theft Auto
    • Minecraft
    • Tera
  • Partenariats
    • <b>WoW Emu - La communauté émulation WoW</b>
    • <b>ActuGaming</b>
    • <b>H-Wars</b>
    • <b>EasyChat - Solution gratuite de chat client et serveur (anciennement Melichat)</b>
    • <b>Le Monde des Lunes</b>
    • <b>DansTonCode</b>

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Skype


Site web


AIM


MSN


ICQ


Yahoo


Jabber


Tox


Centres d'interêts


Localisation


Niveau d'étude

1 résultat trouvé

  1. Bonjour à tous, Comme certains d'entre vous le savent, je suis actuellement en train de travailler sur un MMORPG nommé Rulemasters World. Avant de me lancer dans ce projet, qui était totalement nouveau pour moi (premier MMO), j'ai décidé d'en apprendre plus sur le développement de jeux-online de manière générale. J'ai ainsi lu plusieurs dizaines de livres (qui parlent de conception d'Engines principalement, ainsi que de conception de massivement multijoueur), et j'en ai acquis assez d'expérience pour pouvoir débuter le développement de Rulemasters World. Ainsi, nous allons parler des étapes de développement, ainsi que du pourquoi du comment se lancer dans un MMO est compliqué. C'est partit! I - Mises en garde: Pourquoi développer un MMO n'est pas une bonne idée. Comme beaucoup d'entre vous qui me connaissent, je suis un amateur des gros projets non terminés, et j'en ai lancé beaucoup. Je pense être bien placé pour vous dire que le développement de MMO est extrêmement passionnant, mais malheureusement très long. Je vais donc d'abord vous expliquer pourquoi il est important de ne pas se lancer dans un MMO trop vite, et plutôt s'axer dans du jeu Offline pour commencer. Sachez que le développement d'un MMO prends, en moyenne 2 à 3 fois plus de temps à développer qu'un jeu classique. Déjà, nous allons voir un point très important: 2D ou 3D? Avant tout, il faut savoir qu'il existe une différence ENORME entre le développement de jeux 2D et 3D. Si vous avez déjà tenté de développer des jeux, vous le savez déjà: la 2D est plus simple à gérer que la 3D. Voici 3 points qui font que la 2D est plus simple: Il est plus facile, et moins cher, de trouver des graphistes 2D que 3D.La création de Modèles 3D est beaucoup plus complexe, et l'animation aussi.Le développement en est impacté, car le jeu doit paraitre beaucoup plus fluide pour être immersif, ainsi que les algorithmes beaucoup plus complexes pour gérer les entités (détections des collisions en 3D, octo-trees, etc...).Ainsi, si vous souhaitez vous lancer dans un jeu, celui-ci sera certainement en 2D si vous débutez. La notion de "temps réel" est très importante aussi. Dans un jeu 2D où on peu se permettre d'envoyer les positions une fois le changement de case, ou bien d'utiliser de la prédiction pour les mouvements (dans le cas d'un jeu Full TCP comme World of Warcraft par exemple), le temps réel n'a pas vraiment une grosse impacte dans le jeu. En gardant l'exemple de WoW, si vous avez un décalage de 200 ms avec les appels serveurs, vous ne le verrez pas, car WoW utilise une méthode appelée prédiction, et qui simule ce qui se passe sur le serveur sur votre écran. (C'est pour cela qu'on voit des gens courir dans le vide lorsqu'ils perdent la connexion, ou encore, une petite téléportation à la fin du mouvement). Mais dans un jeu où le personnage a besoin de bouger tout le temps, et en temps réel par rapport au serveur (je prends l'exemple de Skyforge, ou Guildwars par exemple, il sera important d'utiliser des appels TCP et UDP (nous y reviendrons plus tard). Un autre point important: Il faut avoir une excellente connaissance au niveau du langage utilisé, ainsi qu'en réseau. En effet, un MMO qui consomme beaucoup de ressources pour 10 joueurs n'en fera certainement pas tourner 100 000. Il est important d'avoir déjà eu de l’expérience avec la gestion de multientités, et bien savoir optimiser sa façon de programmer. La connaissance en le langage utilisé est ainsi extrêmement importante. Nous verrons en dessous quels langages sont conseillés pour programmer un MMO, et pourquoi il est important de bien choisir. II - Les technologies existantes. Dans ce chapitre, nous allons voir les technologies existantes, et comment les utiliser dans le but de créer votre MMO. Nous allons aussi trier ces technologies, pour savoir lesquelles utiliser. 1 - Les langages de programmation. Eh oui, vous ne créerez pas de MMO sans programmer ;). Je rappelle qu'une connaissance très pointue du langage en question est demandée pour ce genre de projets. Le MMO doit être le plus fluide possible! Nous parlerons ici uniquement du langage côté serveur, car c'est ce côté qui doit être le plus optimisé. (pour le client, comme pour tous les jeux, le choix est assez large) a - Évitez les langages de type scripts! Alors, un point très important, évitez les langages de scripting! Des langages comme PHP, Python, Ruby etc... Ne sont pas adaptés pour créer ce genre de projets. Leurs architecture et leurs appels systems sont trop instables et consomment trop par rapport à leur utilité. Il est important de rentre ces appels le plus fluide possibles, car ils seront très souvent appelés. Bien sur, cela ne signifie pas que vous ne pourrez pas créer de MMO avec, mais il sera très instable avec un grand nombre de joueurs. Le contrôle de la mémoire y est très peu présent, car géré par un Garbage Collector. b - Les langages compilés. Au niveau des langages compilés, nous verront 4 langages en particulier: Java, C#, C++ et C. Commençons par Java et C#. Dans le cas de C#, je déconseille fortement son utilisation pour du jeu vidéo de manière générale. (Attention, ne citez pas Unity3D comme exemple! Ils utilisent C# comme langage de SCRIPTING et non pas comme programme compilé.) C'est un langage utilisant des appels systems souvent lourds, et passant forcément par une librairie externe (.net framework). Les appels aux libraires sont souvent plus lourds. De plus, le GBC de C# est beaucoup moins puissant que celui de Java. C# a été pensé pour faire des applications mobiles et bureautiques. Il ne sera donc pas adapté pour un serveur de MMO. Du coup, est-ce que Java est une valeur sure? Eh bien, oui et non. Comparé à C#, java est une valeur largement plus sure pour le développement d'un MMO: Prise en charge de la mémoire de manière Sandboxée (ce qui permet une allocation très rapide, on y reviendra plus tard)Un GBC très agressif, mais très efficace.Des appels à des méthodes totalement virtualisées (4x plus rapide que C# et 2x plus rapide que C++, voir ici pour la comparaison Java/C, c'est un peu vieux, mais toujours d'actualité).Une pré-construction des objets, permettant une utilisation fluide de la mémoire.Néanmoins, comparée à C++, Java a pas mal de points à revoir. Je ne citerais que le fait de ne pas pouvoir gérer la mémoire, qui peut être très important dans certains cas. Mais ce n'est pas pour ça que je déconseille Java pour le développement d'un serveur de MMO. Par contre, il faudra prévoir une grosse quantité de RAM pour la JVM, et la préallouer correctement (je vous l'ai dis, il faut avoir une excellente connaissance du langage). Pour exemple, j'ai choisi Java pour le développement de Rulemasters World, et le serveur arrive à tenir 100 000 entités sans problème, avec plus de 50 000 connexions. (Beaucoup de systèmes d'optimisations ont été utilisés.) Le C++ et le C maintenant. Le C++ est sans conteste le langage le plus utilisé dans le développement de jeux vidéos: Il est très proche du langage machine, et permet une gestion totale de celui-ci. La gestion de la mémoire par le programmeur y est très importante, et tout est fait pour être optimisé. Il faudra, par contre, être un expert dans cette technologie pour que tout tourne convenablement. Une seule erreur peut être très dangereuse pour le serveur, vue que la mémoire n'y est pas sandboxée. Il est donc important de bien savoir ce que l'on fait avec ce langage. Saint-grâle du jeu vidéo, il est utilisé pour tous les moteurs de jeu (oui, Unity est intégralement en C++), et dans tous les serveurs de jeu des MMO actuels. Sa complexité le rend encore plus intéressant, et le contrôle total du langage permet beaucoup de choses. Le C a les mêmes attributs que son petit frère C++, mais il est plus basique (n'oublions pas que C++ est une amélioration du C en y ajoutant un contexte d'objets). Néanmoins, je ne conseille pas la création d'un MMO en C, pour la simple et unique raison que le langage est trop basique, et que le concept d'objet simplifie grandement le développement d'un jeu. N'oubliez pas que tous ces langages, dans le cadre d'un MMO, ne s'auto-suffisent pas, on voit souvent des engines de MMO utiliser des scripts (Rulemasters World utilise Javascript, WoW utilise LUA, etc...) car les moteurs proposent une base. Pour exemple, WoW utilise le Lua pour créer certaines de ces entités, les phases des boss, etc... Des parties en ASM peuvent être aussi utilisées (en Java, il est possible d'utiliser du C++/C/ASM, en important une DLL par exemple), le but étant d'optimiser au maximum ce qui n'est pas utilisable avec le langage de base. En bref, il est très important de bien choisir le langage du serveur, néanmoins, cela ne vous limite pas à ce langage. Vous pouvez essayer d'autres langages et faire vos propres choix, mais le C++ reste un des langages les plus utilisés dans ce cas précis. Pour le client, aucune restrictions: Il n'est pas nécessaire d'avoir un client Ultra-optimisé. Pensez quand même à ne pas afficher trop d'entités en même temps III - Connaissances requises Comme je l'ai cité plus haut, il est très important de bien maitriser le langage que l'on utilise. Ce sont de petites modifications par ici, 2μs gagnées par là, qui peuvent faire une énorme différence. Voici donc une liste de connaissances à avoir. Lorsque je parle de connaissances, je part du principe que vous avez déjà eu de l’expérience par rapport aux connaissances requises. Optimisation de trisFonctionnement d'une HashMap ou HashTabSavoir utiliser une PoolConnaitre la notion de préallocationsGestion de la mémoire avancéeOptimisation de gestion massive d'entités (Quad-trees, Part-trees, Octo-Trees, etc...)Conception de moteur de jeuOptimisations générales sur le langage utilisé (d'une manière générale, tapez-vous la doc de A à Z du langage. Vous serez souvent surpris!)Une connaissance en Réseaux pointue (aussi bien en Programmation Réseau, qu'en Réseau général, et en Systadmin Réseau (Proxy, etc...)) Citons Blizzard qui nous propose de nous recruter en temps que développeur Serveur sous ces conditions: J'ai mis en gras des parties importantes. Ont voit très bien que la liste est assez similaire à celle que j'ai cité plus haut, sauf pour la gestion des entités, mais voyons donc l'offre de Blizzard pour les Engine developpers: On y voit encore des expériences conséquentes demandées dans le C++. On y retrouve la notion de gestion d'entités Massives, notamment dans le "Collision ans physics". Bref, ne prenez pas un MMO comme premier projet! Prenez le temps de prendre de l’expérience! Voilà, c'est, d'une manière générale, des connaissances importantes lors du développement d'un mmo. Il peut en manquer, je n'ai pas tout mis, mais c'est le plus important de mon point de vue. IV - Etapes de développement /* TODO */ V - Conclusion /* TODO */ Voilà, j'espère que les intéressés ont vu leurs questions trouver des réponses! Les 2 dernières parties seront complétées sous peu, je suis en contact avec des développeurs de MMO, je souhaite avoir leurs témoignages. Je n'ai pas parlé ici de RPG, car il s'agit d'une branche bien plus complexe du développement de MMO. Le RPG a non seulement besoin d'une architecture solide, mais aussi d'une histoire solide. Je n'en parlerais pas ici. Le Segfault vainquera! Cordialement, AlexMog.
×
×
  • Créer...