Ruby, oyun geliştirme için uygun bir dil midir? [kapalı]


33

Bazı oyun geliştirmeye geçmek istiyorum, ama gerçekten iyi tanıdığım tek dil Ruby. Okuduklarımın çoğu oyun geliştirme için C ++ gibi alt seviyeli dilleri ya da XNA'yı kullanmak için C # gibi belirli çerçeveler için dilleri gösteriyor. Oyun geliştirme için yakut gibi bir dil kullanma tecrübesi olan var mı? Eğer öyleyse, bunun için mi yoksa karşı mı?

Yanıtlar:


47

Ruby (ya da Python) 'u tercih edemiyorum, kendim de Java insanıyım. Ancak UnknownDevice’in Ruby’nin bir şekilde “oyunlar için değil” ve Python’un ne olduğu konusundaki cevabı beni hayal kırıklığına uğrattı. Umarım netleşir.

Pygame'in var olduğunu ve etrafta olduğunu biliyorum ve Python'un Ruby'den daha büyük bir kullanıcı tabanına sahip olduğunu biliyorum. Ancak dürüst olmak gerekirse, ikisi de "oyunlar için" bir dil gibi gözükmüyor. Java da yok ve bu benim oyun programlama dilim. (I "seçim" derken ve ben ortalama yapmak seçimiyle o okulda veya 's bir şey "bilmek" çünkü öğretilen şey budur çünkü). Ve gerçekten, "oyunlar için" bir dil nedir? Eh, hız bir faktördür ve belli ki grafikler ve diğer oyun sistemleri (ses, giriş, vb.) İçin kütüphaneleri olmalıdır.

Hız ilerledikçe, Ruby ve Python arasında bir hızlanma görünüyor. Bazı aramaları yapın; hızlıca spektrumun her iki tarafı için kıyaslamaları ve argümanları ve birini veya diğerini öne koyan çeşitli konfigürasyonları bulacaksınız. "Psycho" adlı bir şeye sahip olan Python, Ruby ile karşılaştırıldığında popüler bir hızlı şeytan gibi görünüyor, ancak düzenli Python, Ruby'den biraz daha yavaş görünüyor. Sonunda, eğer böyle bir üst seviye dil seçiyorsanız, tabii ki yine de yerli hızlarla ilgilenmiyorsunuzdur; En iyi bildiğiniz dil ile gidin. Ve tabii ki Ruby'yi en iyi tanıyorsun, bu yüzden onu teşvik ediyorum!

Diğer faktör, teknolojinin oyun yaratmak için orada olup olmadığıdır; Ekrana çizmeyi ve giriş toplamayı ve ses çalmayı destekleyip desteklemediği. Ruby bunların hepsini yapabilir. Aslında bu konuda çok sayıda seçenek var. RubyForge'de Ruby'ye OpenGL desteği verecek bir ruby-opengl paketi var (ya da varsayılan olarak dahil edilebilir mi?). Alternatif olarak, Chingu "Yıldırım hızlı OpenGL hızlandırılmış 2D grafikler!" anasayfasına göre; Chingu sizin için çok fazlaysa kullanmayı tercih edebileceğiniz Gosu'nun üstüne ekstra özellikler geliştiriyor . Veya 3D grafikler için ruby-opengl kullanmak istemiyorsanız , "daha gelişmiş OpenGL özelliklerinin birçoğu için çok temiz bir sarıcı sınıfları kümesi" olan G3DRuby'yi deneyin . Orada'Hakkında çok fazla bilgi bulamadığım ama oyunun “platformlar arası multimedya kütüphanesi” olduğunu iddia ettiği ve adı verilen Rubygame , oyun geliştirmeye önem vermeli. C ++ için popüler SDL kitaplığına aşina iseniz , ikisi de SDL'nin Ruby sarmalayıcıları olan Ruby / SDL veya RUDL vardır. Veya daha yeni, nesne yönelimli SFML'yi tercih ederseniz, Ruby için de kullanılabilir!

