Ist Ruby eine geeignete Sprache für die Spieleentwicklung? [geschlossen]

33

Ich möchte in die Spieleentwicklung einsteigen, aber die einzige Sprache, die ich wirklich gut kenne, ist Ruby. Das meiste, was ich gelesen habe, scheint auf niedrigere Sprachen wie C ++ für die Spieleentwicklung oder Sprachen für bestimmte Frameworks wie C # für die Verwendung von XNA hinzuweisen. Hat jemand Erfahrung mit einer Sprache wie Ruby für die Spieleentwicklung? Wenn ja, würden Sie dafür oder dagegen raten?

bennybdbc
quelle

Antworten:

47

Ich habe keine Vorliebe für Ruby (oder Python), ich bin selbst eine Java-Person. Aber UnknownDevices Antwort, wie Ruby irgendwie "nicht wirklich für Spiele" und Python ist, hat mich frustriert. Ich hoffe, er wird klarstellen.

Ich weiß, dass Pygame existiert und existiert, und ich erkenne, dass Python eine größere Nutzerbasis als Ruby hat. Aber um ehrlich zu sein, scheint keine von beiden eine Sprache "für Spiele" zu sein. Java auch nicht, und das ist meine bevorzugte Programmiersprache. (und wenn ich "Wahl" sage, meine ich damit Wahl , nicht weil es das ist, was in der Schule gelehrt wird oder weil es etwas ist, was ich "weiß"). Und was ist eigentlich eine Sprache "für Spiele"? Nun, Geschwindigkeit ist ein Faktor, und natürlich muss es Bibliotheken für Grafiken und andere Spielsysteme (Audio, Eingabe usw.) geben.

Was die Geschwindigkeit anbelangt, scheint es sich um ein Chaos zwischen Ruby und Python zu handeln. Bei einigen Suchvorgängen finden Sie schnell Benchmarks und Argumente für beide Seiten des Spektrums sowie verschiedene Konfigurationen, die den einen oder anderen Vorsprung verleihen. Python mit dem Namen "Psycho" scheint im Vergleich zu Ruby ein beliebter Geschwindigkeitsdämon zu sein, aber reguläres Python scheint etwas langsamer zu sein als Ruby. Wenn Sie sich für eine solche Hochsprache entscheiden, interessiert Sie die native Geschwindigkeit letztendlich sowieso nicht. Gehen Sie mit der Sprache, die Sie am besten kennen. Und offensichtlich kennst du Ruby am besten, also ermutige ich ihn!

Der andere Faktor ist, ob die Technologie zum Erstellen von Spielen vorhanden ist. ob es das Zeichnen auf dem Bildschirm und das Sammeln von Eingaben und das Abspielen von Audio unterstützen kann. Ruby kann all dies. Tatsächlich gibt es in dieser Hinsicht eine Reihe von Optionen. Es gibt ein Ruby-Opengl- Paket bei RubyForge, das Ruby OpenGL-Unterstützung bietet (oder ist es möglicherweise standardmäßig enthalten?). Alternativ bietet Chingu "blitzschnelle OpenGL-beschleunigte 2D-Grafiken!" laut seiner Homepage; Es baut zusätzliche Funktionen auf Gosu auf , die Sie verwenden können, wenn Chingu zu viel für Sie ist. Oder für 3D-Grafiken, wenn Sie Ruby-OpenGL nicht verwenden möchten, versuchen Sie es mit G3DRuby , "einem sehr sauberen Satz von Wrapper-Klassen für viele der fortgeschritteneren OpenGL-Funktionen". Dort'Rubygame , zu dem ich nicht viele Informationen finden kann, der aber behauptet, eine "plattformübergreifende Multimediabibliothek" zu sein und den Namen zu tragen, muss den Schwerpunkt auf die Spieleentwicklung legen. Wenn Sie mit der beliebten SDL- Bibliothek für C ++ vertraut sind , gibt es Ruby / SDL oder RUDL , die beide Ruby-Wrapper von SDL sind. Wenn Sie das neuere, objektorientiertere SFML bevorzugen , ist es auch für Ruby verfügbar!

Es gibt keinen Grund, warum Ruby weniger eine Programmiersprache für Spiele sein sollte als Python. Wenn es einen gibt, würde ich ihn gerne hören, damit ich dagegen argumentieren kann. Wenn Sie sich beim Programmieren in Ruby am wohlsten fühlen und sich der Vor- und Nachteile im Vergleich zu anderen gängigen Sprachen bewusst sind, können Sie auf jeden Fall Spiele in Ruby entwickeln!

