Apakah ruby ​​bahasa yang cocok untuk pengembangan game? [Tutup]

33

Saya ingin pindah ke beberapa pengembangan game, tetapi satu-satunya bahasa yang saya tahu benar adalah Ruby. Sebagian besar dari apa yang saya baca tampaknya mengarah ke bahasa tingkat yang lebih rendah seperti C ++ untuk pengembangan game, atau bahasa untuk kerangka kerja tertentu seperti C # untuk menggunakan XNA. Adakah yang punya pengalaman menggunakan bahasa seperti ruby ​​untuk pengembangan game? Jika demikian, apakah Anda akan menyarankan atau menentangnya?

bennybdbc
sumber

Jawaban:

47

Saya tidak punya preferensi terhadap Ruby (atau Python), saya sendiri orang Jawa. Tapi jawaban UnknownDevice tentang bagaimana Ruby entah bagaimana "tidak benar-benar untuk game" dan Python, membuat saya frustrasi. Saya berharap dia akan mengklarifikasi.

Saya tahu Pygame ada dan telah ada, dan saya menyadari bahwa Python memiliki basis pengguna yang lebih besar daripada Ruby. Tapi jujur ​​saja, tak satu pun dari mereka yang tampak seperti bahasa "untuk game". Java juga tidak, dan itu bahasa pemrograman game pilihan saya. (dan ketika saya mengatakan "pilihan", saya maksudkan dengan pilihan , bukan karena itu yang diajarkan di sekolah atau karena itu adalah sesuatu yang saya "tahu"). Dan sungguh, apa bahasa "untuk game"? Nah, kecepatan adalah faktor, dan jelas itu harus memiliki perpustakaan untuk grafik dan sistem permainan lainnya (audio, input, dll).

Sejauh kecepatan berjalan, tampaknya menjadi pertarungan antara Ruby dan Python. Lakukan beberapa pencarian dan Anda akan dengan cepat menemukan tolok ukur dan argumen untuk kedua sisi spektrum, dan berbagai konfigurasi yang menempatkan satu atau yang lain di depan. Python dengan sesuatu yang disebut "Psycho" tampaknya merupakan demon speed yang populer dibandingkan dengan Ruby, namun Python biasa tampaknya sedikit lebih lambat daripada Ruby. Pada akhirnya, jika Anda memilih bahasa tingkat tinggi seperti itu, Anda jelas tidak peduli dengan kecepatan asli; ikuti bahasa yang paling Anda ketahui. Dan jelas Anda tahu Ruby terbaik, jadi saya mendorongnya!

Faktor lainnya adalah apakah teknologi itu ada untuk membuat game; apakah itu dapat mendukung menggambar ke layar dan mengumpulkan input dan memutar audio. Ruby dapat melakukan semua ini. Sebenarnya ada sejumlah opsi yang baik dalam hal ini. Ada paket ruby-opengl di RubyForge yang akan memberikan dukungan OpenGL ke Ruby (atau mungkin disertakan secara default?). Atau, Chingu menyediakan "grafis 2D 2D yang dipercepat OpenGL cepat!" sesuai dengan berandanya; itu membangun fitur tambahan di atas Gosu , yang dapat Anda pilih untuk digunakan jika Chingu terlalu banyak untuk Anda. Atau untuk grafik 3D, jika Anda tidak ingin menggunakan ruby-opengl, coba G3DRuby , "satu set kelas pembungkus yang sangat bersih untuk banyak fitur OpenGL yang lebih canggih". Sana'Rubygame , yang saya tidak dapat menemukan banyak informasi tentang tetapi mengklaim sebagai "perpustakaan multimedia lintas platform" dan diberi nama, harus memiliki penekanan pada pengembangan game. Jika Anda terbiasa dengan pustaka SDL populer untuk C ++, ada Ruby / SDL atau RUDL , keduanya merupakan pembungkus Ruby dari SDL. Atau jika Anda lebih suka yang lebih baru, lebih berorientasi objek SFML , juga tersedia untuk Ruby!

Tidak ada alasan bahwa Ruby seharusnya kurang dari bahasa pemrograman game daripada Python; jika ada, saya benar-benar ingin mendengarnya sehingga saya bisa membantahnya. Jika Anda merasa pemrograman paling nyaman di Ruby, dan Anda mengetahui pro dan kontra dibandingkan dengan bahasa populer lainnya, maka tentu saja Anda dapat mengembangkan game di Ruby!

