Ruby è un linguaggio adatto allo sviluppo di giochi? [chiuso]


33

Voglio passare allo sviluppo di un gioco, ma l'unica lingua che conosco davvero bene è Ruby. La maggior parte di ciò che ho letto sembra indicare linguaggi di livello inferiore come C ++ per lo sviluppo di giochi o linguaggi per framework specifici come C # per l'utilizzo di XNA. Qualcuno ha esperienza nell'uso di un linguaggio come ruby ​​per lo sviluppo di giochi? In tal caso, consiglieresti a favore o contro?

Risposte:


47

Non ho preferenze nei confronti di Ruby (o Python), sono anch'io una persona Java. Ma la risposta di UnknownDevice su come Ruby è in qualche modo "non proprio per i giochi" e Python è, mi ha frustrato. Spero che chiarirà.

So che Pygame esiste ed è stato in giro, e riconosco che Python ha una base di utenti più grande di Ruby. Ma ad essere onesti, nessuno dei due sembra un linguaggio "per i giochi". Nemmeno Java, e questo è il mio linguaggio di programmazione di gioco preferito. (e quando dico "di scelta", intendo per scelta , non perché è ciò che viene insegnato a scuola o perché è qualcosa che "conosco"). E davvero, che cos'è una lingua "per i giochi"? Bene, la velocità è un fattore, e ovviamente deve avere librerie per la grafica e altri sistemi di gioco (audio, input, ecc.).

Per quanto riguarda la velocità, sembra essere un gioco da ragazzi tra Ruby e Python. Fai alcune ricerche e troverai rapidamente benchmark e argomenti per entrambi i lati dello spettro e varie configurazioni che portano avanti l'uno o l'altro. Python con qualcosa chiamato "Psycho" sembra un popolare demone della velocità rispetto a Ruby, ma Python normale sembra essere un po 'più lento di Ruby. Alla fine, se scegli una lingua di così alto livello, ovviamente non ti preoccupi delle velocità native; scegli la lingua che conosci meglio. E ovviamente conosci meglio Ruby, quindi lo incoraggio!

L'altro fattore è se la tecnologia è lì per creare giochi; se può supportare il disegno sullo schermo e la raccolta di input e la riproduzione di audio. Ruby può fare tutto questo. In effetti ci sono un buon numero di opzioni in questo senso. C'è un pacchetto ruby-opengl su RubyForge che fornirà supporto OpenGL a Ruby (o potrebbe essere incluso di default?). In alternativa, Chingu fornisce "grafica 2D accelerata OpenGL velocissima!" secondo la sua homepage; costruisce funzionalità extra in cima a Gosu , che potresti scegliere di usare se Chingu è troppo per te. O per la grafica 3D, se non vuoi usare ruby-opengl, prova G3DRuby , "un insieme molto pulito di classi wrapper per molte delle funzionalità OpenGL più avanzate". Là'Rubygame , di cui non riesco a trovare molte informazioni ma che afferma di essere "una libreria multimediale multipiattaforma" e che ha il nome, deve porre l'accento sullo sviluppo del gioco. Se hai familiarità con la popolare libreria SDL per C ++, c'è Ruby / SDL o RUDL , entrambi i wrapper Ruby di SDL. O se preferisci il più recente, più orientato agli oggetti SFML , è disponibile anche per Ruby!

Non c'è ragione per cui Ruby dovrebbe essere meno un linguaggio di programmazione del gioco di Python; se ce n'è uno, mi piacerebbe davvero ascoltarlo in modo da poter litigare. Se ti senti più a tuo agio con la programmazione in Ruby e sei a conoscenza dei pro e dei contro rispetto ad altre lingue popolari, allora puoi sicuramente sviluppare giochi in Ruby!


+1 ma dovresti aggiungere qualcosa sui limiti di utilizzo in alcune lingue su piattaforme proprietarie come le console ... (limitazioni di hardware e criteri del costruttore) Se i giochi fatti in casa sono fatti per l'addestramento per ottenere un lavoro nel settore, allora usare Ruby per il gioco in sé non è di grande aiuto da questo lato. Per i giochi desktop, tuttavia, "why not ???"
Klaim,

@Klaim Direi che sta diventando meno rilevante, e sarò interessato a conoscere il linguaggio usato per le console della prossima generazione o forse quello successivo. È possibile che continueranno a essere sviluppati con C ++, ma personalmente ritengo altamente probabile che progrediranno verso linguaggi di livello superiore. Lo sviluppo Android, ad esempio, è in Java; Android non è affatto una console di gioco. Ma forse un linguaggio ibrido come Go diventerà il nuovo linguaggio popolare in una o due generazioni di console.
Ricket,