Ricket
quelle
+1, aber Sie sollten etwas über die Einschränkungen der Verwendung in einigen Sprachen auf proprietären Plattformen wie Konsolen hinzufügen ... (Hardware- und Konstruktorrichtlinienbeschränkungen) Wenn die selbst erstellten Spiele für das Training zur Erlangung eines Arbeitsplatzes in der Branche gemacht werden, dann Ruby für das Spiel selbst zu verwenden, wird auf dieser Seite nicht wirklich helfen. Für Desktop-Spiele jedoch "warum nicht ???"
Klaim
@Klaim Ich würde behaupten, dass es weniger relevant wird, und ich werde interessiert sein, welche Sprache für Konsolen der nächsten Generation oder vielleicht der nachher verwendeten Sprache verwendet wird. Es ist möglich, dass sie mit C ++ weiterentwickelt werden, aber ich persönlich halte es für sehr wahrscheinlich, dass sie zu höheren Sprachen vordringen. Die Android-Entwicklung zum Beispiel erfolgt in Java. nicht, dass Android überhaupt eine Spielekonsole ist. Aber vielleicht wird eine hybride Sprache wie Go die neue populäre Sprache in ein oder zwei Konsolengenerationen sein.
Ricket
1
Ich stimme dem Prinzip zu und vielleicht kann ich auf dieser Seite etwas erreichen. Aber ich denke, nur die Systemsprache kann in dieser Branche "Standard" sein. Ich spreche jedoch von der Branche und nicht von der Indie-Seite der Videospiel-Domäne. Ich denke, wenn Sie Ihren eigenen Weg gehen (kein Gehalt eines großen etablierten Unternehmens), dann haben Sie die Chance, alles zu nutzen, was Sie wollen. Sie müssen jedoch immer noch die Tools verwenden, die von den Konstruktoren angefordert wurden, wenn Sie etwas anderes als die Konsole verwenden möchten. Telefone verwenden Java, aber ein Großteil von C ++ wird für leistungsfähigere Anwendungen auf denselben Telefonen verwendet.
Fordern Sie den
Tatsächlich denke ich, dass die Videospielbranche selbst mit dem derzeitigen Standard-C ++ nur schleppend zurechtkommt und es gute Chancen gibt, dass Sie viele Jahre warten müssen, bevor Sie etwas anderes als C ++ auf Konsolen haben. Eine Verschiebung in der Arbeitsweise von Konstrukteuren und Entwicklern mag vorkommen, ist aber aus heutiger Sicht nicht so einfach vorstellbar.
Fordern Sie den
Ich möchte nur hinzufügen, dass es viele Arten von Spielen gibt, bei denen es nicht auf maximale Leistung ankommt. Natürlich wollen Sie bei der Erstellung von Crysis jedes einzelne Bild aus dem Spiel herausholen, aber es gibt viele Spiele, bei denen Sie das nicht müssen. Wenn Sie an solchen Spielen arbeiten, benötigen Sie möglicherweise auch einige andere Sprachen (Shader-Sprachen, z. B. für Spiele wie Civilization 4 und 5, sind auch Skriptsprachen erforderlich).
MartinTeeVarga
9

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

Die URL ist wahrscheinlich ein bisschen wie ein Spoiler.

tl; dr: der naive müllsammler ist ein echtes problem.

