Ruby é uma linguagem adequada para o desenvolvimento de jogos? [fechadas]


33

Quero mudar para o desenvolvimento de alguns jogos, mas a única linguagem que conheço muito bem é Ruby. A maior parte do que li parece apontar para linguagens de nível inferior como C ++ para desenvolvimento de jogos ou linguagens para estruturas específicas como C # para usar XNA. Alguém tem alguma experiência usando uma linguagem como ruby ​​para desenvolvimento de jogos? Se sim, você recomendaria a favor ou contra?

Respostas:


47

Não tenho preferência pelo Ruby (ou Python), sou uma pessoa Java. Mas a resposta do UnknownDevice sobre como o Ruby de alguma forma "não é realmente para jogos" e o Python é, me frustrou. Espero que ele esclareça.

Eu sei que o Pygame existe e já existe, e reconheço que o Python tem uma base de usuários maior que o Ruby. Mas, para ser sincero, nenhum deles parece ser um idioma "para jogos". Nem o Java, e essa é a minha linguagem de programação de jogos preferida. (e quando digo "de escolha", quero dizer por escolha , não porque é o que é ensinado na escola ou porque é algo que eu "conheço"). E realmente, o que é uma linguagem "para jogos"? Bem, a velocidade é um fator e, obviamente, deve ter bibliotecas para gráficos e outros sistemas de jogos (áudio, entrada, etc.).

No que diz respeito à velocidade, parece haver uma discussão entre Ruby e Python. Faça algumas pesquisas e você encontrará rapidamente referências e argumentos para os dois lados do espectro e várias configurações que colocam um ou outro à frente. O Python com algo chamado "Psycho" parece um demônio da velocidade popular comparado ao Ruby, mas o Python comum parece ser um pouco mais lento que o Ruby. No final, se você escolher um idioma de alto nível, obviamente não se preocupará com as velocidades nativas; vá com o idioma que você conhece melhor. E, obviamente, você conhece Ruby melhor, então eu encorajo!

O outro fator é se a tecnologia existe para criar jogos; se pode suportar desenhar na tela e coletar entrada e reproduzir áudio. Ruby pode fazer tudo isso. De fato, há um bom número de opções a esse respeito. Há um pacote ruby-opengl no RubyForge que dará suporte ao OpenGL para Ruby (ou pode ser incluído por padrão?). Como alternativa, o Chingu fornece "gráficos 2D acelerados e extremamente rápidos em OpenGL!" de acordo com a sua página inicial; ele cria recursos extras em cima do Gosu , que você pode optar por usar se o Chingu for demais para você. Ou para gráficos 3D, se você não quiser usar o ruby-opengl, tente o G3DRuby , "um conjunto muito limpo de classes de wrapper para muitos dos recursos mais avançados do OpenGL". Lá'O Rubygame , que não consigo encontrar muita informação, mas afirma ser "uma biblioteca multimídia de plataforma cruzada" e recebeu esse nome, deve enfatizar o desenvolvimento de jogos. Se você estiver familiarizado com a popular biblioteca SDL para C ++, há Ruby / SDL ou RUDL , os quais são wrappers Ruby do SDL. Ou, se você preferir o SFML mais novo e mais orientado a objetos , ele também está disponível para Ruby!

Não há razão para que Ruby seja menos uma linguagem de programação de jogos que Python; se houver, eu realmente gostaria de ouvi-lo para poder argumentar contra. Se você se sente à vontade para programar em Ruby e conhece os prós e os contras em comparação com outras linguagens populares, certamente poderá desenvolver jogos em Ruby!


+1, mas você deve adicionar algo sobre as limitações de uso em alguns idiomas em plataformas proprietárias, como consoles ... (limitações de hardware e política do construtor) Se os jogos caseiros forem feitos para treinamento para conseguir um emprego no setor, usar Ruby para o jogo em si não ajudará realmente neste lado. Para jogos de mesa, no entanto, "por que não ???"
Klaim

@Klaim Eu diria que isso está se tornando menos relevante, e eu vou estar interessado em saber o idioma usado para os consoles da próxima geração ou talvez a seguinte. É possível que eles continuem sendo desenvolvidos com C ++, mas eu pessoalmente acredito que é muito provável que eles avancem para linguagens de nível superior. O desenvolvimento do Android, por exemplo, é em Java; não que o Android seja um console de jogos. Mas talvez um idioma híbrido como o Go se torne o novo idioma popular em uma ou duas gerações de console.
Ricket 11/09/10