Ruby'nin Python'dan daha az bir oyun programlama dili olması gerekmiyor; eğer bir tane varsa, gerçekten duymak isterim, böylece buna karşı tartışabilirim. Ruby'de en rahat programlamayı hissediyorsanız ve diğer popüler dillere kıyasla avantajların ve dezavantajların farkındaysanız, elbette ki Ruby'de kesinlikle oyun geliştirebilirsiniz!


+1 ancak bazı dillerde konsollar gibi tescilli platformlarda kullanım sınırlamaları hakkında bir şeyler eklemelisiniz ... (donanım ve kurucu politika kısıtlamaları) Ev yapımı oyunlar sektörde bir iş bulmak için eğitim için yapılmışsa, o zaman Oyunun kendisi için Ruby kullanmak bu tarafta pek yardımcı olmaz. Ancak masaüstü oyunları için "neden olmasın ???"
Klaim

@Klaim Daha az ilgi çekici hale geldiğini ve yeni nesil konsollar için veya belki de ondan sonraki dilleri tanımak için kullanacağımı savunacağım. C ++ ile geliştirilmeye devam edilmeleri muhtemeldir, ancak şahsen daha yüksek dillere doğru ilerlemelerinin muhtemel olduğuna inanıyorum. Android geliştirme, örneğin, Java; Bu Android hiç bir oyun konsolu değil. Fakat belki de Go gibi melez bir dil, bir veya iki konsol neslindeki yeni popüler dil haline gelecektir.
Ricket

1
Prensipte aynı fikirdeyim, belki de Go veya D bu tarafta bir şey başarabilir. Ancak bu sektörde sadece sistem dilinin "standart" olabileceğini düşünüyorum. Ancak, video oyun alanının bağımsız alanı hakkında değil sektör hakkında konuşuyorum. Bence kendi yoluna gidersen (kurulmuş bir şirketin maaşını değil) istediğini kullanma şansın olur. Ancak yine de, konsol dışında herhangi bir şey yapmak istediğinizde, inşaatçılar tarafından istenen araçları kullanmanız gerekir. Telefonlar Java kullanıyor, ancak aynı telefonlarda daha fazla performans gerektiren uygulamalarda çok C ++ kullanılıyor.
Klaim

Aslında, video oyunu endüstrisinin mevcut C ++ standardını bile benimsemesi yavaş olduğu için, konsollarda C ++ dışında herhangi bir şey yapmadan önce uzun yıllar beklemeniz gerekme ihtimalinin yüksek olduğunu düşünüyorum. İnşaatçılar ve geliştiricilerin çalışma şeklindeki bir değişim olabilir, ancak bugünden hayal etmek gerçekten kolay değil.
Klaim

Sadece maksimum performansın sorun olmadığı birçok oyun türü olduğunu eklerdim. Tabii ki, yeni Crysis yaparken, her kareyi ondan sıkmak isteyeceksiniz, ama mecbur kalmadığınız birçok oyun var. Ve bu tür oyunlar üzerinde çalışırken, birkaç başka dile de ihtiyacınız olabilir (örneğin, gölgelendirici diller, örneğin Civilisation 4 ve 5 gibi oyunlar da betik dillerine dayanmaktadır).
MartinTeeVarga

9

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

URL muhtemelen bir spoilerden bir parça.

tl; dr: saf çöp toplayıcı gerçek bir problemdir.


Çok bilgilendirici! Bir Ruby uzmanı, bugün hala uygulanabilir olup olmadığı konusunda yorum yapabilir mi? Makale Ocak 2009 tarihli ve o zamandan beri çok şey olsaydı şaşırmam. düzenleme Tamam, 3 Eylül 2010 tarihli ve "Ruby çöp toplayıcısının çalıştırılması gerekmediğini" söyleyen bir yazı buldum - ilginç! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
Ruby'nin çöp toplayıcısı dikkat çekici ve temiz, ancak döngülerde Python ve Lua da var (aslında üzerinde çalıştığım bir Python oyununda GC'yi geciktirmek zorunda kaldık). Ben ölçüt yapmadım, ama belki de Ruby'nin temelde yavaş olmaktan ziyade tesadüfen yavaştır. Bunu Ruby'den kaçınmak için oldukça zorlayıcı bir sebep olarak görmüyorum, özellikle de soru sormak gibi tamamen Ruby'de oyun oynamaktan bahsediyorsanız. GC'yi sadece uygun bir zamana kadar devre dışı bırakın.