1
Sono d'accordo sul principio e forse Go o D ottengono qualcosa da questo lato. Ma penso che solo il linguaggio di sistema possa essere "standard" in questo settore. Tuttavia, sto parlando del settore, non del lato indipendente del dominio dei videogiochi. Penso che se vai per la tua strada (non uno stipendio di una grande azienda affermata) allora hai la possibilità di usare quello che vuoi. Ma devi ancora usare gli strumenti richiesti dai costruttori quando vuoi fare qualcosa di diverso dalla console. I telefoni usano Java ma molto C ++ viene utilizzato su più applicazioni che richiedono prestazioni, su quegli stessi telefoni.
Klaim

In effetti, penso che poiché l'industria dei videogiochi è lenta nell'adottare anche l'attuale C ++ standard, ci sono buone possibilità che dovrai aspettare molti anni prima di avere qualsiasi cosa diversa dal C ++ sulle console. Potrebbe verificarsi un cambiamento nel modo in cui i costruttori e gli sviluppatori lavorano, ma non è facile immaginarlo da oggi.
Klaim,

Aggiungo solo che ci sono molti tipi di giochi in cui le massime prestazioni non sono un problema. Ovviamente, mentre crei il nuovo Crysis, vorrai comprimere ogni singolo fotogramma da esso, ma ci sono molti giochi in cui non devi farlo. E lavorando su tali giochi, potresti aver bisogno anche di poche altre lingue (ad esempio le lingue shader, giochi come Civilization 4 e 5 si basano anche sui linguaggi di scripting).
MartinTeeVarga,

9

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

L'URL è probabilmente un po 'uno spoiler.

tl; dr: l'ingenuo garbage collector è un vero problema.


Molto informativo! Può un esperto di Ruby commentare se questo è ancora applicabile oggi? L'articolo è datato gennaio 2009 e non sarei sorpreso se da allora sono successe molte cose. modifica Okay, ho appena trovato un articolo del 3 settembre 2010 che suggerisce che in effetti è ancora così oggi, dicendo "il cestino della spazzatura di Ruby non doveva funzionare" - interessante! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
Il garbage collector di Ruby è mark-and-sweep, ma nel caso dei cicli, lo sono anche Python e Lua (in effetti su un gioco Python su cui ho lavorato abbiamo dovuto ritardare GC proprio per questo motivo). Non ho fatto benchmark, ma forse Ruby è solo per inciso lento piuttosto che fondamentalmente lento. Non lo vedo come una ragione estremamente convincente per evitare Ruby, specialmente se stai parlando di costruire giochi interamente in Ruby come l'interrogante. Disabilita GC fino al momento opportuno.

1
È passato un po 'di tempo da quando questo è stato pubblicato, ma dai un'occhiata a questo interessante articolo. patshaughnessy.net/2012/3/23/… Riguarda il Garbage Collector in Ruby 2.0. Ecco un keynote del costruttore GC youtube.com/watch?v=4fIdEeM0Fyg Questo video, quando uscirà Ruby 2.0, probabilmente avrà 1,5 - 2 anni, quindi è possibile che siano stati apportati molti più miglioramenti alle prestazioni e al GC . Ciò potrebbe rendere Ruby più praticabile da utilizzare per giochi più pesanti. Lo spero sicuramente! Credo che Ruby 2.0 uscirà nel 2013.
Michael van Rooijen,

1
Ci sono anche VM diverse dalla risonanza magnetica che supportano diversi sistemi di garbage collection, incluso il nuovo mruby dello stesso Matz che include un sistema di garbage collection incrementale. Finora, mruby si preannuncia come un'ottima scelta per i giochi. Funziona anche su iOS e Android!
Stephen Belanger,

5

Non c'è motivo per cui non puoi. Finché c'è il supporto multimediale per una lingua, allora è materiale gamedev. Diamine, gran parte di uno dei giochi di Rollercoaster Tycoon è stato fatto a mano in ASM.


3
Ti stai contraddicendo. "codificare il gioco a mano in asm" è l'esatto contrario di "codificare il gioco in ruby" o qualche altro linguaggio di alto livello.
Bobobobo,

1

Anche se non ho molta familiarità con il lavoro approfondito sulle specifiche di Ruby, Enterbrain ha creato i programmi di creazione di giochi RPG Maker VX e RPG Maker XP che utilizzano script di gioco basati su Ruby: http://www.rpgmakerweb.com/

Questa è stata in realtà la mia prima immersione nella lingua. Come molte persone hanno detto, probabilmente non otterrai le alte prestazioni di altre lingue, ma se stai cercando di avviare un gioco di ruolo 2D (o un altro gioco 2D, in realtà), è probabilmente uno dei più sofisticati editor di giochi là fuori per Aiuto.


0

Ruby è un bel linguaggio, ma non è vero che i giochi siano onesti. Se non vuoi usare C ++ ma vuoi qualcosa come Ruby dai un'occhiata a Python. Per un buon framework Python dovresti dare un'occhiata a qualcosa come www.cocos2d.org/.


