¿Es Ruby un lenguaje adecuado para el desarrollo de juegos? [cerrado]

33

Quiero pasar al desarrollo de algunos juegos, pero el único lenguaje que conozco muy bien es Ruby. La mayor parte de lo que he leído parece apuntar a lenguajes de nivel inferior como C ++ para el desarrollo de juegos, o lenguajes para marcos específicos como C # para usar XNA. ¿Alguien tiene alguna experiencia usando un lenguaje como ruby ​​para el desarrollo de juegos? Si es así, ¿recomendaría a favor o en contra?

bennybdbc
fuente

Respuestas:

47

No tengo preferencia hacia Ruby (o Python), yo mismo soy una persona Java. Pero la respuesta de UnknownDevice sobre cómo Ruby de alguna manera "no es realmente para juegos" y Python sí, me frustraron. Espero que lo aclare.

Sé que Pygame existe y ha existido, y reconozco que Python tiene una base de usuarios más grande que Ruby. Pero para ser sincero, ninguno de ellos parece un lenguaje "para juegos". Tampoco Java, y ese es mi lenguaje de programación de juegos de elección. (y cuando digo "de elección", me refiero a elección , no porque sea lo que se enseña en la escuela o porque es algo que "sé"). Y realmente, ¿qué es un lenguaje "para juegos"? Bueno, la velocidad es un factor, y obviamente debe tener bibliotecas para gráficos y otros sistemas de juego (audio, entrada, etc.).

En cuanto a la velocidad, parece ser un cambio entre Ruby y Python. Haga algunas búsquedas y encontrará rápidamente puntos de referencia y argumentos para ambos lados del espectro, y varias configuraciones que ponen uno u otro por delante. Python con algo llamado "Psycho" parece un demonio de velocidad popular en comparación con Ruby, pero Python normal parece ser un poco más lento que Ruby. Al final, si eliges un lenguaje de tan alto nivel, obviamente no te preocupan las velocidades nativas; ve con el idioma que mejor conoces. Y obviamente conoces mejor a Ruby, ¡así que lo animo!

El otro factor es si la tecnología está ahí para crear juegos; si puede soportar dibujar en la pantalla y recopilar entradas y reproducir audio. Ruby puede hacer todo esto. De hecho, hay un buen número de opciones a este respecto. Hay un paquete ruby-opengl en RubyForge que le dará soporte OpenGL a Ruby (¿o podría estar incluido por defecto?). Alternativamente, Chingu proporciona "gráficos 2D acelerados por OpenGL a la velocidad del rayo". según su página de inicio; construye funciones adicionales sobre Gosu , que puedes elegir usar si Chingu es demasiado para ti. O para gráficos en 3D, si no quieres usar ruby-opengl, prueba G3DRuby , "un conjunto muy limpio de clases de envoltura para muchas de las funciones más avanzadas de OpenGL". Allí'Rubygame , sobre el que no puedo encontrar mucha información, pero dice ser "una biblioteca multimedia multiplataforma" y debe dar su nombre, debe hacer hincapié en el desarrollo del juego. Si está familiarizado con la popular biblioteca SDL para C ++, hay Ruby / SDL o RUDL , los cuales son envoltorios Ruby de SDL. O si prefiere el SFML más nuevo y más orientado a objetos , ¡también está disponible para Ruby!

No hay razón para que Ruby sea menos lenguaje de programación de juegos que Python; si hay uno, me gustaría escucharlo para poder argumentar en contra. Si te sientes más cómodo programando en Ruby, y conoces los pros y los contras en comparación con otros lenguajes populares, ¡entonces puedes desarrollar juegos en Ruby!

