Ruby có phải là ngôn ngữ phù hợp để phát triển game không? [đóng cửa]


33

Tôi muốn chuyển sang phát triển trò chơi, nhưng ngôn ngữ duy nhất tôi biết thực sự rõ là Ruby. Hầu hết những gì tôi đã đọc dường như đều hướng đến các ngôn ngữ cấp thấp hơn như C ++ để phát triển trò chơi hoặc ngôn ngữ cho các khung cụ thể như C # để sử dụng XNA. Có ai có bất kỳ kinh nghiệm sử dụng một ngôn ngữ như ruby ​​để phát triển trò chơi không? Nếu vậy, bạn sẽ tư vấn cho hoặc chống lại nó?

Câu trả lời:


47

Tôi không có sở thích nào đối với Ruby (hoặc Python), bản thân tôi là một người Java. Nhưng câu trả lời của UnknownDevice về cách Ruby bằng cách nào đó "không thực sự dành cho trò chơi" và Python làm tôi thất vọng. Tôi hy vọng anh ấy sẽ làm rõ.

Tôi biết Pygame tồn tại và tồn tại và tôi nhận ra rằng Python có lượng người dùng lớn hơn Ruby. Nhưng thành thật mà nói, không ai trong số họ có vẻ như là một ngôn ngữ "cho các trò chơi". Java cũng không phải là ngôn ngữ lập trình trò chơi của tôi. (và khi tôi nói "của sự lựa chọn", tôi có nghĩa là bằng sự lựa chọn , không phải vì đó là những gì được dạy ở trường hoặc bởi vì đó là điều tôi "biết"). Và thực sự, ngôn ngữ "cho game" là gì? Chà, tốc độ là một yếu tố, và rõ ràng nó phải có thư viện cho đồ họa và các hệ thống trò chơi khác (âm thanh, đầu vào, v.v.).

Về tốc độ, nó dường như là một sự thay đổi giữa Ruby và Python. Thực hiện một số tìm kiếm và bạn sẽ nhanh chóng tìm thấy điểm chuẩn và đối số cho cả hai mặt của phổ và các cấu hình khác nhau đặt cái này hoặc cái kia đi trước. Python với thứ gọi là "Tâm lý" có vẻ là một con quỷ tốc độ phổ biến so với Ruby, nhưng Python thông thường dường như chậm hơn một chút so với Ruby. Cuối cùng, nếu bạn chọn một ngôn ngữ cấp cao như vậy thì rõ ràng bạn không quan tâm đến tốc độ bản địa; đi với ngôn ngữ bạn biết tốt nhất Và rõ ràng là bạn biết rõ nhất về Ruby, vì vậy tôi khuyến khích điều đó!

Yếu tố khác là liệu công nghệ có ở đó để tạo ra các trò chơi hay không; cho dù nó có thể hỗ trợ vẽ lên màn hình và thu thập đầu vào và phát âm thanh. Ruby có thể làm tất cả những điều này. Trong thực tế, có một số lựa chọn tốt về mặt này. Có gói ruby-opengl tại RubyForge sẽ hỗ trợ OpenGL cho Ruby (hoặc có thể được bao gồm theo mặc định?). Ngoài ra, Chingu cung cấp "đồ họa 2D tăng tốc nhanh như chớp!" theo trang chủ của nó; nó xây dựng các tính năng bổ sung trên đỉnh của Gosu , mà bạn có thể chọn sử dụng nếu Chingu quá nhiều cho bạn. Hoặc đối với đồ họa 3D, nếu bạn không muốn sử dụng ruby-opengl, hãy thử G3DRuby , "một tập hợp các lớp bao bọc rất sạch cho nhiều tính năng OpenGL tiên tiến hơn". CóRubygame , thứ mà tôi không thể tìm thấy nhiều thông tin nhưng nó tự nhận là "thư viện đa phương tiện đa nền tảng" và được đặt tên, phải nhấn mạnh vào phát triển trò chơi. Nếu bạn đã quen thuộc với thư viện SDL phổ biến cho C ++, thì có Ruby / SDL hoặc RUDL , cả hai đều là trình bao bọc Ruby của SDL. Hoặc nếu bạn thích SFML mới hơn, hướng đối tượng hơn , thì nó cũng có sẵn cho Ruby!

Không có lý do gì mà Ruby nên ít ngôn ngữ lập trình trò chơi hơn Python; nếu có, tôi thực sự muốn nghe nó để tôi có thể tranh luận với nó. Nếu bạn cảm thấy thoải mái nhất khi lập trình trong Ruby và bạn nhận thức được những ưu và nhược điểm so với các ngôn ngữ phổ biến khác, thì bằng mọi cách bạn chắc chắn có thể phát triển trò chơi trong Ruby!