Ricket
sumber
+1 tetapi Anda harus menambahkan sesuatu tentang batasan penggunaan pada beberapa bahasa pada platform berpemilik seperti konsol ... (batasan perangkat keras dan konstruktor-kebijakan) Jika game buatan sendiri dilakukan untuk pelatihan untuk mendapatkan pekerjaan di industri, maka menggunakan Ruby untuk permainan itu sendiri tidak akan membantu di sisi ini. Namun untuk game desktop, "mengapa tidak ???"
Klaim
@Klaim Saya berpendapat bahwa ini menjadi kurang relevan, dan saya akan tertarik untuk mengetahui bahasa yang digunakan untuk konsol generasi berikutnya atau mungkin yang berikutnya. Mungkin saja mereka akan terus dikembangkan dengan C ++, tapi saya pribadi percaya sangat mungkin bahwa mereka akan maju ke bahasa tingkat yang lebih tinggi. Pengembangan Android, misalnya, ada di Jawa; bukan berarti Android adalah konsol game sama sekali. Tapi mungkin bahasa hybrid seperti Go akan naik menjadi bahasa populer baru di satu atau dua generasi konsol.
Ricket
1
Saya setuju pada prinsipnya, dan mungkin Go atau D mencapai sesuatu di sisi ini. Tapi saya pikir hanya bahasa sistem yang bisa menjadi "standar" di industri ini. Namun, saya berbicara tentang industri, bukan sisi indie dari domain video-game. Saya pikir jika Anda menempuh jalan Anda sendiri (bukan gaji perusahaan besar yang didirikan) maka Anda memiliki kesempatan untuk menggunakan apa pun yang Anda inginkan. Tetapi Anda masih perlu menggunakan alat yang diminta oleh konstruktor ketika Anda ingin melakukan sesuatu pada apa pun selain konsol. Ponsel menggunakan Java tetapi banyak C ++ digunakan pada aplikasi yang lebih membutuhkan kinerja, pada ponsel yang sama.
Klaim
Sebenarnya saya berpikir bahwa karena industri video-game lambat untuk mengadopsi bahkan standar C ++ saat ini, ada peluang bagus bahwa Anda harus menunggu bertahun-tahun sebelum memiliki sesuatu selain C ++ pada konsol. Pergeseran cara kerja konstruktor dan pengembang mungkin terjadi tetapi tidak terlalu mudah untuk dibayangkan mulai hari ini.
Klaim
Saya hanya ingin menambahkan bahwa ada banyak jenis permainan di mana kinerja maksimum tidak menjadi masalah. Tentu saja, sambil membuat Crysis baru Anda akan ingin memeras setiap frame dari itu, tetapi ada banyak permainan di mana Anda tidak perlu melakukannya. Dan untuk mengerjakan gim-gim tersebut, Anda mungkin memerlukan beberapa bahasa lain juga (bahasa shader misalnya, gim seperti Civilization 4 & 5 juga mengandalkan bahasa scripting).
MartinTeeVarga
9

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

URL mungkin sedikit spoiler.

tl; dr: pengumpul sampah yang naif adalah masalah nyata.

Neverender
sumber
Sangat informatif! Bisakah pakar Ruby berkomentar apakah ini masih berlaku hari ini? Artikel bertanggal Januari 2009 dan saya tidak akan terkejut jika banyak terjadi sejak itu. sunting Oke, saya baru saja menemukan sebuah artikel bertanggal 3 September 2010 yang mengisyaratkan bahwa memang inilah yang masih terjadi hari ini, dengan mengatakan "pengumpul sampah Ruby tidak dimaksudkan untuk dijalankan" - menarik! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket
1
Pengumpul sampah Ruby adalah tanda-dan-sapuan, tetapi dalam hal siklus, begitu juga Python dan Lua (sebenarnya pada permainan Python yang saya kerjakan, kami harus menunda GC karena alasan itu). Saya belum melakukan tolok ukur, tetapi mungkin Ruby hanya kebetulan lambat daripada lambat secara fundamental. Saya tidak melihat itu sebagai alasan yang sangat kuat untuk menghindari Ruby, terutama jika Anda berbicara tentang membangun game sepenuhnya di Ruby sebagaimana si penanya. Cukup nonaktifkan GC sampai waktu yang tepat.
1
Sudah lama sejak ini diposting, tetapi lihat artikel yang menarik ini. patshaughnessy.net/2012/3/23/... Ini tentang Pengumpul Sampah di Ruby 2.0. Berikut ini adalah keynote oleh pembuat GC youtube.com/watch?v=4fIdEeM0Fyg Video ini, pada saat Ruby 2.0 keluar, mungkin akan berusia 1,5 - 2 tahun, jadi ada kemungkinan bahwa lebih banyak kinerja dan peningkatan GC telah dibuat . Ini mungkin membuat Ruby lebih layak digunakan untuk lebih banyak game berat objek. Saya tentu berharap begitu! Saya percaya Ruby 2.0 keluar pada 2013.
Michael van Rooijen
1
Ada juga VM selain MRI yang mendukung sistem pengumpulan sampah yang berbeda, termasuk mruby baru dari Matz sendiri yang mencakup sistem pengumpulan sampah tambahan. Sejauh ini, mruby sedang bersiap untuk menjadi pilihan yang bagus untuk gim. Ia bahkan bekerja di iOS dan Android!
Stephen Belanger
5