Ricket
fuente
+1, pero debe agregar algo sobre las limitaciones de uso en algunos idiomas en plataformas propietarias como consolas ... (limitaciones de hardware y políticas de constructor) Si los juegos caseros se hacen para capacitarse para conseguir un trabajo en la industria, entonces el uso de Ruby para el juego en sí no ayudará realmente de este lado. Sin embargo, para juegos de escritorio, "¿por qué no ???"
Klaim
@Klaim Yo diría que se está volviendo menos relevante, y me interesará saber el lenguaje utilizado para las consolas de la próxima generación o tal vez el siguiente. Es posible que continúen desarrollándose con C ++, pero personalmente creo que es muy probable que progresen hacia lenguajes de nivel superior. El desarrollo de Android, por ejemplo, está en Java; No es que Android sea una consola de juegos. Pero quizás un lenguaje híbrido como Go se convertirá en el nuevo lenguaje popular en una o dos generaciones de consolas.
Ricket
1
Estoy de acuerdo con el principio, y tal vez Go o D y logre algo de este lado. Pero creo que solo el lenguaje del sistema puede ser "estándar" en esta industria. Sin embargo, estoy hablando de la industria, no del lado independiente del dominio de los videojuegos. Creo que si sigues tu propio camino (no el salario de una gran empresa establecida), entonces tienes la oportunidad de usar lo que quieras. Pero aún necesita usar las herramientas solicitadas por los constructores cuando desea hacer algo en otra cosa que no sea consola. Los teléfonos usan Java, pero se usa una gran cantidad de C ++ en aplicaciones que requieren más rendimiento, en esos mismos teléfonos.
Klaim
De hecho, creo que a medida que la industria de los videojuegos tarda en adoptar incluso el estándar C ++ actual, hay buenas posibilidades de que tengas que esperar muchos años antes de tener algo más que C ++ en las consolas. Puede ocurrir un cambio en la forma en que trabajan los constructores y desarrolladores, pero no es realmente fácil imaginarlo a partir de hoy.
Klaim
Solo agregaría que hay muchos tipos de juegos donde el máximo rendimiento no es un problema. Por supuesto, mientras creas un nuevo Crysis, querrás exprimir cada cuadro de él, pero hay muchos juegos en los que no tienes que hacerlo. Y trabajando en tales juegos, es posible que también necesite algunos otros idiomas (por ejemplo, los lenguajes de sombreado, juegos como Civilization 4 y 5 también se basan en lenguajes de secuencias de comandos).
MartinTeeVarga
9

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

La URL es probablemente un poco spoiler.

tl; dr: el ingenuo recolector de basura es un problema real.

Neverender
fuente
¡Muy informativo! ¿Puede un experto de Ruby comentar si esto todavía es aplicable hoy? El artículo está fechado en enero de 2009 y no me sorprendería si han pasado muchas cosas desde entonces. editar Bien, acabo de encontrar un artículo con fecha del 3 de septiembre de 2010 que insinúa que, de hecho, este sigue siendo el caso hoy, diciendo que "el recolector de basura Ruby no estaba destinado a funcionar", ¡interesante! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket
1
El recolector de basura de Ruby es marcar y barrer, pero en el caso de los ciclos, también lo son Python y Lua (de hecho, en un juego de Python en el que trabajé tuvimos que retrasar GC por exactamente esa razón). No he hecho puntos de referencia, pero quizás Ruby's es incidentalmente lento en lugar de fundamentalmente lento. No lo veo como una razón muy convincente para evitar a Ruby, especialmente si estás hablando de construir juegos enteramente en Ruby como lo hace el interrogador. Simplemente desactive GC hasta el momento apropiado.
1
Ha pasado un tiempo desde que esto fue publicado, pero mira este interesante artículo. patshaughnessy.net/2012/3/23/… Se trata del recolector de basura en Ruby 2.0. Aquí hay una nota clave del creador de GC youtube.com/watch?v=4fIdEeM0Fyg Este video, cuando salga Ruby 2.0, probablemente tendrá entre 1,5 y 2 años, por lo que es posible que se hayan realizado muchas más mejoras de rendimiento y GC. . Esto podría hacer que Ruby sea más viable de usar para más juegos de objetos pesados. ¡Ciertamente lo espero! Creo que Ruby 2.0 sale en 2013.
Michael van Rooijen
1
También hay máquinas virtuales distintas de MRI que admiten diferentes sistemas de recolección de basura, incluido el nuevo mruby del propio Matz que incluye un sistema de recolección de basura incremental. Hasta ahora, mruby se perfila como una gran opción para los juegos. ¡Incluso funciona en iOS y Android!
Stephen Belanger
5

No hay razón por la que no puedas. Mientras haya soporte multimedia para un idioma, entonces es material de gamedev. Diablos, una gran proporción de uno de los juegos Rollercoaster Tycoon se hizo a mano en ASM.

El pato comunista
fuente
3
Te estás contradiciendo a ti mismo. "codificar manualmente el juego en asm" es exactamente lo contrario de "codificar el juego en ruby" o algún otro lenguaje de alto nivel.
bobobobo
1

Si bien no estoy familiarizado con gran parte del trabajo de especificaciones profundas que rodea a Ruby, Enterbrain creó los programas de creación de juegos RPG Maker VX y RPG Maker XP que usan guiones de juegos basados ​​en Ruby: http://www.rpgmakerweb.com/

Esta fue mi primera inmersión en el idioma. Como dijo la mayoría de la gente, probablemente no obtendrá el alto rendimiento de otros idiomas, pero si está buscando comenzar un juego de rol 2D (u otro juego 2D, en realidad), es probablemente uno de los editores de juegos más sofisticados para ayuda.

Bimini Road
fuente
0

Ruby es un lenguaje agradable, pero en realidad no es para que los juegos sean honestos. Si no quieres usar C ++ pero quieres algo como Ruby, echa un vistazo a Python. Para un buen marco de Python, debe consultar algo como www.cocos2d.org/.

