Чи рубін є підходящою мовою для розвитку ігор? [зачинено]


33

Я хочу перейти до якоїсь ігрової розробки, але єдиною мовою, яку я дуже добре знаю, є Рубі. Більшість того, що я прочитав, схоже, вказує на мови нижчого рівня, такі як C ++ для розробки ігор, або мови для конкретних рамок, як C # для використання XNA. Хтось має досвід використання такої мови, як рубін, для розробки ігор? Якщо так, ви б порадили проти чи проти?

Відповіді:


47

У мене немає переваг щодо Рубі (або Python), я сама людина Java. Але відповідь UnknownDevice про те, як Рубі якось "не зовсім для ігор", а Python - мене засмутила. Я сподіваюся, що він уточнить.

Я знаю, що Pygame існує і існує, і я усвідомлюю, що Python має більшу базу користувачів, ніж Ruby. Але якщо чесно, жоден з них не здається мовою "для ігор". Ні Java, і це моя обрана мова програмування ігор. (і коли я кажу "за вибором", я маю на увазі під вибором , а не тому, що це те, чого навчають у школі, або тому, що я щось "знаю"). І справді, що таке мова "для ігор"? Ну, швидкість - це фактор, і, очевидно, в ній повинні бути бібліотеки для графіки та інших ігрових систем (аудіо, введення тощо).

Що стосується швидкості, то, здається, це сутичка між Рубі та Пітоном. Здійсніть кілька пошукових запитів, і ви швидко знайдете орієнтири та аргументи для обох сторін спектру та різних конфігурацій, які висувають одну чи іншу попереду. Python з чимось під назвою "Psycho" здається популярним демоном швидкості порівняно з Ruby, але звичайний Python здається трохи повільніше, ніж Ruby. Зрештою, якщо ви вибираєте таку мову високого рівня, ви, очевидно, не переймаєтесь швидкістю рідної мови; йдіть мовою, яку ви найкраще знаєте. І явно ти найкраще знаєш Рубі, тому я заохочую!

Інший фактор - чи існує технологія створення ігор; чи може він підтримувати малюнок на екрані та збирати вхід та відтворювати аудіо. Рубі все це може зробити. Насправді існує велика кількість варіантів у цьому відношенні. У RubyForge є пакет ruby-opengl, який надасть підтримку OpenGL для Ruby (або він може бути включений за замовчуванням?). Крім того, Chingu надає "блискавичну 2GB графіку, прискорену OpenGL!" відповідно до його домашньої сторінки; він створює додаткові функції Gosu , які ви можете вибрати, якщо Chingu для вас занадто багато. Або для 3D графіки, якщо ви не хочете використовувати ruby-opengl, спробуйте G3DRuby , "дуже чистий набір класів обгортки для багатьох більш досконалих функцій OpenGL". Там 'Rubygame , про який я не можу знайти багато інформації, але він стверджує, що є "мультимедійною бібліотекою між платформами" та дав назву, повинен робити акцент на розробці ігор. Якщо ви знайомі з популярною бібліотекою SDL для C ++, є Ruby / SDL або RUDL , обидва вони Ruby обгортки SDL. Або якщо ви віддаєте перевагу новіший, більш об'єктно-орієнтований SFML , він також доступний для Ruby!

Немає жодних причин, що Рубі має бути меншою мовою програмування ігор, ніж Python; якщо є, я дуже хотів би почути це, щоб я міг заперечувати проти цього. Якщо вам зручніше програмувати в Ruby, і вам відомо про плюси і мінуси в порівнянні з іншими популярними мовами, то, безумовно, ви можете безперечно розвивати ігри в Ruby!


+1, але вам слід додати дещо про обмеження використання деяких мов на власних платформах, таких як консолі ... (обмеження в політиці обладнання та конструктора) Якщо домашні ігри зроблені для навчання для отримання роботи в галузі, то використання Ruby для самої гри не дуже допоможе з цього боку. Однак для настільних ігор "чому б не ???"
Клайм

@Klaim Я стверджую, що це стає менш актуальним, і мені буде цікаво знати мову, яка використовується для консолей наступного покоління чи, можливо, одну після цього. Цілком можливо, що вони продовжуватимуть розробляти C ++, але я особисто вважаю великою ймовірністю того, що вони просунуться до мов вищого рівня. Розробка Android, наприклад, на Java; зовсім не те, що Android взагалі є ігровою консоллю. Але, можливо, гібридна мова на кшталт Go стане новою популярною мовою в поколінні чи двох консолей.
Ricket