1
Bu yayınlandığından bu yana bir süre geçti, ancak bu ilginç makaleye göz atın. patshaughnessy.net/2012/3/23/… Ruby 2.0'daki Çöp Toplayıcı hakkında. İşte GC oluşturucu tarafından bir açılış konuşması youtube.com/watch?v=4fIdEeM0Fyg Ruby 2.0 ortaya çıktığında bu video muhtemelen 1,5 - 2 yaşında olacak, bu nedenle daha fazla performans ve GC geliştirmesi yapılmış olabilir. . Bu, Ruby'yi daha fazla nesne ağır oyunlar için kullanmak daha uygun hale getirebilir. Kesinlikle öyle umuyorum! Ben Ruby 2.0 2013 yılında çıkan inanıyoruz
Michael van Rooijen

1
Ayrıca, Matz'ın kendisinden artan bir çöp toplama sistemi içeren yeni yosunlar da dahil olmak üzere, farklı çöp toplama sistemlerini destekleyen MRI dışındaki VM'ler de var. Şimdiye kadar, çalı oyunları için mükemmel bir seçim olacak şekilde şekilleniyor. İOS ve Android'de bile çalışıyor!
Stephen Belanger

5

Yapamaman için hiçbir sebep yok. Bir dil için çoklu ortam desteği olduğu sürece, o zaman gamedev materyalidir. Heck, Rollercoaster Tycoon oyunlarından birinin büyük bir kısmı ASM'de elle yapıldı.


3
Kendinle çelişiyorsun. "oyunu asm olarak kodlamak", "oyunu yakutla kodlamak" veya başka bir yüksek seviye dilin tam tersidir.
bobobobo

1

Ruby'yi çevreleyen çok sayıda çalışmayla tanışmadığım halde Enterbrain, Ruby tabanlı oyun komut dosyaları kullanan oyun yapım programları RPG Maker VX ve RPG Maker XP'yi yarattı: http://www.rpgmakerweb.com/

Bu aslında benim dileğim ilk dalışımdı. Çoğu insanın dediği gibi, muhtemelen diğer dillerin yüksek performansını elde edemezsiniz, ancak bir 2D RPG (ya da gerçekten başka bir 2D oyuna başlamak) arıyorsanız, muhtemelen en iyi oyun editörlerinden biri. yardım et.


0

Ruby güzel bir dildir, ancak oyunların dürüst olması gerçekten değildir. C ++ kullanmak istemiyor ancak Ruby gibi bir şey istiyorsanız Python'u inceleyin. İyi bir Python çerçevesi için www.cocos2d.org/ gibi bir şeye göz atmalısınız.


3
... veya www.pygame.org
Ian Schreiber

6
Bu saçmalık. Ruby, Python'dan "oyunlar için" bir dil değildir.
Ricket

2
... saçmalık. Lua'nın oyunlar için olmadığını söyleyebilirsin.
Kornel Kisielewicz

2
Pygame'e eşdeğer bir yakut var mı? Bir dilin diğerinden daha uygun olduğunu söyleyemem. Ancak python'un daha iyi oyun kütüphanelerine ve gamedev topluluğuna sahip olduğunu söylemek makul olabilir.
deft_code 5:10

Yakut için bir SFML portu olduğunu hissediyorum.
Komünist Ördek

0

Ne tür bir oyun yazmak istediğinize bağlıdır. Diplomasi , poker ve Kayıp Şehirler gibi çeşitli oyunlar için AI istemcileri yazmak için ruby ​​kullandım . Farklı kavramları hızlıca denemenin çok kolay bir dil olduğunu düşünüyorum. Diğer taraftan, gerçek zamanlı atıcımı yazmak için kullanmak istemem - ihtiyacım olan performansa sahip olmayacak.


0

Sorunuz çok genel. Sadece bir bilgisayar oyunu hobi olarak yazmak mı istiyorsunuz yoksa indie / profesyonel oyun gelişimine mi katılmak istiyorsunuz? Grafikleri olacak mı? Hangi platformlarda çalışması gerekiyor?