3
... o www.pygame.org
Ian Schreiber,

6
Questo non ha senso. Ruby non è altro che un linguaggio "per giochi" di Python.
Ricket,

2
... senza senso. Potresti anche dire che Lua non è per i giochi.
Kornel Kisielewicz,

2
Esiste un rubino equivalente a Pygame? Non direi che una lingua sia più adatta dell'altra. Ma potrebbe essere ragionevole affermare che Python ha librerie di giochi e community di gioco migliori.
deft_code

Ho la sensazione che ci sia una porta SFML in ruby.
Il comunista Duck il

0

Dipende dal tipo di gioco che ti interessa scrivere. Ho usato ruby ​​per scrivere client AI per diversi giochi, tra cui Diplomacy , poker e Lost Cities . Trovo che sia un linguaggio molto amichevole per sperimentare rapidamente concetti diversi. D'altra parte, non vorrei usarlo per scrivere il mio sparatutto in tempo reale - semplicemente non avrà le prestazioni di cui ho bisogno.


0

La tua domanda è troppo generica. Vuoi scrivere qualche gioco per computer come un progetto hobby o vuoi entrare nello sviluppo di giochi indipendenti / professionali? Avrà grafica? Su quali piattaforme dovrebbe funzionare?

In generale, Ruby è adatto a progetti per hobby (a proposito il mio gioco Ruby preferito è Ruby Warrior ) e per lo sviluppo di giochi basati sul web come Farmville. C'è persino una certa richiesta per tali programmatori, prova a google qualcosa del tipo: "gioco social programmatore ruby".

D'altra parte, se si desidera sviluppare giochi basati su desktop o mobile con grafica, Ruby non è l'opzione migliore. Ritenere:

  • Libreria Javascript che supporta Coffeescript (la sua sintassi è molto simile a Ruby)
  • Python - molto simile a Ruby, librerie di giochi migliori

0

Non aspettarti di scrivere giochi 3D altamente performanti, professionali, commerciali, con Ruby, ma Ruby è un ottimo linguaggio da usare quando apprendi i concetti di sviluppo del gioco.

Gosu è la libreria più popolare (e mantenuta attivamente) per la scrittura di giochi 2D in Ruby. Ha una libreria C ++ sottostante che utilizza per migliorare le prestazioni e interagire con le librerie di rendering dello schermo sottostanti come OpenGL.

Per quanto riguarda le prestazioni, l'implementazione "predefinita" di Ruby (MRI) funzionerà bene (suggerisco l'ultima Ruby 2.0 per le migliori prestazioni) ma ci sono implementazioni alternative che hanno thread nativi e algoritmi di garbage collection alternativi come Rubinius, JRuby, ecc. Se stai usando i thread, potresti provare Rubinius, altrimenti MRI Ruby funzionerà bene.


-2

Ho detto Python perché ha una base di utenti più ampia e più scelte quando si tratta di framework / librerie per lo sviluppo di giochi. È abbastanza ovvio che questa persona non ha esperienza nello sviluppo di giochi, quindi non ha senso raccomandarmi di usare qualcosa come Ruby solo perché è possibile.

Quando lavoro sui giochi uso C ++ con Lua, non esco e scrivo il mio gioco in Visual Basic solo perché ha il supporto multimediale. Sono sicuro che tutti qui hanno sentito qualcuno dire alcuni strumenti per determinati lavori. Sono sicuro che puoi martellare un chiodo con una scarpa, ma perché dovresti farlo quando puoi usare un martello.


2
Il C ++ è un bel linguaggio, ma non è davvero vero che i giochi siano onesti. Se non vuoi usare assembly ma vuoi qualcosa come C ++, controlla C. Per un buon framework C dovresti dare un'occhiata a libsdl.org . (okay non funziona del tutto perché il C ++ è retrocompatibile ma ottieni il punto)
Ricket

Lol no, non capisco il tuo punto. Onestamente non mi interessa davvero quello che stai dicendo, quindi non preoccuparti di rispondermi. Sto solo cercando di aiutare qualcuno, non discutere della legittimità di un linguaggio di programmazione.
UnknownDevice,

5
Il punto è che la tua risposta originale non aveva assolutamente alcuna sostanza riguardo alla domanda posta. Affermi che Ruby "non è proprio per i giochi", ma è TUTTO ciò che dici. C'è poco valore in questo. Per quanto riguarda il motivo per cui OP vorrebbe usare Ruby, è abbastanza chiaro: è "l'unica lingua che conosce davvero bene". Non è affatto lo stesso di "solo perché è possibile".
Neverender,

@Neverender, non è del tutto vero. Ha sostenuto che Python ha semplicemente una base utenti più grande e più librerie già completate per lo sviluppo del gioco. Credo che queste siano osservazioni legittime da fare quando si danno consigli a qualcuno che non ha esperienza nello sviluppo del gioco.
Zach Conn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.