1
Я погоджуюся з принципом, і, можливо, Go або D досягти щось із цього боку. Але я думаю, що лише системна мова може бути "стандартною" в цій галузі. Однак я говорю про індустрію, а не про сторону домену відеоігор. Я думаю, якщо ти підеш своїм власним шляхом (а не зарплата великої створеної компанії), то ти маєш шанс використовувати все, що хочеш. Але вам все одно потрібно використовувати інструменти, про які вимагають конструктори, коли ви хочете зробити щось на чомусь, крім консолі. Телефони використовують Java, але багато C ++ використовується у більш необхідних для роботи додатках на тих самих телефонах.
Клайм

Насправді я думаю, що оскільки індустрія відеоігор повільно сприймає навіть сучасний стандарт C ++, це хороші шанси, що вам доведеться почекати багато років, перш ніж мати на консолях щось інше, ніж C ++. Зміна способу роботи конструкторів та розробників може статися, але це не так просто уявити з сьогоднішнього дня.
Клайм

Я просто додам, що існує багато видів ігор, де максимальна продуктивність не є проблемою. Звичайно, роблячи новий Crysis, ви хочете вичавити з нього кожен кадр, але є безліч ігор, де вам не доведеться. І працюючи над такими іграми, можливо, вам знадобиться і кілька інших мов (наприклад, шейдерські мови, наприклад, ігри, як Civilization 4 & 5, також покладаються на мови сценаріїв).
MartinTeeVarga

9

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

URL, мабуть, трохи спойлер.

tl; dr: наївний збирач сміття - справжня проблема.


Дуже інформативно! Чи може експерт Рубі прокоментувати, чи це все ще застосовується сьогодні? Стаття датована січнем 2009 року, і я не здивуюсь, якщо з того часу трапилося багато. редагувати Добре, я щойно знайшов статтю від 3 вересня 2010 року, яка натякає, що справді це все ще є сьогодні, кажучи, що "сміттєзбірник Ruby не мав бути запущений" - цікаво! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
Колекціонер сміття Ruby - це тактова перевірка, але у випадку циклів - це також Python та Lua (адже в грі Python, над якою я працював, нам довелося затримати GC саме з цієї причини). Я не робив орієнтирів, але, можливо, Рубі просто випадково повільний, а не принципово повільний. Я не вважаю це надзвичайно вагомою причиною уникати Рубі, особливо якщо ви говорите про побудову ігор цілком у Ruby, як запитувача. Просто відключіть GC до деякого відповідного часу.

1
Минув час, коли це було опубліковано, але подивіться цю цікаву статтю. patshaughnessy.net/2012/3/23/… Йдеться про збирач сміття в Ruby 2.0. Ось основна примітка будівельника GC youtube.com/watch?v=4fIdEeM0Fyg Це відео, до моменту виходу Ruby 2.0, напевно, виповниться 1,5 - 2 роки, тому можливо, що було досягнуто ще багато покращення продуктивності та GC . Це може зробити Ruby більш життєздатним для використання для більш важких ігрових об'єктів. Я точно сподіваюся на це! Я вважаю, що Ruby 2.0 виходить у 2013 році.
Майкл ван Роойен

1
Також є МР, окрім МРТ, які підтримують різні системи збору сміття, в тому числі новий mruby від самого Matz, який включає в себе додаткову систему збору сміття. Поки mruby формується, щоб стати чудовим вибором для ігор. Він працює навіть на iOS та Android!
Стівен Белангер

5

Немає причини, чому ти не можеш. Поки існує мультимедійна підтримка мови, то це матеріал Gamedev. Хек, велика частка однієї з ігор Rollercoaster Tycoon була зроблена вручну в ASM.


3
Ти наче протиріч собі. "ручне кодування гри в ASM" - це протилежне до "кодування гри в рубіні" або іншої мови дійсно високого рівня.
бобобобо

1

Хоча я не знайомий з великою кількістю глибоких спекулятивних робіт навколо Ruby, Enterbrain створив програми для створення ігор RPG Maker VX і RPG Maker XP, які використовують ігрові сценарії на основі Ruby: http://www.rpgmakerweb.com/

Це було фактично моє перше занурення у мову. Як сказала більшість людей, ви, мабуть, не отримаєте високої продуктивності інших мов, але якщо ви хочете запустити 2D RPG (чи справді іншу 2D гру), це, мабуть, один із найскладніших редакторів ігор, щоб допомогу.


0

Рубі - це приємна мова, але насправді ігри не чесні. Якщо ви не хочете використовувати C ++, але хочете щось на зразок Ruby, перегляньте Python. Для гарної структури Python слід перевірити щось на кшталт www.cocos2d.org/.


3
... або www.pygame.org
Ян Шрайбер