+1 nhưng bạn nên thêm điều gì đó về các hạn chế sử dụng trên một số ngôn ngữ trên các nền tảng độc quyền như bảng điều khiển ... (giới hạn chính sách về phần cứng và nhà xây dựng) Nếu các trò chơi tự chế được thực hiện để đào tạo để có việc làm trong ngành, thì sử dụng Ruby cho trò chơi sẽ không thực sự giúp ích cho bên này. Tuy nhiên, đối với các trò chơi trên máy tính để bàn, "tại sao không ???"
Klaim

@Klaim Tôi sẽ lập luận rằng nó đang trở nên ít liên quan hơn và tôi sẽ thích thú khi biết ngôn ngữ được sử dụng cho bảng điều khiển của thế hệ tiếp theo hoặc có lẽ là ngôn ngữ sau đó. Có thể chúng sẽ tiếp tục được phát triển với C ++, nhưng cá nhân tôi tin rằng rất có thể chúng sẽ tiến tới các ngôn ngữ cấp cao hơn. Phát triển Android, ví dụ, là trong Java; Android không phải là một máy chơi game. Nhưng có lẽ một ngôn ngữ lai như Go sẽ trở thành ngôn ngữ phổ biến mới trong một hoặc hai thế hệ console.
Ricket

1
Tôi đồng ý về nguyên tắc này, và có thể Go hoặc D đạt được điều gì đó ở bên này. Nhưng tôi nghĩ chỉ có ngôn ngữ hệ thống mới có thể là "tiêu chuẩn" trong ngành này. Tuy nhiên, tôi đang nói về ngành công nghiệp, không phải là khía cạnh độc lập của lĩnh vực trò chơi video. Tôi nghĩ rằng nếu bạn đi theo con đường của riêng bạn (không phải là tiền lương của một công ty lớn được thành lập) thì bạn có cơ hội sử dụng bất cứ thứ gì bạn muốn. Nhưng bạn vẫn cần sử dụng các công cụ được yêu cầu bởi các nhà xây dựng khi bạn muốn làm một cái gì đó trên bất cứ thứ gì khác ngoài console. Điện thoại sử dụng Java nhưng rất nhiều C ++ được sử dụng trên các ứng dụng cần hiệu năng cao hơn, trên cùng các điện thoại đó.
Klaim

Trên thực tế, tôi nghĩ rằng ngành công nghiệp trò chơi điện tử chậm chấp nhận ngay cả C ++ tiêu chuẩn hiện tại, có nhiều khả năng bạn sẽ phải chờ rất nhiều năm trước khi có bất kỳ điều gì khác ngoài C ++ trên bảng điều khiển. Một sự thay đổi trong cách các nhà xây dựng và nhà phát triển làm việc có thể xảy ra nhưng thực sự không dễ để tưởng tượng từ hôm nay.
Klaim

Tôi chỉ nói thêm rằng có nhiều loại trò chơi mà hiệu suất tối đa không phải là vấn đề. Tất nhiên, trong khi tạo Crysis mới, bạn sẽ muốn vắt kiệt từng khung hình từ nó, nhưng có rất nhiều trò chơi mà bạn không phải chơi. Và khi làm việc với các trò chơi như vậy, bạn cũng có thể cần một số ngôn ngữ khác (ví dụ: các ngôn ngữ đổ bóng, các trò chơi như Civilization 4 & 5 cũng dựa vào các ngôn ngữ kịch bản).
MartinTeeVarga

9

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

URL có thể là một chút của một spoiler.

tl; dr: người thu gom rác ngây thơ là một vấn đề thực sự.


Rất nhiều thông tin! Một chuyên gia Ruby có thể nhận xét về việc này vẫn còn áp dụng cho đến ngày hôm nay? Bài báo được đăng vào tháng 1 năm 2009 và tôi sẽ không ngạc nhiên nếu có nhiều chuyện xảy ra kể từ đó. chỉnh sửa Được rồi, tôi vừa tìm thấy một bài viết ngày 3 tháng 9 năm 2010 gợi ý rằng thực sự đây vẫn là trường hợp ngày hôm nay, nói rằng "trình thu gom rác Ruby không có nghĩa là được chạy" - thật thú vị! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
Trình thu gom rác của Ruby rất dễ quét, nhưng trong trường hợp là chu kỳ, Python và Lua cũng vậy (thực tế trên một trò chơi Python tôi đã làm việc, chúng tôi đã phải trì hoãn GC vì lý do đó chính xác). Tôi chưa đạt được điểm chuẩn, nhưng có lẽ Ruby chỉ chậm một cách tình cờ chứ không chậm về cơ bản. Tôi không thấy đó là một lý do hết sức thuyết phục để tránh Ruby, đặc biệt nếu bạn đang nói về việc xây dựng các trò chơi hoàn toàn bằng Ruby như người hỏi. Chỉ cần vô hiệu hóa cho đến khi một thời gian thích hợp.

