web-dev-qa-db-fra.com

Le langage de programmation D pour le développement de jeux

Récemment, j'ai été dérangé parce que j'ai atteint un point où C++ (même 0x) se sentait très limité, alors j'ai commencé à chercher des alternatives.

Oubliez Java, C #, Python ou Ruby. J'aime toujours la nature de bas niveau de C++ et je n'aime pas les machines virtuelles. De plus, je suis un développeur de moteur de jeu, donc je doivent développer des routines de base qui doivent être très rapides, et dernièrement, j'ai eu faim d'expressivité du code. C++ est un langage presque-là pour moi, mais il y a de nombreuses exceptions sur la façon d'utiliser les modèles, et GCC n'optimise pas les choses aussi bien que je l'espérais.

J'envisage donc de commencer à apprendre D.

Pensez-vous que cela suffira à mes besoins en tant que développeur de jeux? Je me méfie parce que je n'ai jamais entendu parler de l'utilisation de D pour cela.

Merci!

54
Guilherme Vieira

J'ai appris pas mal de D moi-même récemment, même s'il reste encore beaucoup à faire. D'après ce que j'ai appris jusqu'à présent, je dirais que, alors que le langue est idéal pour pratiquement tout, les compilateurs et bibliothèques qui sont là-bas en ce moment ne sont pas les meilleurs, et donc vous ne pouvez jamais être sûr que le compilateur est exempt de bogues (ce n'est pas le cas). Pour la programmation de jeux, vous devez être sûr que la récupération de place se déroule correctement, par exemple, et que le compilateur n'optimise pas de manière incorrecte le code important ... des choses comme celle-ci pourraient vous inciter à repenser en utilisant Langue. Cependant, je pense moi-même que le langage lui-même est le meilleur (c'est complètement subjectif), et je pense que le seul obstacle à son utilisation est le manque d'une implémentation parfaite, plutôt que le langage lui-même.

39
Mehrdad

J'ai utilisé D 1.x pour faire des jeux et des démos, certains d'entre eux sont open source du domaine public ( A , B , C , D , E ).

D peut vous donner une productivité sans précédent en C++ - terre si vous êtes prêt à payer le prix fort de discuter avec tout le monde de la raison pour laquelle vous utilisez D.

Si vous suivez cette voie, je vous conseille de choisir D 2.x, Abandonné et Visual D (indice pour les futurs lecteurs: c'est 2011).

Quant au développement de jeux:

  • le D GC n'est pas un vrai problème. C'est si vous allouez trop dans un cadre, mais c'est à peu près tout. Les méthodes classiques de mutualisation, de réutilisation, etc ... fonctionnent.

  • vous pouvez écrire l'assemblage x86 de manière portable sur Linux, Mac et Windows. Également statique si permet des fonctions d'assemblage nues assez amusantes.

  • l'incrustation au-delà des limites du module fonctionne sans commutateur "optimisation du temps de liaison"

  • Je trouve plus facile de maintenir la version de débogage et de publication (par rapport à C++)

  • évitez les nouvelles fonctionnalités et choisissez les compilateurs de manière conservatrice ... comme en C++

24
ponce

Kenta Cho utilise D et Simple DirectMedia Layer (SDL) pour développer son jeux Windows . Ils sont très amusants. Jetez un œil à l'inspiration et à la source:

14
Corbin March

D est un excellent langage pour les jeux vidéo, il possède toutes les fonctionnalités pour le développement rapide d'un exécutable performant:

  • Il compile rapidement en code natif et s'exécute rapidement.
  • A des tests unitaires, le profilage et la couverture de code hors de la boîte.
  • La récupération de place est la valeur par défaut, mais vous pouvez utiliser vos propres allocateurs de mémoire.
  • Compatible ABI avec C, il n'y a aucun coût de marshalling à payer pour appeler des bibliothèques natives.
  • Sécurité des fils dans le système de types: qualificatifs partagés, purs et immuables.
  • Sécurité de la mémoire dans le type-système: @safe, @trusted, @system.
  • Évaluation des fonctions au moment de la compilation, génération de code, etc.

Vous n'avez pas besoin d'un langage de script distinct, pas d'étapes de compilation supplémentaires pour générer du code, vous n'êtes pas limité au modèle de mémoire d'une machine virtuelle lorsque les performances sont importantes pour les systèmes de bas niveau, mais vous obtenez toute la productivité et la sécurité des scripts et langages gérés pour votre logique de jeu. Vous êtes même libre de choisir entre des paradigmes de programmation procédurale, orientée objet, fonctionnel, générique ou méta pour le problème en question.

8
Jeremie Pelletier

Eh bien, ce n'est pas comme si vous utilisez D, vous devez tout construire complètement à partir de zéro. Par exemple, vous pouvez utiliser:

  • GLFW pour entrée/sortie
  • Horde3D comme moteur de rendu
  • OpenAL pour le son
  • Balle pour la physique
  • Lua pour l'écriture de scripts
  • lzo pour une décompression rapide
  • peut-être Orange pour la sérialisation

Je ne suis pas sûr des superpositions cependant. C'est une base assez solide qui, je l'espère, fonctionnera pour moi :)

