Ruby est-il un langage approprié pour le développement de jeux? [fermé]


33

Je veux passer au développement de jeux, mais le seul langage que je connaisse vraiment bien est Ruby. La plupart de ce que j'ai lu semble pointer vers des langages de niveau inférieur, tels que C ++ pour le développement de jeux, ou des langages pour des frameworks spécifiques, tels que C # pour l'utilisation de XNA. Quelqu'un at-il déjà utilisé un langage comme Ruby pour le développement de jeux? Si oui, conseilleriez-vous pour ou contre?

Réponses:


47

Je n'ai aucune préférence pour Ruby (ou Python), je suis moi-même une personne de Java. Mais la réponse de UnknownDevice sur le fait que Ruby n'est pas vraiment "pour les jeux" et que Python est frustré. J'espère qu'il clarifiera.

Je sais que Pygame existe et existe depuis longtemps, et je reconnais que Python a une base d’utilisateurs plus grande que Ruby. Mais pour être honnête, aucun d'entre eux ne semble être un langage "pour les jeux". Java non plus, et c'est mon langage de programmation préféré. (et quand je dis "de choix", je veux dire par choix , non pas parce que c'est ce qui est enseigné à l'école ou parce que c'est quelque chose que je "connais"). Et vraiment, qu'est-ce qu'un langage "pour les jeux"? La vitesse est un facteur et, évidemment, il doit disposer de bibliothèques pour les graphiques et autres systèmes de jeu (audio, entrée, etc.).

En ce qui concerne la vitesse, cela semble être un mélange entre Ruby et Python. Faites quelques recherches et vous trouverez rapidement des points de repère et des arguments pour les deux côtés du spectre, ainsi que diverses configurations qui donnent l’un ou l’autre. Python avec quelque chose appelé "Psycho" semble être un démon de vitesse populaire comparé à Ruby, mais Python ordinaire semble être un peu plus lent que Ruby. En fin de compte, si vous choisissez un langage de si haut niveau, les vitesses natives ne vous intéressent évidemment pas. va avec la langue que tu connais le mieux. Et évidemment, vous connaissez mieux Ruby, alors je l’encourage!

L'autre facteur est de savoir si la technologie est là pour créer des jeux; s'il peut prendre en charge l'affichage à l'écran, la collecte des entrées et la lecture de l'audio. Ruby peut faire tout cela. En fait, il existe un bon nombre d'options à cet égard. Il y a un paquetage ruby-opengl chez RubyForge qui donnera un support OpenGL à Ruby (ou peut-il être inclus par défaut?). Alternativement, Chingu fournit "des graphiques 2D accélérés par OpenGL ultra- rapides!" selon sa page d'accueil; il construit des fonctionnalités supplémentaires au-dessus de Gosu , que vous pouvez choisir d'utiliser si Chingu est trop pour vous. Ou, pour les graphiques 3D, si vous ne voulez pas utiliser ruby-opengl, essayez G3DRuby , "un ensemble très propre de classes de wrapper pour de nombreuses fonctionnalités OpenGL plus avancées". Là'Rubygame , sur lequel je ne trouve pas beaucoup d’informations mais prétend être "une bibliothèque multimédia multiplate-forme" et qui porte son nom, doit mettre l’accent sur le développement de jeux. Si vous connaissez le populaire bibliothèque SDL pour C ++, il existe Ruby / SDL ou RUDL , qui sont tous deux des wrappers Ruby de SDL. Ou si vous préférez la nouvelle SFML , plus orientée objet , elle est également disponible pour Ruby!

Il n'y a aucune raison pour que Ruby soit moins un langage de programmation de jeu que Python; s'il y en a un, j'aimerais vraiment l'entendre pour pouvoir argumenter contre. Si vous vous sentez le plus à l'aise pour programmer en Ruby et que vous connaissez les avantages et les inconvénients des autres langages populaires, alors vous pouvez certainement développer des jeux en Ruby!


+1, mais vous devriez ajouter quelque chose sur les limitations d'utilisation de certaines langues sur des plates-formes propriétaires, telles que les consoles ... (limitations relatives au matériel et aux règles du constructeur) utiliser Ruby pour le jeu lui-même ne va pas vraiment aider de ce côté. Pour les jeux de bureau cependant, "pourquoi pas ???"
Klaim

@Klaim Je dirais que cela devient de moins en moins pertinent, et je serais intéressé de connaître le langage utilisé pour les consoles de la génération suivante ou peut-être celle qui suit. Il est possible qu'ils continuent à être développés avec C ++, mais je pense personnellement qu'il est fort probable qu'ils progressent vers des langages de niveau supérieur. Le développement Android, par exemple, est en Java; pas que Android est une console de jeu du tout. Mais peut-être qu'un langage hybride comme Go deviendra le nouveau langage populaire d'une génération de console ou deux.
Ricket

1
Je suis d’accord sur le principe, et peut-être que Go ou D parviennent à quelque chose de ce côté. Mais je pense que seul le langage système peut être "standard" dans cette industrie. Cependant, je parle de l’industrie, pas du côté indie du domaine des jeux vidéo. Je pense que si vous suivez votre propre chemin (pas le salaire d’une grande entreprise établie), vous avez alors la possibilité d’utiliser ce que vous voulez. Mais vous devez toujours utiliser les outils demandés par les constructeurs lorsque vous voulez faire autre chose que la console. Les téléphones utilisent Java, mais beaucoup de C ++ est utilisé sur des applications plus exigeantes en performances, sur ces mêmes téléphones.
Klaim

En fait, je pense que l'industrie du jeu vidéo tardant à adopter le C ++ standard actuel, il y a de bonnes chances que vous deviez attendre de nombreuses années avant de passer à autre chose que le C ++ sur des consoles. Un changement dans la façon dont les constructeurs et les développeurs travaillent peut se produire, mais il n'est pas vraiment facile d'imaginer à partir d'aujourd'hui.
Klaim

J'ajouterais simplement qu'il existe de nombreux types de jeux où la performance maximale n'est pas un problème. Bien sûr, lors de la création de Crysis, vous voudrez en extraire chaque image, mais il existe de nombreux jeux où vous n’êtes pas obligé. Et pour travailler sur de tels jeux, vous aurez peut-être également besoin de peu d'autres langues (les langages shader, par exemple, les jeux comme Civilization 4 et 5 reposent également sur les langages de script).
MartinTeeVarga

9

http://gafferongames.com/2009/01/11/ruby-is-not-at-all-suitable-for-game-development/

L'URL est probablement un peu spoiler.

tl; dr: le ramasse-miettes naïf est un réel problème.


Très informatif! Un expert Ruby peut-il dire si cela est toujours applicable aujourd'hui? L'article est daté de janvier 2009 et je ne serais pas surpris si beaucoup de choses se sont passées depuis. éditer Ok, je viens de trouver un article du 3 septembre 2010 qui laisse entendre que c'est toujours le cas aujourd'hui: "le récupérateur de déchets Ruby n'était pas destiné à être exécuté" - intéressant! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
Le ramasse-miettes de Ruby est un jeu de mots, mais dans le cas des cycles, Python et Lua le sont également (en fait, sur un jeu Python sur lequel j'ai travaillé, nous avons dû retarder GC pour cette raison). Je n'ai pas fait de repères, mais Ruby's est peut-être simplement lente plutôt que fondamentalement lente. Je ne vois pas cela comme une raison extrêmement convaincante d'éviter Ruby, en particulier si vous parlez de construire des jeux entièrement en Ruby, comme l'interlocuteur. Il suffit de désactiver GC jusqu’à un moment opportun.

1
Cela fait un moment que cela a été posté, mais consultez cet article intéressant. patshaughnessy.net/2012/3/23/… Il s'agit du récupérateur de place dans Ruby 2.0. Voici une allocution prononcée par le constructeur du GC, youtube.com/watch?v=4fIdEeM0Fyg. Au moment de la sortie de Ruby 2.0, elle aura probablement entre 1,5 et 2 ans. Il est donc possible que de nombreuses performances et améliorations du GC aient été apportées. . Cela pourrait rendre Ruby plus viable à utiliser pour des jeux plus lourds d'objets. J'espère bien! Je crois que Ruby 2.0 sortira en 2013.
Michael van Rooijen le

1
Il existe également des machines virtuelles autres que l'IRM qui prennent en charge différents systèmes de récupération de place, y compris le nouveau mruby de Matz lui-même, qui inclut un système de récupération de place supplémentaire. Jusqu'à présent, mruby s'annonce comme un excellent choix pour les jeux. Cela fonctionne même sur iOS et Android!
Stephen Bélanger

5

Il n'y a aucune raison pour que vous ne puissiez pas. Tant qu'il existe un support multimédia pour une langue, il s'agit d'un contenu gamedev. Heck, une grande partie de l’un des jeux Rollercoaster Tycoon a été faite à la main en ASM.


3
Vous êtes un peu en train de vous contredire. "coder manuellement le jeu dans asm" est l'opposé exact de "coder le jeu en ruby" ou dans un autre langage de très haut niveau.
Bobobobo

1

Bien que je ne sois pas familiarisé avec la plupart des travaux sur les spécifications concernant Ruby, Enterbrain a créé les programmes de création de jeux RPG Maker VX et RPG Maker XP qui utilisent des scripts de jeu basés sur Ruby: http://www.rpgmakerweb.com/

C'était en fait ma première plongée dans la langue. Comme la plupart des gens l'ont dit, vous n'obtiendrez probablement pas la haute performance des autres langues, mais si vous cherchez à démarrer un RPG 2D (ou un autre jeu en 2D, en fait), c'est probablement l'un des éditeurs de jeux les plus sophistiqués. Aidez-moi.


0

Ruby est une belle langue, mais ce n’est pas vraiment que les jeux soient vraiment honnêtes. Si vous ne voulez pas utiliser C ++ mais que vous voulez quelque chose comme Ruby, consultez Python. Pour un bon framework Python, vous devriez essayer quelque chose comme www.cocos2d.org/.


3
... ou sur www.pygame.org
Ian Schreiber le

6
Ça n'a pas de sens. Ruby n'est pas moins un langage "pour les jeux" que Python.
Ricket

2
... non-sens. Vous pourriez aussi bien dire que Lua n'est pas pour les jeux.
Kornel Kisielewicz

2
Existe-t-il un équivalent rubis à pygame? Je ne dirais pas qu'une langue est plus adaptée que l'autre. Mais il pourrait être raisonnable de dire que python a de meilleures bibliothèques de jeux et une communauté gamedev.
deft_code

J'ai l'impression qu'il existe un portage SFML pour Ruby.
Le canard communiste le

0

Cela dépend du type de jeu que vous souhaitez écrire. J'ai utilisé ruby ​​pour écrire des clients IA pour plusieurs jeux, y compris Diplomacy , poker et Lost Cities . Je trouve que c'est un langage très convivial pour expérimenter rapidement différents concepts. D'autre part, je ne voudrais pas l'utiliser pour écrire mon jeu de tir en temps réel - il n'aura tout simplement pas la performance dont j'ai besoin.


0

Votre question est trop générale. Voulez-vous simplement écrire un jeu vidéo en tant que projet hobby ou voulez-vous vous lancer dans le développement de jeux indépendants / professionnels? Aura-t-il des graphiques? Sur quelles plateformes est-il censé fonctionner?

En général, Ruby convient aux projets de loisir (BTW mon jeu préféré de Ruby est Ruby Warrior ) et au développement de jeux Web comme Farmville. Il y a même une certaine demande pour de tels programmeurs, essayez de chercher quelque chose comme Google: "jeu social de programmeur ruby".

D'autre part, si vous souhaitez développer des jeux avec des graphismes pour ordinateurs de bureau ou mobiles, Ruby n'est pas la meilleure option. Considérer:

  • Bibliothèque Javascript supportant Coffeescript (sa syntaxe est très similaire à Ruby)
  • Python - très similaire à Ruby, de meilleures bibliothèques de jeux

0

Ne vous attendez pas à écrire des jeux 3D très performants, professionnels, commerciaux avec Ruby, mais Ruby est un excellent langage à utiliser lors de l’apprentissage des concepts de développement de jeux.

Gosu est la bibliothèque la plus populaire (et maintenue activement) pour écrire des jeux 2D en Ruby. Il possède une bibliothèque C ++ sous-jacente qu'il utilise pour améliorer les performances et interagir avec les bibliothèques de rendu d'affichage sous-jacentes telles que OpenGL.

En ce qui concerne les performances, l'implémentation Ruby (MRI) Ruby "par défaut" fonctionnera bien (je suggère le dernier Ruby 2.0 pour de meilleures performances), mais il existe des implémentations alternatives qui ont des threads natifs et des algorithmes alternatifs de récupération de place tels que Rubinius, JRuby, etc. Si vous utilisez des threads, essayez Rubinius, sinon MRI Ruby fonctionnera parfaitement.


-2

J'ai dit Python parce qu'il a une base d'utilisateurs plus importante et plus de choix en matière de frameworks / bibliothèques pour le développement de jeux. Il est assez évident que cette personne n’ait aucune expérience en développement de jeux; il n’est donc pas logique pour moi de leur recommander d’utiliser quelque chose comme Ruby simplement parce que c’est possible.

Lorsque je travaille sur des jeux, j'utilise C ++ avec Lua, je n'écris pas mon jeu en Visual Basic uniquement parce qu'il prend en charge les médias. Je suis sûr que tout le monde ici a entendu quelqu'un dire certains outils pour certains travaux. Je suis sûr que vous pouvez enfoncer un clou avec une chaussure, mais pourquoi feriez-vous cela si vous pouvez utiliser un marteau?


2
C ++ est un langage intéressant, mais ce n’est pas vraiment pour les jeux que je sache. Si vous ne voulez pas utiliser l'assembly mais souhaitez quelque chose comme C ++, consultez C. Pour un bon framework C, vous devriez essayer quelque chose comme libsdl.org . (ok ça ne marche pas tout à fait parce que C ++ est rétro-compatible mais vous comprenez le point)
Ricket

Lol non, je ne comprends pas votre point. Honnêtement, je ne me soucie pas vraiment de ce que vous dites, alors ne vous inquiétez pas de me répondre. J'essaie simplement d'aider quelqu'un, pas de discuter de la légitimité d'un langage de programmation.
UnknownDevice

5
Son argument est que votre réponse initiale n'avait absolument aucune substance en ce qui concerne la question posée. Vous affirmez que Ruby n'est "pas vraiment pour les jeux", mais c'est TOUT ce que vous dites. Cela a peu de valeur. Quant à la raison pour laquelle OP voudrait utiliser Ruby, c'est assez clair: c'est "la seule langue qu'il connaisse vraiment bien". Ce n'est pas du tout la même chose que "juste parce que c'est possible".
Neverender

@ Neverender, ce n'est pas tout à fait vrai. Il a fait valoir que Python avait simplement une plus grande base d'utilisateurs et plus de bibliothèques déjà terminées pour le développement de jeux. Je pense que ce sont des observations légitimes à faire lorsqu'on donne des conseils à quelqu'un qui n'a aucune expérience du développement de jeux.
Zach Conn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.