1
Đã được một thời gian kể từ khi điều này được đăng, nhưng hãy xem bài viết thú vị này. patshaughnessy.net/2012/3/23/ Từ đó là về Trình thu gom rác trong Ruby 2.0. Dưới đây là một bài phát biểu của nhà xây dựng GC youtube.com/watch?v=4fIdEeM0Fyg Video này, vào thời điểm Ruby 2.0 xuất hiện, có thể sẽ được 1,5 - 2 năm, vì vậy có thể nhiều cải tiến về hiệu suất và GC đã được thực hiện . Điều này có thể làm cho Ruby trở nên khả thi hơn để sử dụng cho nhiều game nặng hơn. Tôi chắc chắn hy vọng như vậy! Tôi tin rằng Ruby 2.0 ra mắt vào năm 2013.
Michael van Rooijen

1
Ngoài ra còn có các máy ảo khác ngoài MRI hỗ trợ các hệ thống thu gom rác khác nhau, bao gồm cả mruby mới từ chính Matz bao gồm hệ thống thu gom rác gia tăng. Cho đến nay, mruby đang định hình là một lựa chọn tuyệt vời cho các trò chơi. Nó thậm chí hoạt động trên iOS và Android!
Stephen Belanger

5

Không có lý do tại sao bạn không thể. Miễn là có hỗ trợ đa phương tiện cho một ngôn ngữ, thì đó là tài liệu gamedev. Heck, một tỷ lệ lớn của một trong những trò chơi Rollercoaster Tycoon đã được thực hiện bằng tay trong ASM.


3
Bạn đang mâu thuẫn với chính mình. "Mã hóa trò chơi trong asm" hoàn toàn ngược lại với "mã hóa trò chơi bằng ruby" hoặc một số ngôn ngữ cấp cao thực sự khác.
bobobobo

1

Mặc dù tôi không quen với nhiều công việc đặc biệt sâu sắc xung quanh Ruby, Enterbrain đã tạo ra các chương trình làm game RPG Maker VX và RPG Maker XP sử dụng các kịch bản trò chơi dựa trên Ruby: http://www.rpgmakerweb.com/

Đây thực sự là lần đầu tiên tôi đi sâu vào ngôn ngữ. Như hầu hết mọi người đã nói, có lẽ bạn sẽ không đạt được hiệu suất cao của các ngôn ngữ khác, nhưng nếu bạn đang muốn bắt đầu một game nhập vai 2D (hoặc trò chơi 2D khác), thì đó có lẽ là một trong những trình chỉnh sửa trò chơi tinh vi nhất hiện có Cứu giúp.


0

Ruby là một ngôn ngữ tốt, nhưng nó không thực sự cho các trò chơi thành thật. Nếu bạn không muốn sử dụng C ++ nhưng muốn một cái gì đó như Ruby, hãy kiểm tra Python. Để có một khung Python tốt, bạn nên kiểm tra một cái gì đó như www.cocos2d.org/.


3
... hoặc www.pygame.org
Ian Schreiber

6
Thật vô nghĩa. Ruby không kém ngôn ngữ "dành cho trò chơi" so với Python.
Ricket

2
... vô lý. Bạn cũng có thể nói rằng Lua không dành cho game.
Kornel Kisielewicz

2
Có một viên ruby ​​tương đương với pygame? Tôi sẽ không nói một ngôn ngữ phù hợp hơn ngôn ngữ kia. Nhưng có thể hợp lý khi nói rằng python có thư viện trò chơi và cộng đồng gamedev tốt hơn.
deft_code

Tôi có cảm giác rằng có một cổng SFML để ruby.
Vịt Cộng sản

0

Nó phụ thuộc vào loại trò chơi mà bạn quan tâm bằng văn bản. Tôi đã sử dụng ruby ​​để viết ứng dụng khách AI cho một số trò chơi, bao gồm Ngoại giao , bài xì phé và Thành phố đã mất . Tôi thấy đó là một ngôn ngữ rất thân thiện để nhanh chóng thử nghiệm các khái niệm khác nhau. Mặt khác, tôi sẽ không muốn sử dụng nó để viết game bắn súng thời gian thực của mình - nó sẽ không có hiệu suất tôi cần.


0