1
Eu concordo com o princípio e, talvez, Vá ou D e consiga algo deste lado. Mas acho que apenas a linguagem do sistema pode ser "padrão" nesse setor. No entanto, estou falando da indústria, não do lado indie do domínio dos videogames. Acho que se você seguir o seu próprio caminho (não o salário de uma grande empresa estabelecida), terá a chance de usar o que quiser. Mas você ainda precisa usar as ferramentas solicitadas pelos construtores quando quiser fazer algo em algo que não seja console. Os telefones usam Java, mas muito C ++ é usado em aplicativos com mais desempenho, nesses mesmos telefones.
Klaim

Na verdade, acho que, como a indústria de videogames é lenta em adotar até o C ++ padrão atual, há boas chances de que você precise esperar muitos anos antes de ter qualquer coisa que não seja C ++ nos consoles. Uma mudança na maneira como os construtores e desenvolvedores trabalham pode acontecer, mas não é fácil imaginar a partir de hoje.
Klaim

Eu apenas acrescentaria que existem muitos tipos de jogos em que o desempenho máximo não é um problema. É claro que, ao criar o novo Crysis, você precisará espremer todos os quadros dele, mas há muitos jogos em que você não precisa. E trabalhando nesses jogos, você pode precisar de algumas outras línguas também (linguagens shader, por exemplo, jogos como Civilization 4 & 5 também contam com linguagens de script).
MartinTeeVarga

9

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

O URL provavelmente é um spoiler.

tl; dr: o coletor de lixo ingênuo é um problema real.


Muito informativo! Um especialista em Ruby pode comentar se isso ainda é aplicável hoje? O artigo é de janeiro de 2009 e não ficaria surpreso se muita coisa aconteceu desde então. edit Ok, acabei de encontrar um artigo de 3 de setembro de 2010 que sugere que esse ainda é o caso hoje, dizendo "o coletor de lixo Ruby não era para ser executado" - interessante! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket 6/09/10

1
O coletor de lixo de Ruby é marca-e-varredura, mas no caso de ciclos, o mesmo ocorre com Python e Lua (na verdade, em um jogo em Python em que trabalhei, tivemos que atrasar o GC exatamente por esse motivo). Eu não fiz benchmarks, mas talvez o Ruby seja apenas aliás lento, e não fundamentalmente lento. Não vejo isso como uma razão extremamente convincente para evitar Ruby, especialmente se você está falando sobre a criação de jogos inteiramente em Ruby, como é o questionador. Apenas desative o GC até um momento apropriado.

1
Já faz um tempo desde que isso foi publicado, mas confira este artigo interessante. patshaughnessy.net/2012/3/23/… É sobre o Garbage Collector no Ruby 2.0. Aqui está uma palestra do criador do GC youtube.com/watch?v=4fIdEeM0Fyg Este vídeo, quando o Ruby 2.0 for lançado, provavelmente terá de 1,5 a 2 anos, portanto, é possível que tenham sido feitas muito mais melhorias no desempenho e no GC . Isso pode tornar o Ruby mais viável para jogos mais pesados. Eu certamente espero que sim! Eu acredito que o Ruby 2.0 sai em 2013.
Michael van Rooijen

1
Também existem outras VMs, além da MRI, que oferecem suporte a diferentes sistemas de coleta de lixo, incluindo o novo mruby do próprio Matz, que inclui um sistema de coleta de lixo incremental. Até agora, o mruby está se tornando uma ótima opção para jogos. Até funciona em iOS e Android!
Stephen Belanger

5

Não há razão para que você não possa. Enquanto houver suporte multimídia para um idioma, será um material para o jogo. Heck, uma grande proporção de um dos jogos Rollercoaster Tycoon foi feita à mão no ASM.


3
Você está meio que se contradizendo. "codificar manualmente o jogo em asm" é exatamente o oposto de "codificar o jogo em ruby" ou alguma outra linguagem de alto nível.
bobobobo

1

Embora eu não esteja familiarizado com muito do profundo trabalho em torno de Ruby, a Enterbrain criou os programas de criação de jogos RPG Maker VX e RPG Maker XP que usam scripts de jogos baseados em Ruby: http://www.rpgmakerweb.com/

Este foi realmente o meu primeiro mergulho no idioma. Como a maioria das pessoas disse, você provavelmente não terá o alto desempenho de outros idiomas, mas se você deseja iniciar um RPG 2D (ou outro jogo 2D, na verdade), é provavelmente um dos editores de jogos mais sofisticados do mercado. Socorro.


0

Ruby é uma linguagem legal, mas não é verdade que os jogos sejam honestos. Se você não deseja usar C ++, mas deseja algo como Ruby, confira Python. Para uma boa estrutura Python, você deve consultar algo como www.cocos2d.org/.


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

6
Isso não faz sentido. Ruby não é menos uma linguagem "para jogos" do que Python.
Ricket