Tidak ada alasan mengapa Anda tidak bisa. Selama ada dukungan multimedia untuk suatu bahasa, maka itu bahan gamedev. Heck, sebagian besar dari salah satu permainan Rollercoaster Tycoon dilakukan dengan tangan di ASM.

Bebek Komunis
sumber
3
Anda agak menentang diri sendiri. "handcoding the game in asm" adalah kebalikan dari "coding the game in ruby" atau bahasa tingkat tinggi lainnya.
bobobobo
1

Meskipun saya tidak terbiasa dengan banyak pekerjaan spesifikasi mendalam seputar Ruby, Enterbrain menciptakan program pembuatan game RPG Maker VX dan RPG Maker XP yang menggunakan skrip game berbasis Ruby: http://www.rpgmakerweb.com/

Ini sebenarnya adalah penyelaman pertama saya ke dalam bahasa ini. Seperti yang dikatakan kebanyakan orang, Anda mungkin tidak akan mendapatkan kinerja tinggi dari bahasa lain, tetapi jika Anda ingin memulai RPG 2D (atau game 2D lainnya, sebenarnya), itu mungkin salah satu editor game paling canggih di luar sana untuk membantu.

Jalan Bimini
sumber
0

Ruby adalah bahasa yang baik, tapi jujur ​​itu bukan untuk game. Jika Anda tidak ingin menggunakan C ++ tetapi ingin sesuatu seperti Ruby, periksa Python. Untuk kerangka kerja Python yang bagus, Anda harus memeriksa sesuatu seperti www.cocos2d.org/.

Perangkat Tidak Dikenal
sumber
3
... or www.pygame.org
Ian Schreiber
6
Ini tidak masuk akal. Ruby tidak kurang dari bahasa "untuk game" dari Python.
Ricket
2
... omong kosong. Anda mungkin juga mengatakan bahwa Lua bukan untuk permainan.
Kornel Kisielewicz
2
Apakah ada ruby ​​yang setara dengan pygame? Saya tidak akan mengatakan satu bahasa lebih cocok daripada yang lain. Tetapi mungkin masuk akal untuk mengatakan bahwa python memiliki perpustakaan permainan dan komunitas gamedev yang lebih baik.
deft_code
Saya merasa ada port SFML untuk ruby.
The Communist Duck
0

Tergantung jenis permainan yang Anda minati. Saya telah menggunakan ruby ​​untuk menulis klien AI untuk beberapa permainan, termasuk Diplomasi , poker, dan Kota Hilang . Saya menemukan itu bahasa yang sangat ramah untuk bereksperimen dengan cepat dengan konsep yang berbeda. Di sisi lain, saya tidak ingin menggunakannya untuk menulis penembak waktu nyata - hanya saja tidak akan memiliki kinerja yang saya butuhkan.

ASHelly
sumber
0

Pertanyaan Anda terlalu umum. Apakah Anda hanya ingin menulis beberapa game komputer sebagai proyek hobi atau apakah Anda ingin masuk ke pengembangan game indie / profesional? Apakah akan memiliki grafik? Di platform mana ia seharusnya dijalankan?