Neverender
quelle
Sehr informativ! Kann sich ein Ruby-Experte dazu äußern, ob dies heute noch gilt? Der Artikel ist vom Januar 2009 und ich wäre nicht überrascht, wenn seitdem viel passiert ist. bearbeiten Okay, ich habe gerade einen Artikel vom 3. September 2010 , die Hinweise darauf , dass in die Tat dies noch heute der Fall ist, sagen „der Ruby - Garbage - Collector nicht ausgeführt werden sollte , bedeutet“ - interessant! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket
1
Rubys Garbage Collector ist Mark-and-Sweep, aber bei Zyklen auch Python und Lua (bei einem Python-Spiel, an dem ich gearbeitet habe, mussten wir GC aus genau diesem Grund verzögern). Ich habe keine Benchmarks durchgeführt, aber vielleicht ist Ruby's eher zufällig langsam als grundlegend langsam. Ich sehe das nicht als einen überaus zwingenden Grund, Ruby zu meiden, besonders wenn Sie darüber sprechen, Spiele vollständig in Ruby zu erstellen, wie es der Fragesteller ist. Deaktivieren Sie die GC einfach bis zu einem bestimmten Zeitpunkt.
1
Es ist schon eine Weile her, dass dies gepostet wurde, aber lesen Sie diesen interessanten Artikel. patshaughnessy.net/2012/3/23/… Es geht um den Garbage Collector in Ruby 2.0. Hier ist eine Keynote des GC-Erstellers youtube.com/watch?v=4fIdEeM0Fyg. Dieses Video wird zum Zeitpunkt der Veröffentlichung von Ruby 2.0 wahrscheinlich 1,5 bis 2 Jahre alt sein, sodass möglicherweise noch viele weitere Leistungs- und GC-Verbesserungen vorgenommen wurden . Dies könnte dazu führen, dass Ruby für objektintensivere Spiele besser geeignet ist. Das hoffe ich sehr! Ich glaube, Ruby 2.0 erscheint 2013.
Michael van Rooijen
1
Es gibt auch andere VMs als MRT, die verschiedene Garbage Collection-Systeme unterstützen, einschließlich des neuen mruby von Matz, der ein inkrementelles Garbage Collection-System enthält. Bisher hat sich mruby zu einer großartigen Wahl für Spiele entwickelt. Es funktioniert sogar auf iOS und Android!
Stephen Belanger
5

Es gibt keinen Grund, warum Sie nicht können. Solange es Multimedia-Unterstützung für eine Sprache gibt, ist es Spielev-Material. Heck, ein großer Teil eines der Rollercoaster Tycoon-Spiele wurde von Hand in ASM gemacht.

Die kommunistische Ente
quelle
3
Du widersprichst dir. "Handcodierung des Spiels in ASM" ist das genaue Gegenteil von "Codierung des Spiels in Ruby" oder einer anderen wirklich hochwertigen Sprache.
Bobobobo
1

Enterbrain hat die Spieleentwicklungsprogramme RPG Maker VX und RPG Maker XP entwickelt, die auf Ruby basierende Skripte verwenden: http://www.rpgmakerweb.com/

Dies war eigentlich mein erster Tauchgang in die Sprache. Wie die meisten Leute sagten, werden Sie wahrscheinlich nicht die hohe Leistung anderer Sprachen erhalten, aber wenn Sie ein 2D-Rollenspiel (oder wirklich ein anderes 2D-Spiel) starten möchten, ist es wahrscheinlich einer der anspruchsvollsten Spieleditoren auf dem Markt Hilfe.

Bimini Road
quelle
0

Ruby ist eine nette Sprache, aber um ehrlich zu sein, ist es nicht wirklich für Spiele. Wenn Sie C ++ nicht verwenden möchten, aber etwas wie Ruby möchten, schauen Sie sich Python an. Für ein gutes Python-Framework sollten Sie sich www.cocos2d.org/ ansehen.

Unbekanntes Gerät
quelle
3
... oder www.pygame.org
Ian Schreiber
6
Das ist schwachsinn. Ruby ist nicht weniger eine Sprache "für Spiele" als Python.
Ricket
2
... Unsinn. Man könnte genauso gut sagen, dass Lua nichts für Spiele ist.
Kornel Kisielewicz
2
Gibt es ein Rubinäquivalent zu Pygame? Ich würde nicht sagen, dass eine Sprache besser geeignet ist als die andere. Aber es könnte vernünftig sein zu sagen, dass Python bessere Spielbibliotheken und eine bessere Gamedev-Community hat.
deft_code
Ich habe das Gefühl, dass es einen SFML-Port zum Rubinieren gibt.
Die kommunistische Ente
0

Es hängt davon ab, welche Art von Spiel Sie schreiben möchten. Ich habe Ruby verwendet, um KI-Clients für verschiedene Spiele zu schreiben, darunter Diplomacy , Poker und Lost Cities . Ich finde, es ist eine sehr freundliche Sprache, um schnell mit verschiedenen Konzepten zu experimentieren. Andererseits möchte ich damit nicht meinen Echtzeit-Shooter schreiben - er hat einfach nicht die Leistung, die ich brauche.

Ahelly
quelle
0

Ihre Frage ist zu allgemein. Möchtest du einfach ein Computerspiel als Hobbyprojekt schreiben oder in die Entwicklung von Indie- / Profispielen einsteigen? Wird es Grafiken haben? Auf welchen Plattformen soll es laufen?