6
Це нісенітниця. Рубі - це не менш мова "для ігор", ніж Python.
Ricket

2
... дурниці. Ви також можете сказати, що Lua не для ігор.
Kornel Kisielewicz

2
Чи є рубін, еквівалентний пігамі? Я б не сказав, що одна мова більше підходить, ніж інша. Але може бути розумним сказати, що python має кращі ігрові бібліотеки та спільноту gamedev.
deft_code

У мене таке відчуття, що є SFML-порт для рубіну.
Качка комуністична

0

Це залежить від того, який тип гри вам цікавий для написання. Я використовував рубін, щоб писати клієнтів AI для кількох ігор, включаючи дипломатію , покер та загублені міста . Я вважаю це дуже доброзичливою мовою для швидкого експерименту з різними поняттями. З іншого боку, я не хотів би використовувати його для написання свого шутера в режимі реального часу - він просто не матиме потрібної мені швидкості.


0

Ваше запитання занадто загальне. Ви хочете просто написати якусь комп’ютерну гру як проект хобі чи хочете вступити в розвиток інді / професійної гри? Чи буде в ньому графіка? На яких платформах він повинен працювати?

Взагалі, Ruby підходить для хобі-проектів (BTW - моя улюблена гра Ruby - Ruby Warrior ) та для розробки веб-ігор, таких як Farmville. Навіть є певний попит на таких програмістів, спробуйте гугл щось на кшталт: "соціальна гра рубінового програміста".

З іншого боку, якщо ви хочете розвивати настільні або мобільні ігри з графікою, Ruby - не найкращий варіант. Поміркуйте:

  • Бібліотека Javascript, що підтримує Coffeescript (його синтаксис дуже схожий на Ruby)
  • Python - дуже схожий на Ruby, кращі ігрові бібліотеки

0

Не сподівайтеся писати високоефективні, професійні, комерційні, 3D-ігри з Ruby, але Ruby - це чудова мова, яка використовується при вивченні концепцій розвитку ігор.

Gosu - найпопулярніша (і активно підтримується) бібліотека для написання 2D ігор в Ruby. У ній є основна бібліотека C ++, яку він використовує для підвищення продуктивності та взаємодії з базовими бібліотеками візуалізації дисплея, такими як OpenGL.

Що стосується продуктивності, реалізація Ruby (MRI) за замовчуванням буде добре працювати (я пропоную останню Ruby 2.0 для найкращої продуктивності), але є альтернативні реалізації, які мають вбудовані потоки та альтернативні алгоритми збору сміття, такі як Rubinius, JRuby тощо Якщо ви використовуєте теми, ви можете спробувати Рубіній, інакше MRI Ruby буде добре працювати.


-2

Я сказав, що Python має більшу базу користувачів та більше можливостей для створення ігор / бібліотек для розробки ігор. Цілком очевидно, що ця людина не має досвіду в розробці ігор, тому мені не має сенсу рекомендувати їм використовувати щось на зразок Рубі лише тому, що це можливо.

Коли я працюю над іграми, я використовую C ++ з Lua, я не виходжу і пишу свою гру в Visual Basic тільки тому, що вона підтримує медіа Я впевнений, що всі тут чули, як хтось говорить певні інструменти для певної роботи. Я впевнений, що ви можете вбити цвях взуттям, але навіщо це робити, коли можете використовувати молоток.


2
C ++ - це приємна мова, але насправді ігри не чесні. Якщо ви не хочете використовувати збірку, але хочете щось на зразок C ++, ознайомтесь із C. Для гарної структури C слід перевірити щось на зразок libsdl.org . (гаразд, це не дуже працює, тому що C ++ є сумісним назад, але ви
розумієте

Lol ні, я не розумію вашу думку. Чесно кажучи, мені дуже все одно, що ти говориш, тому не турбуй мене відповідати. Я просто намагаюся допомогти комусь, а не сперечаюся про законність мови програмування.
UnknownDevice

5
Його думка полягає в тому, що ваша оригінальна відповідь абсолютно не мала суті стосовно поставленого питання. Ви стверджуєте, що Рубі - це "насправді не для ігор", але це все, що ви говорите. У цьому мало значення. Що стосується того, чому ОП хотів би використовувати Рубі, то цілком зрозуміло: це "єдина мова, яку він знає дуже добре". Це зовсім не те саме, що "тільки тому, що це можливо".
Неверендер

@Neverender, це не зовсім так. Він зробив аргумент, що Python просто має більшу базу користувачів та більше бібліотек, вже готових для розробки ігор. Я вважаю, що це законні спостереження, які слід робити, коли дають поради тому, хто не має досвіду розробки ігор.
Зак Конн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.