Câu hỏi của bạn quá chung chung. Bạn có muốn chỉ viết một số trò chơi máy tính như một dự án sở thích hoặc bạn muốn tham gia vào phát triển trò chơi chuyên nghiệp / chuyên nghiệp? Nó sẽ có đồ họa? Nó được chạy trên nền tảng nào?

Nói chung, Ruby phù hợp cho các dự án sở thích (trò chơi Ruby yêu thích của tôi là Ruby Warrior ) và để phát triển các trò chơi dựa trên web như Farmville. Thậm chí có nhu cầu nhất định cho các lập trình viên như vậy, hãy thử google một cái gì đó như: "trò chơi xã hội lập trình viên ruby".

Mặt khác, nếu bạn muốn phát triển các trò chơi dựa trên máy tính để bàn hoặc thiết bị di động có đồ họa, Ruby không phải là lựa chọn tốt nhất. Xem xét:

  • Thư viện Javascript hỗ trợ Coffeescript (cú pháp của nó rất giống với Ruby)
  • Python - rất giống với Ruby, thư viện trò chơi tốt hơn

0

Đừng mong đợi viết các trò chơi 3D hiệu quả, chuyên nghiệp, thương mại, với Ruby, nhưng Ruby là một ngôn ngữ tuyệt vời để sử dụng khi học các khái niệm phát triển trò chơi.

Gosu là thư viện phổ biến nhất (và được duy trì tích cực) để viết các trò chơi 2D trong Ruby. Nó có một thư viện C ++ nằm bên dưới mà nó sử dụng để cải thiện hiệu suất và tương tác với các thư viện kết xuất hiển thị bên dưới như OpenGL.

Về hiệu năng, việc triển khai Ruby "mặc định" (MRI) sẽ hoạt động tốt (tôi đề xuất Ruby 2.0 mới nhất để có hiệu suất tốt nhất) nhưng có những triển khai thay thế có luồng gốc và thuật toán thu gom rác thay thế như Rubinius, JRuby, v.v. . Nếu bạn đang sử dụng các chuỗi, bạn có thể muốn dùng thử Rubinius, nếu không MRI Ruby sẽ hoạt động tốt.


-2

Tôi nói Python vì nó có lượng người dùng lớn hơn và nhiều lựa chọn hơn khi nói đến các khung / thư viện để phát triển trò chơi. Một điều khá rõ ràng là người này không có kinh nghiệm trong việc phát triển trò chơi nên tôi không có ý nghĩa gì khi khuyên họ nên sử dụng thứ gì đó như Ruby chỉ vì điều đó là có thể.

Khi tôi làm việc trên các trò chơi tôi sử dụng C ++ với Lua, tôi không tắt và viết trò chơi của mình trong Visual Basic chỉ vì nó có hỗ trợ truyền thông. Tôi chắc rằng mọi người ở đây đã nghe ai đó nói một số công cụ cho một số công việc nhất định. Tôi chắc chắn rằng bạn có thể đóng đinh bằng giày, nhưng tại sao bạn lại làm thế khi bạn có thể sử dụng búa.


2
C ++ là một ngôn ngữ hay, nhưng nó không thực sự cho các trò chơi thành thật. Nếu bạn không muốn sử dụng lắp ráp nhưng muốn một cái gì đó như C ++, hãy kiểm tra C. Để có khung C tốt, bạn nên kiểm tra một cái gì đó như libsdl.org . (không sao, nó không hoạt động tốt vì C ++ tương thích ngược nhưng bạn có điểm)
Ricket

Lol không tôi không nhận được quan điểm của bạn. Thành thật mà nói tôi không thực sự quan tâm những gì bạn đang nói vì vậy đừng bận tâm trả lời tôi. Tôi chỉ đang cố gắng giúp đỡ ai đó, không tranh luận về tính hợp pháp của ngôn ngữ lập trình.
UnknownDevice

5
Quan điểm của ông là câu trả lời ban đầu của bạn hoàn toàn không có liên quan đến câu hỏi. Bạn khẳng định rằng Ruby "không thực sự dành cho game", nhưng đó là TẤT CẢ bạn nói. Có rất ít giá trị trong đó. Về lý do tại sao OP muốn sử dụng Ruby, nó khá rõ ràng: đó là "ngôn ngữ duy nhất anh ấy biết rất rõ." Điều đó hoàn toàn không giống như "chỉ vì nó có thể."
Neverender

@Neverender, điều đó không hoàn toàn đúng. Ông đã đưa ra lập luận rằng Python chỉ đơn giản là có một cơ sở người dùng lớn hơn và nhiều thư viện đã hoàn thành để phát triển trò chơi. Tôi tin rằng đây là những quan sát hợp pháp để đưa ra lời khuyên cho ai đó không có kinh nghiệm trong việc phát triển trò chơi.
Zach Conn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.