Bonne chance, mec!

7
shd

En D proramming ce sont:

le plus souvent dans un langage de programmation opengl 3 et 4 n'est pas supporté

  • yage moteur de jeu 3D gratuit, vous pouvez aider

Un petit guide pratique: http://blog.Fedora-fr.org/bioinfornatics/post/D-programming-OpenGL-and-MVC-Pattern

Pour une utilisation RAII en D, ils sont la portée du mot-clé, il est très puissant

6
bioinfornatics

Bienvenue en 2014!

La dernière version de D est 2.067 au moment de la rédaction de ce document. D est légèrement instable en ce qui concerne auto, mais à part ça, je ne vois pas pourquoi ne pas utiliser D. Les compilateurs sont ce qui s'est grandement amélioré.

D à mon avis est plus facile à lire que C++ et plus facile à apprendre. Il contient une interface vers C et une interface partielle vers C++. Il permet même un assemblage en ligne qui peut interagir avec vos variables. La bibliothèque standard D s'appelle Phobos.

Je suggère fortement que D. D a été conçu pour être efficace. Selon Adam D. Ruppe, "[C est] tout aussi rapide". Et C est l'un des langages les plus rapides du marché. Donc, si vous voulez construire un jeu avec la vitesse de C et les capacités de haut niveau de C++, D se trouve juste entre les deux. Si vous avez des questions, n'hésitez pas à rejoindre irc.freenode.net #d.

Pour résumer le tout, D est essentiellement la version sûre de C++. Bien que le langage soit multi-paradigme, y compris la POO, l'accent a été mis sur le paradigme FP, en utilisant les fonctions pure et l'immuabilité. Tous les objets ont un init donc si vous déclarez 'int foo;', il est initialisé à int.init. Oui, il y a encore des pointeurs. Les pointeurs en D sont appelés lvalue et les valeurs sont appelées rvalue. Une lvalue pointe toujours vers une rvalue.

Pour plus d'informations, visitez le site officiel de D, http://www.dlang.org/ .

4
AMDG

Les gens se faisant appeler "team0xf" l'ont fait this entièrement en D1.

1
Baxissimo

Remedy (Max Payne, Alan Wake, Quantum Break) utilise D: http://dconf.org/2013/talks/evans_1.html

1
Denis Gladkiy

J'ai hâte d'apprendre un jour le langage D :)

Mais il y a une chose à retenir: un bon langage est bon, mais vous, en tant que développeur de jeux, avez également besoin d'outils (comme des bibliothèques) pour faire vos enchères. Et peu de bonnes bibliothèques ont actuellement des liaisons avec D. Cependant, j'en connais une qui a très probablement (mais pas certainement):

Ogre - l'une des principales librairies libres en liberté pour tous vos besoins graphiques portables en 3D.

Bien sûr, vous en avez besoin de plus, mais cela dépend à peu près de votre jeu.

Je ne sais pas à quel point il est facile ou difficile de créer des liaisons avec D pour une bibliothèque C++. Cela peut être difficile, facile et quelque peu automatisé. Ce serait plus ou moins possible, car, selon moi, les langages sont très proches les uns des autres, et les développeurs D pensaient probablement au C++ la plupart du temps.

J'espère que cela t'aides.

0
Septagram