Czy ruby ​​jest odpowiednim językiem do tworzenia gier? [Zamknięte]

33

Chcę zająć się tworzeniem gier, ale jedynym językiem, który znam naprawdę dobrze, jest Ruby. Większość tego, co przeczytałem, wydaje się wskazywać na języki niższego poziomu, takie jak C ++ do opracowywania gier, lub języki dla konkretnych platform, takich jak C # do używania XNA. Czy ktoś ma jakieś doświadczenie w używaniu języka takiego jak ruby ​​do tworzenia gier? Jeśli tak, czy doradziłbyś za czy przeciw?

bennybdbc
źródło

Odpowiedzi:

47

Nie mam preferencji w stosunku do Ruby (lub Python), sam jestem osobą Java. Ale frustracja mnie wywołała odpowiedź UnknownDevice o tym, jak Ruby jest „nie do gier”, a Python. Mam nadzieję, że to wyjaśni.

Wiem, że Pygame istnieje i istnieje, i zdaję sobie sprawę, że Python ma większą bazę użytkowników niż Ruby. Ale szczerze mówiąc, żadne z nich nie wydaje się językiem „do gier”. Podobnie jak Java, i to jest mój wybrany język programowania gier. (a kiedy mówię „z wyboru”, mam na myśli wybór , nie dlatego, że uczy się tego w szkole, albo dlatego, że „coś wiem”). A tak naprawdę, czym jest język „do gier”? Szybkość jest czynnikiem, i oczywiście musi mieć biblioteki dla grafiki i innych systemów gier (audio, wejścia itp.).

Jeśli chodzi o prędkość, wydaje się, że jest to sprzeczka między Ruby a Pythonem. Wykonaj kilka wyszukiwań, a szybko znajdziesz punkty odniesienia i argumenty dla obu stron spektrum oraz różne konfiguracje, które stawiają jedną lub drugą przed sobą. Python z czymś zwanym „Psycho” wydaje się być popularnym demonem prędkości w porównaniu do Ruby, ale zwykły Python wydaje się być nieco wolniejszy niż Ruby. W końcu, jeśli wybierzesz język wysokiego poziomu, oczywiście i tak nie interesujesz się natywnymi prędkościami; idź w języku, który znasz najlepiej. I oczywiście znasz Ruby najlepiej, więc zachęcam!

Innym czynnikiem jest to, czy technologia służy do tworzenia gier; czy może obsługiwać rysowanie na ekranie oraz zbieranie danych wejściowych i odtwarzanie dźwięku. Ruby może to wszystko zrobić. W rzeczywistości istnieje wiele opcji w tym zakresie. Na RubyForge znajduje się pakiet ruby-opengl , który zapewni obsługę Ruby w OpenGL (czy może być domyślnie dołączony?). Alternatywnie, Chingu zapewnia „błyskawiczną grafikę 2D z akceleracją OpenGL!” zgodnie z jego stroną główną; buduje dodatkowe funkcje na Gosu , których możesz użyć, jeśli Chingu jest dla ciebie za dużo. Lub grafiki 3D, jeśli nie chcesz używać ruby-opengl, wypróbuj G3DRuby , „bardzo czysty zestaw klas opakowań dla wielu bardziej zaawansowanych funkcji OpenGL”. Tam'Rubygame , o której nie mogę znaleźć wielu informacji, ale twierdzi, że jest „wieloplatformową biblioteką multimedialną” i biorąc pod uwagę nazwę, musi kłaść nacisk na tworzenie gier. Jeśli znasz popularną bibliotekę SDL dla C ++, istnieje Ruby / SDL lub RUDL , z których oba są opakowaniami Ruby w SDL. Lub jeśli wolisz nowszy, bardziej obiektowy SFML , jest on również dostępny dla Ruby!

Nie ma powodu, dla którego Ruby powinna być mniej językiem programowania gier niż Python; jeśli jest taki, naprawdę chciałbym go usłyszeć, abym mógł się z nim kłócić. Jeśli czujesz się najwygodniej w programowaniu w Ruby i znasz zalety i wady w porównaniu do innych popularnych języków, to z pewnością możesz rozwijać gry w Ruby!