Secara umum, Ruby cocok untuk proyek hobi (BTW game Ruby favorit saya adalah Ruby Warrior ) dan untuk pengembangan game berbasis web seperti Farmville. Bahkan ada permintaan tertentu untuk programmer seperti itu, cobalah untuk google sesuatu seperti: "game sosial programmer ruby".

Di sisi lain, jika Anda ingin mengembangkan game berbasis desktop atau mobile dengan grafis, Ruby bukanlah pilihan terbaik. Mempertimbangkan:

  • Pustaka Javascript yang mendukung Coffeescript (sintaksnya sangat mirip dengan Ruby)
  • Python - sangat mirip dengan Ruby, pustaka game yang lebih baik
Lukas Stejskal
sumber
0

Jangan berharap untuk menulis game 3D yang berkinerja tinggi, profesional, komersial, dengan Ruby, tetapi Ruby adalah bahasa yang hebat untuk digunakan saat mempelajari konsep pengembangan game.

Gosu adalah perpustakaan yang paling populer (dan dipelihara secara aktif) untuk menulis game 2D di Ruby. Ini memiliki pustaka C ++ yang mendasarinya yang digunakan untuk meningkatkan kinerja dan berinteraksi dengan pustaka rendering tampilan yang mendasari seperti OpenGL.

Sejauh kinerja berjalan, implementasi Ruby "default" (MRI) akan berfungsi dengan baik (saya sarankan Ruby 2.0 terbaru untuk kinerja terbaik) tetapi ada implementasi alternatif yang memiliki thread asli dan algoritma pengumpulan sampah alternatif seperti Rubinius, JRuby, dll. Jika Anda menggunakan utas, Anda mungkin ingin mencoba Rubinius, jika tidak, MRI Ruby akan berfungsi dengan baik.

Andrew
sumber
-2

Saya mengatakan Python karena memiliki basis pengguna yang lebih besar dan lebih banyak pilihan ketika datang ke kerangka kerja / perpustakaan untuk pengembangan game. Cukup jelas bahwa orang ini tidak memiliki pengalaman dalam pengembangan game sehingga tidak masuk akal bagi saya untuk merekomendasikan bahwa mereka menggunakan sesuatu seperti Ruby hanya karena itu mungkin.

Ketika saya mengerjakan game yang saya gunakan C ++ dengan Lua, saya tidak pergi dan menulis game saya di Visual Basic hanya karena memiliki dukungan media. Saya yakin semua orang di sini telah mendengar seseorang mengatakan alat tertentu untuk pekerjaan tertentu. Saya yakin Anda dapat memalu paku dengan sepatu, tetapi mengapa Anda melakukan itu ketika Anda bisa menggunakan palu.

Perangkat Tidak Dikenal
sumber
2
C ++ adalah bahasa yang bagus, tapi itu tidak benar-benar untuk game jujur. Jika Anda tidak ingin menggunakan perakitan tetapi ingin sesuatu seperti C ++ periksa C. Untuk kerangka C yang baik Anda harus memeriksa sesuatu seperti libsdl.org . (Oke itu tidak cukup berhasil karena C ++ kompatibel ke belakang tetapi Anda mendapatkan intinya)
Ricket
Lol tidak, saya tidak mengerti maksud Anda. Jujur saya tidak begitu peduli dengan apa yang Anda katakan, jadi jangan repot-repot membalas saya. Saya hanya berusaha membantu seseorang, tidak berdebat tentang keabsahan bahasa pemrograman.
UnknownDevice
5
Maksudnya adalah bahwa jawaban awal Anda sama sekali tidak memiliki substansi sehubungan dengan pertanyaan yang diajukan. Anda menegaskan bahwa Ruby "tidak benar-benar untuk game," tapi itu SEMUA yang Anda katakan. Ada sedikit nilai dalam hal itu. Adapun mengapa OP ingin menggunakan Ruby, cukup jelas: itu adalah "satu-satunya bahasa yang ia kenal dengan sangat baik." Sama sekali tidak sama dengan "hanya karena itu mungkin."
Neverender
@Neverender, itu tidak sepenuhnya benar. Dia memang membuat argumen bahwa Python hanya memiliki basis pengguna yang lebih besar dan lebih banyak perpustakaan sudah selesai untuk pengembangan game. Saya percaya ini adalah pengamatan yang sah untuk dilakukan ketika memberikan saran kepada seseorang yang tidak memiliki pengalaman dalam pengembangan game.
Zach Conn