Dispositivo desconocido
fuente
3
... o www.pygame.org
Ian Schreiber
66
Esto no tiene sentido. Ruby no es menos un lenguaje "para juegos" que Python.
Ricket
2
... sin sentido. También podrías decir que Lua no es para juegos.
Kornel Kisielewicz
2
¿Hay un rubí equivalente al pygame? No diría que un idioma es más adecuado que el otro. Pero podría ser razonable decir que Python tiene mejores bibliotecas de juegos y comunidad de gamedev.
deft_code
Tengo la sensación de que hay un puerto SFML para Ruby.
El pato comunista
0

Depende del tipo de juego que te interese escribir. He usado ruby ​​para escribir clientes de IA para varios juegos, incluidos Diplomacy , poker y Lost Cities . Creo que es un lenguaje muy amigable para experimentar rápidamente con diferentes conceptos. Por otro lado, no me gustaría usarlo para escribir mi tirador en tiempo real, simplemente no tendrá el rendimiento que necesito.

AShelly
fuente
0

Tu pregunta es demasiado general. ¿Solo quieres escribir algún juego de computadora como un proyecto de pasatiempo o quieres entrar en el desarrollo de juegos independientes / profesionales? ¿Tendrá gráficos? ¿En qué plataformas se supone que debe ejecutarse?

En general, Ruby es adecuado para proyectos de hobby (por cierto, mi juego favorito de Ruby es Ruby Warrior ) y para el desarrollo de juegos basados ​​en la web como Farmville. Incluso hay una cierta demanda de tales programadores, intente googlear algo como: "juego social de programador ruby".

Por otro lado, si desea desarrollar juegos de escritorio o móviles con gráficos, Ruby no es la mejor opción. Considerar:

  • Biblioteca Javascript compatible con Coffeescript (su sintaxis es muy similar a Ruby)
  • Python: muy similar a Ruby, mejores bibliotecas de juegos
Lukas Stejskal
fuente
0

No esperes escribir juegos 3D profesionales, comerciales y de alto rendimiento con Ruby, pero Ruby es un gran lenguaje para usar cuando aprendes conceptos de desarrollo de juegos.

Gosu es la biblioteca más popular (y mantenida activamente) para escribir juegos 2D en Ruby. Tiene una biblioteca subyacente de C ++ que utiliza para mejorar el rendimiento e interactuar con las bibliotecas de representación de pantalla subyacentes como OpenGL.

En cuanto al rendimiento, la implementación "predeterminada" de Ruby (MRI) funcionará bien (sugiero el último Ruby 2.0 para un mejor rendimiento) pero hay implementaciones alternativas que tienen hilos nativos y algoritmos alternativos de recolección de basura como Rubinius, JRuby, etc. Si está utilizando hilos, puede probar Rubinius, de lo contrario, MRI Ruby funcionará bien.

Andrés
fuente
-2

Dije Python porque tiene una base de usuarios más grande y más opciones cuando se trata de frameworks / bibliotecas para el desarrollo de juegos. Es bastante obvio que esta persona no tiene experiencia en el desarrollo de juegos, por lo que no tiene sentido recomendar que usen algo como Ruby solo porque es posible.

Cuando trabajo en juegos, uso C ++ con Lua, no salgo y escribo mi juego en Visual Basic solo porque tiene soporte multimedia. Estoy seguro de que todos aquí han escuchado a alguien decir ciertas herramientas para ciertos trabajos. Estoy seguro de que puedes clavar un clavo con un zapato, pero ¿por qué lo harías si puedes usar un martillo?

Dispositivo desconocido
fuente
2
C ++ es un buen lenguaje, pero en realidad no es para que los juegos sean honestos. Si no desea utilizar el ensamblaje pero quiere algo como C ++, consulte C. Para obtener un buen marco de C, debería consultar algo como libsdl.org . (está bien, no funciona porque C ++ es compatible con versiones anteriores pero entiendes el punto)
Ricket
Lol no, no entiendo tu punto. Honestamente, no me importa lo que digas, así que no te molestes en responderme. Solo intento ayudar a alguien, no discutir sobre la legitimidad de un lenguaje de programación.
UnknownDevice
55
Su punto es que su respuesta original no tenía absolutamente ninguna sustancia con respecto a la pregunta formulada. Afirmas que Ruby "no es realmente para juegos", pero eso es TODO lo que dices. Hay poco valor en eso. En cuanto a por qué OP querría usar Ruby, está bastante claro: es "el único idioma que conoce realmente bien". Eso no es lo mismo que "solo porque es posible".
Neverender
@Neverender, eso no es del todo cierto. Él argumentó que Python simplemente tiene una base de usuarios más grande y más bibliotecas ya completadas para el desarrollo del juego. Creo que estas son observaciones legítimas para dar consejos a alguien que no tiene experiencia en el desarrollo de juegos.
Zach Conn