2
... Absurdo. Você também pode dizer que Lua não é para jogos.
Kornel Kisielewicz 05/09/10

2
Existe um rubi equivalente ao pygame? Eu não diria que um idioma é mais adequado que o outro. Mas pode ser razoável dizer que o python tem melhores bibliotecas de jogos e comunidade gamedev.
Deft_code 5/09/10

Tenho a sensação de que há uma porta SFML para ruby.
The Duck comunista

0

Depende do tipo de jogo que você está interessado em escrever. Eu usei o ruby ​​para escrever clientes de IA para vários jogos, incluindo Diplomacia , pôquer e Lost Cities . Acho que é uma linguagem muito amigável para experimentar rapidamente conceitos diferentes. Por outro lado, eu não gostaria de usá-lo para escrever meu jogo de tiro em tempo real - ele simplesmente não terá o desempenho que eu preciso.


0

Sua pergunta é muito geral. Você quer apenas escrever algum jogo de computador como um projeto de hobby ou deseja entrar no desenvolvimento de jogos indie / profissionais? Terá gráficos? Em quais plataformas ele deve rodar?

Em geral, o Ruby é adequado para projetos de hobby (BTW, meu jogo favorito do Ruby é o Ruby Warrior ) e para o desenvolvimento de jogos baseados na Web como o Farmville. Existe até certa demanda por esses programadores, tente pesquisar no Google algo como: "jogo social do programador ruby".

Por outro lado, se você deseja desenvolver jogos baseados em computador ou em dispositivos móveis com gráficos, Ruby não é a melhor opção. Considerar:

  • Biblioteca Javascript com suporte ao Coffeescript (sua sintaxe é muito semelhante ao Ruby)
  • Python - muito semelhante ao Ruby, melhores bibliotecas de jogos

0

Não espere escrever jogos 3D de alto desempenho, profissionais, comerciais, com Ruby, mas Ruby é uma ótima linguagem para usar ao aprender conceitos de desenvolvimento de jogos.

Gosu é a biblioteca mais popular (e mantida ativamente) para escrever jogos 2D em Ruby. Possui uma biblioteca C ++ subjacente usada para melhorar o desempenho e interagir com as bibliotecas de renderização de exibição subjacentes, como o OpenGL.

Quanto ao desempenho, a implementação "padrão" do Ruby (MRI) funcionará bem (sugiro o Ruby 2.0 mais recente para obter melhor desempenho), mas existem implementações alternativas que possuem threads nativas e algoritmos alternativos de coleta de lixo, como Rubinius, JRuby, etc. Se você estiver usando threads, poderá experimentar o Rubinius, caso contrário, a MRI Ruby funcionará bem.


-2

Eu disse Python porque tem uma maior base de usuários e mais opções quando se trata de frameworks / bibliotecas para o desenvolvimento de jogos. É bastante óbvio que essa pessoa não tem experiência no desenvolvimento de jogos, então não faz sentido para mim recomendar que eles usem algo como Ruby apenas porque é possível.

Quando trabalho em jogos, uso C ++ com Lua, não saio e escrevo meu jogo no Visual Basic apenas porque ele possui suporte de mídia. Tenho certeza de que todos aqui ouviram alguém dizer certas ferramentas para determinados trabalhos. Tenho certeza que você pode martelar um prego com um sapato, mas por que você faria isso quando pode usar um martelo?


2
C ++ é uma linguagem agradável, mas não é realmente para jogos serem honestos. Se você não deseja usar assembly, mas deseja algo como C ++, verifique o C. Para uma boa estrutura de C, consulte algo como libsdl.org . (ok ele não funciona muito bem porque C ++ é compatível, mas você começa o ponto)
Ricket

Lol não, eu não entendo o seu ponto. Honestamente, eu realmente não me importo com o que você está dizendo, então não se incomode em me responder. Eu só estou tentando ajudar alguém, não discutir sobre a legitimidade de uma linguagem de programação.
UnknownDevice

5
O argumento dele é que sua resposta original não teve absolutamente nenhuma substância com relação à pergunta feita. Você afirma que Ruby "não é realmente para jogos", mas é tudo o que você diz. Há pouco valor nisso. Quanto ao porquê da OP querer usar Ruby, é bem claro: "é a única linguagem que ele conhece muito bem". Isso não é o mesmo que "apenas porque é possível".
Neverender

@ Neverender, isso não é totalmente verdade. Ele argumentou que o Python simplesmente tem uma maior base de usuários e mais bibliotecas já concluídas para o desenvolvimento de jogos. Acredito que essas são observações legítimas a serem feitas ao dar conselhos a alguém que não tem experiência no desenvolvimento de jogos.
Zach Conn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.