Ricket
źródło
+1, ale powinieneś dodać coś o ograniczeniach użytkowania w niektórych językach na platformach zastrzeżonych, takich jak konsole ... (ograniczenia sprzętowe i zasady konstruktora) Jeśli gry domowej roboty są zrobione w celu szkolenia w celu znalezienia pracy w branży, to używanie Ruby do samej gry tak naprawdę nie pomoże po tej stronie. W przypadku gier komputerowych „dlaczego nie?”
Klaim
@Klaim Twierdzę, że staje się on mniej istotny i będę zainteresowany, aby poznać język używany dla konsol następnej generacji, a może później. Możliwe, że będą nadal rozwijane w C ++, ale osobiście uważam, że bardzo prawdopodobne jest, że przejdą na języki wyższego poziomu. Na przykład rozwój Androida jest w Javie; nie że Android jest w ogóle konsolą do gier. Ale być może język hybrydowy, taki jak Go, stanie się nowym popularnym językiem w pokoleniu konsolowym lub dwóch.
Ricket
1
Zgadzam się z tą zasadą i może Go lub D osiągną coś po tej stronie. Myślę jednak, że tylko język systemowy może być „standardowy” w tej branży. Mówię jednak o branży, a nie o niezależnej stronie domeny gier wideo. Myślę, że jeśli pójdziesz własną drogą (a nie pensją dużej firmy o ustalonej pozycji), masz szansę skorzystać z tego, co chcesz. Ale nadal musisz korzystać z narzędzi zadawanych przez konstruktorów, gdy chcesz zrobić coś na czymkolwiek innym niż konsola. Telefony używają Java, ale dużo C ++ jest używany w aplikacjach wymagających większej wydajności, na tych samych telefonach.
Klaim
W rzeczywistości uważam, że ponieważ branża gier wideo powoli przyjmuje nawet obecny standard C ++, istnieje duża szansa, że ​​będziesz musiał czekać wiele lat, zanim będziesz mieć coś innego niż C ++ na konsolach. Może nastąpić zmiana w sposobie działania konstruktorów i programistów, ale od dzisiaj nie jest to łatwe do wyobrażenia.
Klaim
Dodam tylko, że istnieje wiele rodzajów gier, w których maksymalna wydajność nie stanowi problemu. Oczywiście, tworząc nową Crysis, będziesz chciał wycisnąć z niej każdą klatkę, ale jest mnóstwo gier, w których nie musisz. Pracując nad takimi grami, możesz potrzebować także kilku innych języków (na przykład języki shaderów, takie jak Civilization 4 i 5, również polegają na językach skryptowych).
MartinTeeVarga
9

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

Adres URL jest prawdopodobnie trochę spoilerem.

tl; dr: naiwny śmieciarz to prawdziwy problem.

Neverender
źródło
Bardzo informujące! Czy ekspert Ruby może wypowiedzieć się na temat tego, czy nadal obowiązuje to dzisiaj? Artykuł pochodzi ze stycznia 2009 roku i nie byłbym zaskoczony, gdyby od tego czasu wiele się wydarzyło. edytuj Okay, właśnie znalazłem artykuł z 3 września 2010 r., który sugeruje, że rzeczywiście tak jest do dzisiaj, mówiąc: „Ruby śmieci nie był przeznaczony do uruchomienia” - ciekawe! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket
1
Śmieciarka Ruby jest mark-and-sweep, ale w przypadku cykli, podobnie jak Python i Lua (w rzeczywistości nad grą w Pythona, nad którą pracowałem, musieliśmy opóźnić GC z tego właśnie powodu). Nie przeprowadziłem testów porównawczych, ale być może Ruby jest po prostu powolny, a nie zasadniczo wolny. Nie uważam tego za niezwykle ważny powód, aby unikać Ruby, szczególnie jeśli mówisz o budowaniu gier całkowicie w Rubim, tak jak pytający. Po prostu wyłącz GC, aż do odpowiedniego czasu.
1
Minęło trochę czasu, odkąd został opublikowany, ale sprawdź ten interesujący artykuł. patshaughnessy.net/2012/3/23/... Chodzi o Garbage Collector w Ruby 2.0. Oto komentarz twórcy GC youtube.com/watch?v=4fIdEeM0Fyg Ten film, zanim pojawi się Ruby 2.0, prawdopodobnie będzie miał 1,5 - 2 lata, więc możliwe jest, że wprowadzono znacznie więcej ulepszeń wydajności i GC . To może sprawić, że Ruby będzie bardziej użyteczny w przypadku gier opartych na obiektach. Mam taką nadzieję! Wierzę, że Ruby 2.0 pojawi się w 2013 roku.
Michael van Rooijen
1
Istnieją również maszyny wirtualne inne niż MRI, które obsługują różne systemy usuwania śmieci, w tym nowy mruby od samego Matza, który zawiera przyrostowy system usuwania śmieci. Jak dotąd mruby jest doskonałym wyborem do gier. Działa nawet na iOS i Androidzie!
Stephen Belanger
5

