Quels sont les plus appropriés type sécurisé langages de programmation disponibles pour le développement d’un côté de serveur de jeu MMO simple?

Quels sont les meilleurs disponibles langages de programmation pour la construction du côté serveur d’un simple jeu MMO qui répondent à ces exigences :

-Open-source et gratuit
-Fonctionne sur Linux
Fortement typées (avec compilateur)
-Moderne (type inference, fonctionnelle, filtrages,...)
-Simultanées
-Très haute performance
-Bonne maturité
-Bibliothèques et écosystème bon
-Compile (en option) à JavaScript.

Les langues que je connais sont :

-Scala (qui je construis plusieurs applications sérieuses avec elle et j’ai ça)
-Rouille (il me semble très prometteur mais pas matures)
-Aller (il semble trop classique pour moi)

Y a-t-il d’autres langues?

EDIT : Dans un souci d’exactitude, veuillez expliquer pourquoi votre langue est appropriée.

Réponse

Je voudrais brièvement rappeler que l’objet de votre question laisse entendre que vous sautent dans l’extrémité profonde de la piscine. MMO est développés par les grandes équipes et exige une immense infrastructure distribuée pour soutenir les joueurs plus de quelques dizaines. Le fait que vous êtes posé cette question à tous suggère que vous mieux de prendre des mesures plus petits et faire quelques jeux plus simples et inquiéter faire multijoueur un peu plus tard.

Cela dit...

Il y a beaucoup d’autres langues, avec différents niveaux de pertinence, de complexité, de sécurité et de fiabilité.

(Des précisions : toutes les langues que je liste ici ont des implémentations open source gratuit, ils tous exécuter sur Linux, ils ont tous, typage fort des règles, elles sont toutes modernes ou sont activement en cours d’amélioration, ils prennent tous en charge l’accès concurrentiel à un certain niveau, ils tous effectuent extrêmement compétitifs, et à l’exception de poney, ils sont tous matures avec les grandes collectivités.)

Voici quelques unes qui viennent à l’esprit, à mon avis par rapport à leur pertinence pour les serveurs de jeu multijoueurs :

  • C++ --Oui, je suis sérieux. Certains des plus grand, mieux financé MMO utilisent un serveur logiciel écrit en C++, soutenue par des systèmes de base de données haut de gamme.
  • Scala --je ne suis pas très familier avec Scala personnellement, mais de ce que j’ai lu, il peut évoluer horizontalement très bien, quelle infrastructure de serveur de prestations.
  • Aller --Google ne peut pas avoir voulu Go pour les serveurs de jeu, mais il ne font pas une chose bien : simultanéité. Et simultanéité (sous diverses formes) est le pain et le beurre qui se nourrit de grands environnements multijoueurs.
  • Java --je ne suis pas au courant de tous les grands jeux qui ont leurs serveurs écrits en Java à l’exception de Minecraft. Mais, la JVM est un système fiable qui évoluer bien à l’appui de grands systèmes distribués. Je ne recommande surtout pas son utilisation, cependant, parce que, comme C++, gagne la fiabilité et les performances dont vous avez besoin nécessite un effort énorme, qui signifie il va être coûteux dans le long-terme.
  • Haskell --les langages fonctionnels stricts qui garantissent l’immuabilité sont extrêmement bien adaptés à l’accès concurrentiel. C’est vrai pour plusieurs langues que j’ajoute à cette liste. Haskell, cependant, compile en code machine natif par C, ce qui signifie que, contrairement à la plupart des langues sur cette liste, elle atteint très haute performance avec code relativement clair et concis.
  • Erlang --si vous êtes familier avec cette langue, s’il vous plaît ne riez pas. Il est, certes, assez lent, mais ce qui manque Erlang en performances, il gagne dans sa capacité à distribuer facilement et rapidement entre plusieurs nœuds de l’ordinateur et dans sa capacité à récupérer les erreurs, qu’il faut une approche « laissez-le échouer » pour la gestion des erreurs : laisser un crash de processus et de poursuivre. Vous pouvez faire tourner tout simplement vers le haut de nouveaux nœuds au besoin pour répondre aux besoins de capacité, et l’immuabilité de ses structures de données signifie que les bogues typique d’accès concurrentiel sont impossibles. Il peut ne pas convenir pour les mondes très vastes et complexes, soutenir les parties raid massif, mais pour des jeux relativement simples, il est possible d’être à l’épreuve.
  • Ocaml --comme Haskell, Erlang et la famille ML des langues applique les règles de l’immuabilité strict, qui permet l’accès concurrentiel fiable. Mais, comme Haskell, utilisé pour son système de type est un peu un esprit-bender dans un premier temps.
  • Poney --je sais ce que vous pensez. Oui, il s’agit d’un véritable langage. Il a été libéré officiellement au public il y a plusieurs mois, mais le temps que j’ai passé avec elle me donne à penser qu’il a promise pour ce type d’utilisation. C’est une langue basée sur les acteurs de simultanées par défaut. À certains égards, c’est comme la Scala et Erlang, car il utilise des concepts orientés objet pour modéliser le modèle d’acteur, mais il utilise un concept de ce qu’il appelle des capacités-secure références. Les références sont transmis selon un ensemble de règles d’autorisations qui limitent la capacité de lire ou d’écrire dans un objet donné grâce à une référence donnée. C’est assez habile, mais extrêmement difficile à comprendre au début. En raison de ses règles d’immuabilité et le recours aux acteurs, il met à l’échelle horizontalement dès le départ. Il reste encore quelque temps pour cuire, si - la bibliothèque standard est un peu ennuyeux de bizarreries.
  • Clojure --comme un dialecte de Lisp, il bénéficie du paradigme fonctionnel qu’il partage avec Haskell et Erlang. Réflexion sur le plan fonctionnel est le meilleur moyen de simultanéité d’approche et de réactifs de traitement des données. Haskell correspond ce moule mieux, à mon avis, mais Lisp a peu de vie dedans encore.

Cette partie suivante peut vous surprendre : ces langages fournissent une base pour un serveur en communiquant avec les joueurs et traitant les grands ensembles de données qui décrivent l’état du monde, mais à un certain niveau, vous avez besoin de la capacité d’appliquer des choses comme les quêtes et événements scriptés.

Langages de script embarquable à la rescousse :

  • Lua --une langue très petite, très rapide que des gens trouvent très faciles à apprendre. En prime, il est très facile à incorporer dans une application plus grande. En fait, ceux qui étaient ses objectifs de conception. Elle est destinée aux jeux.
  • Python - Python, comme Lua, est assez facile à intégrer, et ce n’est pas si lent qu’il va enliser le serveur, donc c’est un bon choix pour les comportements scriptables.
  • Régime --il s’agit d’un dialecte de Lisp, et il y a beaucoup de dialectes de celui-ci. Mais c’est aussi très, très petit et très facile à mettre en œuvre. Vous pouvez même implémenter vos propres en très peu de temps. Il est également étonnamment puissant. Et ne vous inquiétez pas-il est déjà utilisé dans les jeux. Naughty Dog il a utilisé pour l’ensemble de leurs franchises de jeux.

Oh, il y a d’autres. Je pourrais continuer toute la nuit.

... Mais êtes-vous sûr que vous êtes prêt à développer un MMO?


Tags: Programmation informatique, Langages de programmation, Développement de jeux vidéo, Jeux de filles, MMORPG