Genel olarak, Ruby hobi projeleri (BTW benim en sevdiğim Ruby oyunum Ruby Warrior ) ve Farmville gibi web tabanlı oyunların geliştirilmesi için uygundur. Bu tür programcılar için bile belirli bir talep var, "yakut programcı sosyal oyunu" gibi bir şey google deneyin.

Öte yandan, grafikli masaüstü veya mobil tabanlı oyunlar geliştirmek istiyorsanız, Ruby en iyi seçenek değildir. Düşünmek:

  • Coffeescript'i destekleyen Javascript kitaplığı (sözdizimi Ruby'ye çok benzer)
  • Python - Ruby'ye çok benzer, daha iyi oyun kütüphaneleri

0

Ruby ile yüksek performanslı, profesyonel, ticari, 3D oyunlar yazmayı beklemeyin, ancak Ruby oyun geliştirme kavramlarını öğrenirken kullanmak için mükemmel bir dildir.

Gosu , Ruby'de 2D oyunlar yazmak için en popüler (ve aktif olarak tutulan) kütüphanedir. Performansı artırmak ve OpenGL gibi altta yatan ekran görüntü oluşturma kitaplıklarıyla etkileşimde bulunmak için kullandığı temel bir C ++ kitaplığına sahiptir.

Performans ilerledikçe, "varsayılan" Ruby uygulaması (MRI) iyi çalışır (en iyi performans için en son Ruby 2.0'ı öneririm), ancak yerel iş parçacıkları ve Rubinius, JRuby, vb. Gibi alternatif çöp toplama algoritmaları olan alternatif uygulamalar vardır. Eğer konudan faydalanıyorsanız Rubinius'u denemek isteyebilirsiniz, aksi takdirde MRI Ruby gayet iyi çalışır.


-2

Python dedim, çünkü oyun geliştirme için çerçeveler / kütüphaneler söz konusu olduğunda daha büyük bir kullanıcı tabanı ve daha fazla seçeneğe sahip. Bu kişinin oyun geliştirme konusunda hiçbir tecrübesi olmadığı oldukça açık, bu yüzden mümkün olduğu için Ruby gibi bir şey kullanmasını önermek bana mantıklı gelmiyor.

Oyunlar üzerinde çalışırken, Lua ile birlikte C ++ kullanıyorum, oyunumu Visual Media'ya yazdım çünkü medya desteği var. Eminim buradaki herkes birilerinin belirli işler için belirli araçlar söylediğini duymuştur. Eminim ayakkabılı bir çiviyi çakabilirsin, ama çekiç kullandığında neden bunu yaptın?


2
C ++ güzel bir dildir, ancak oyunların dürüst olması için pek uygun değildir. Eğer derleme kullanmak istemiyor ancak C ++ gibi bir şey istiyorsanız C'ye göz atın . İyi bir C çerçevesi için libsdl.org gibi bir şeye göz atmalısınız . (Tamam, pek işe yaramadı çünkü C ++ geriye uyumludur, ancak puan alıyorsunuz)
Ricket

Lol hayır, amacını anlamadım. Açıkçası ne söylediğin umrumda değil, o yüzden bana cevap verme. Sadece birisine yardım etmeye çalışıyorum, bir programlama dilinin meşruiyeti hakkında tartışmıyorum.
UnknownDevice

5
Onun amacı, asıl cevabınızın, sorulan soru ile ilgili kesinlikle hiçbir önemi olmadığı yönündedir. Ruby'nin "oyunlar için değil" olduğunu iddia ediyorsun, ama TÜM söylediğin bu. Bunda çok az değer var. OP'nin Ruby'yi neden kullanmak istediğine gelince, çok açık: "gerçekten iyi tanıdığı tek dil". Bu kesinlikle "sadece mümkün olduğu için" ile aynı değil.
Neverender

@Neverender, bu tamamen doğru değil. Python'un daha büyük bir kullanıcı temeli ve oyun geliştirme için hali hazırda daha fazla kütüphaneye sahip olduğu tartışmasını yaptı. Bunların oyun geliştirme konusunda tecrübesi olmayan birine tavsiye verirken yapılması gereken meşru gözlemler olduğuna inanıyorum.
Zach Conn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.