Nie ma powodu, dla którego nie możesz. Tak długo, jak istnieje multimedialne wsparcie dla danego języka, to jest to materiał gamedev. Heck, duża część jednej z gier Rollercoaster Tycoon została wykonana ręcznie w ASM.

Kaczka komunistyczna
źródło
3
W pewnym sensie zaprzeczasz sobie. „ręczne kodowanie gry w asm” jest dokładnym przeciwieństwem „kodowania gry w ruby” lub innym naprawdę wysokim języku.
bobobobo
1

Chociaż nie jestem zaznajomiony z wieloma szczegółami dotyczącymi Ruby, Enterbrain stworzył programy do tworzenia gier RPG Maker VX i RPG Maker XP, które używają skryptów opartych na Ruby: http://www.rpgmakerweb.com/

To było właściwie moje pierwsze nurkowanie w tym języku. Jak większość ludzi powiedziała, prawdopodobnie nie uzyskasz wysokiej wydajności w innych językach, ale jeśli chcesz rozpocząć grę RPG 2D (lub inną grę 2D, naprawdę), jest to prawdopodobnie jeden z najbardziej wyrafinowanych edytorów gier Wsparcie.

Bimini Road
źródło
0

Ruby to fajny język, ale tak naprawdę nie jest to uczciwe. Jeśli nie chcesz używać C ++, ale chcesz czegoś takiego jak Ruby, sprawdź Python. Dla dobrego frameworku Python powinieneś sprawdzić coś takiego jak www.cocos2d.org/.

Nieznane urządzenie
źródło
3
... lub www.pygame.org
Ian Schreiber
6
To nonsens. Ruby jest nie mniej językiem „do gier” niż Python.
Ricket
2
... bzdury. Równie dobrze możesz powiedzieć, że Lua nie jest przeznaczona do gier.
Kornel Kisielewicz
2
Czy istnieje rubinowy odpowiednik gry? Nie powiedziałbym, że jeden język jest bardziej odpowiedni niż drugi. Ale rozsądne może być stwierdzenie, że Python ma lepsze biblioteki gier i społeczność gamedev.
deft_code,
Mam wrażenie, że jest rubinowy port SFML.
Kaczka komunistyczna
0

To zależy od rodzaju gry, którą chcesz napisać. Użyłem ruby ​​do pisania klientów AI w kilku grach, w tym w dyplomacji , pokerze i Lost Cities . Uważam, że jest to bardzo przyjazny język do szybkiego eksperymentowania z różnymi koncepcjami. Z drugiej strony nie chciałbym używać go do pisania mojej strzelanki w czasie rzeczywistym - po prostu nie będzie miał potrzebnej wydajności.

AShelly
źródło
0

Twoje pytanie jest zbyt ogólne. Czy chcesz po prostu napisać grę komputerową jako projekt hobby, czy chcesz zająć się tworzeniem niezależnych / profesjonalnych gier? Czy będzie miał grafikę? Na jakich platformach ma działać?