Im Allgemeinen eignet sich Ruby für Hobbyprojekte (übrigens Ruby Warrior ist mein Lieblingsspiel ) und für die Entwicklung von webbasierten Spielen wie Farmville. Es gibt sogar eine gewisse Nachfrage nach solchen Programmierern, die versuchen, so etwas wie "Ruby Programmer Social Game" zu googeln.

Auf der anderen Seite ist Ruby nicht die beste Option, wenn Sie Desktop- oder Mobile-basierte Spiele mit Grafiken entwickeln möchten. Erwägen:

  • Javascript-Bibliothek, die Coffeescript unterstützt (die Syntax ist Ruby sehr ähnlich)
  • Python - Ruby sehr ähnlich, bessere Spielbibliotheken
Lukas Stejskal
quelle
0

Erwarten Sie nicht, mit Ruby hochleistungsfähige, professionelle, kommerzielle 3D-Spiele zu schreiben, aber Ruby ist eine großartige Sprache, um Spieleentwicklungskonzepte zu erlernen.

Gosu ist die beliebteste (und aktiv gewartete) Bibliothek zum Schreiben von 2D-Spielen in Ruby. Es verfügt über eine zugrunde liegende C ++ - Bibliothek, die verwendet wird, um die Leistung zu verbessern und mit den zugrunde liegenden Darstellungsbibliotheken wie OpenGL zu interagieren.

Was die Leistung betrifft, funktioniert die "Standard" -Ruby-Implementierung (MRI) einwandfrei (ich empfehle die neueste Version von Ruby 2.0, um die beste Leistung zu erzielen). Es gibt jedoch alternative Implementierungen mit systemeigenen Threads und alternativen Algorithmen zur Speicherbereinigung wie Rubinius, JRuby usw Wenn Sie Threads verwenden, sollten Sie Rubinius ausprobieren, andernfalls funktioniert MRT Ruby einwandfrei.

Andrew
quelle
-2

Ich sagte Python, weil es eine größere Nutzerbasis und mehr Auswahlmöglichkeiten hat, wenn es um Frameworks / Bibliotheken für die Spieleentwicklung geht. Es ist ziemlich offensichtlich, dass diese Person keine Erfahrung in der Spieleentwicklung hat. Daher ist es für mich nicht sinnvoll, die Verwendung von Ruby zu empfehlen, nur weil dies möglich ist.

Wenn ich an Spielen arbeite, die ich in C ++ mit Lua verwende, schreibe ich mein Spiel nicht in Visual Basic, nur weil es Medienunterstützung bietet. Ich bin sicher, jeder hier hat jemanden sagen hören, bestimmte Werkzeuge für bestimmte Jobs. Ich bin sicher, Sie können einen Nagel mit einem Schuh hämmern, aber warum sollten Sie das tun, wenn Sie einen Hammer verwenden können?

Unbekanntes Gerät
quelle
2
C ++ ist eine nette Sprache, aber um ehrlich zu sein, ist es nicht wirklich für Spiele. Wenn Sie keine Assembly verwenden möchten, sondern etwas wie C ++ möchten, lesen Sie C. Für ein gutes C-Framework sollten Sie etwas wie libsdl.org lesen . (Okay, es funktioniert nicht ganz, weil C ++ abwärtskompatibel ist, aber Sie bekommen den Punkt)
Ricket
Lol nein, ich verstehe deinen Standpunkt nicht. Ehrlich gesagt ist es mir egal, was du sagst, also kümmere dich nicht darum, mir zu antworten. Ich versuche nur, jemandem zu helfen und nicht über die Legitimität einer Programmiersprache zu streiten.
UnknownDevice
5
Sein Punkt ist, dass Ihre ursprüngliche Antwort in Bezug auf die gestellte Frage absolut keine Substanz hatte. Sie behaupten, dass Ruby "nicht wirklich für Spiele" ist, aber das ist alles, was Sie sagen. Darin liegt wenig Wert. Warum OP Ruby verwenden möchte, ist klar: Es ist "die einzige Sprache, die er wirklich gut kennt". Das ist keineswegs dasselbe wie "nur weil es möglich ist".
Neverender
@Neverender, das stimmt nicht ganz. Er argumentierte, dass Python einfach eine größere Benutzerbasis und mehr Bibliotheken hat, die bereits für die Spieleentwicklung fertiggestellt wurden. Ich glaube, dies sind legitime Beobachtungen, die gemacht werden müssen, wenn jemandem, der keine Erfahrung in der Spieleentwicklung hat, ein Rat gegeben wird.
Zach Conn