Ogólnie rzecz biorąc, Ruby nadaje się do projektów hobbystycznych (BTW moją ulubioną grą Ruby jest Ruby Warrior ) oraz do tworzenia gier internetowych, takich jak Farmville. Jest nawet pewne zapotrzebowanie na takich programistów, spróbuj wyszukać w Google coś w stylu: „gra społecznościowa dla programistów ruby”.

Z drugiej strony, jeśli chcesz tworzyć gry komputerowe lub mobilne z grafiką, Ruby nie jest najlepszą opcją. Rozważać:

  • Biblioteka JavaScript obsługująca Coffeescript (jego składnia jest bardzo podobna do Ruby)
  • Python - bardzo podobny do Ruby, lepsze biblioteki gier
Lukas Stejskal
źródło
0

Nie spodziewaj się pisać z Ruby wysoce wydajnych, profesjonalnych, komercyjnych gier 3D, ale Ruby to świetny język do nauki koncepcji tworzenia gier.

Gosu to najpopularniejsza (i aktywnie utrzymywana) biblioteka do pisania gier 2D w Rubim. Ma podstawową bibliotekę C ++, której używa do poprawy wydajności i interakcji z bazowymi bibliotekami wyświetlania, takimi jak OpenGL.

Jeśli chodzi o wydajność, „domyślna” implementacja Ruby (MRI) będzie działać dobrze (sugeruję najnowszą wersję Ruby 2.0 dla najlepszej wydajności), ale istnieją alternatywne implementacje, które mają natywne wątki i alternatywne algorytmy zbierania śmieci, takie jak Rubinius, JRuby itp. Jeśli korzystasz z wątków, możesz wypróbować Rubinius, w przeciwnym razie MRI Ruby będzie działać dobrze.

Andrzej
źródło
-2

Powiedziałem Python, ponieważ ma większą bazę użytkowników i większy wybór, jeśli chodzi o frameworki / biblioteki do tworzenia gier. To oczywiste, że ta osoba nie ma doświadczenia w tworzeniu gier, więc nie ma dla mnie sensu zalecanie używania czegoś takiego jak Ruby tylko dlatego, że jest to możliwe.

Kiedy pracuję nad grami, używam C ++ z Luą, nie zaczynam pisać swojej gry w języku Visual Basic tylko dlatego, że ma obsługę multimediów. Jestem pewien, że wszyscy tutaj słyszeli, że ktoś powiedział pewne narzędzia do określonych zadań. Jestem pewien, że możesz wbić gwóźdź butem, ale dlaczego miałbyś to zrobić, skoro możesz użyć młotka.

Nieznane urządzenie
źródło
2
C ++ to fajny język, ale tak naprawdę nie jest tak, żeby gry były szczere. Jeśli nie chcesz używać asemblera, ale chcesz coś takiego jak C ++, sprawdź C. Aby uzyskać dobry framework C, powinieneś sprawdzić coś takiego jak libsdl.org . (okej, to nie do końca działa, ponieważ C ++ jest wstecznie kompatybilny, ale masz
rację
Lol nie, nie rozumiem o co ci chodzi. Szczerze mówiąc, nie obchodzi mnie to, co mówisz, więc nie zawracaj mi głowy odpowiadaniem. Staram się tylko komuś pomóc, a nie kłócić się o legalność języka programowania.
Nieznane Urządzenie
5
Chodzi o to, że twoja pierwotna odpowiedź nie miała absolutnie żadnej treści w odniesieniu do zadanego pytania. Zapewniasz, że Ruby „tak naprawdę nie jest do gier”, ale to WSZYSTKO, co mówisz. Ma to niewielką wartość. Co do tego, dlaczego OP chce używać Ruby, jest całkiem jasne: „to jedyny język, który zna naprawdę dobrze”. To wcale nie to samo, co „tylko dlatego, że jest to możliwe”.
Neverender
@Neverender, to nie do końca prawda. Argumentował, że Python ma po prostu większą bazę użytkowników i więcej bibliotek już ukończonych do tworzenia gier. Uważam, że są to uzasadnione spostrzeżenia, które należy poczynić, udzielając porady komuś, kto nie ma doświadczenia w tworzeniu gier.
Zach Conn