Является ли ruby ​​подходящим языком для разработки игр? [закрыто]


33

Я хочу перейти к разработке игр, но единственный язык, который я хорошо знаю, это Ruby. Кажется, большая часть того, что я прочитал, указывает на языки более низкого уровня, такие как C ++ для разработки игр, или языки для конкретных сред, таких как C #, для использования XNA. У кого-нибудь есть опыт использования языка вроде ruby ​​для разработки игр? Если да, то вы бы посоветовали за или против?

Ответы:


47

У меня нет никаких предпочтений по отношению к Ruby (или Python), я сам человек Java. Но ответ UnknownDevice о том, что Ruby почему-то «не совсем для игр» и Python, разочаровал меня. Я надеюсь, что он прояснит.

Я знаю, что Pygame существует и существует, и я понимаю, что Python имеет большую базу пользователей, чем Ruby. Но, честно говоря, ни один из них не кажется языком «для игр». Так же как и Java, и это мой любимый язык программирования игр. (и когда я говорю «по выбору», я имею в виду под выбором не потому, что это то, чему учат в школе, или потому, что это то, что я «знаю»). И действительно, что такое язык "для игр"? Ну, скорость является фактором, и, очевидно, она должна иметь библиотеки для графики и других игровых систем (аудио, ввод и т. Д.).

Что касается скорости, то между Ruby и Python, похоже, возникли трудности. Сделайте некоторые поиски, и вы быстро найдете критерии и аргументы для обеих сторон спектра, а также различные конфигурации, которые ставят одну или другую вперед. Python с чем-то под названием «Psycho» кажется популярным демоном скорости по сравнению с Ruby, но обычный Python, кажется, немного медленнее, чем Ruby. В конце концов, если вы выбираете такой высокоуровневый язык, вы, очевидно, не заботитесь о нативных скоростях; иди с языком, который ты знаешь лучше всего. И, очевидно, вы знаете Руби лучше всех, поэтому я поощряю это!

Другой фактор - есть ли технология для создания игр; может ли он поддерживать рисование на экране и сбора ввода и воспроизведения звука. Руби может сделать все это. На самом деле существует множество вариантов в этом отношении. В RubyForge есть пакет ruby-opengl , который предоставит поддержку OpenGL для Ruby (или он может быть включен по умолчанию?). Кроме того, Chingu обеспечивает «молниеносную ускоренную 2D-графику OpenGL!» в соответствии с его домашней страницей; он строит дополнительные функции поверх Gosu , которые вы можете использовать, если Chingu слишком много для вас. Или для 3D-графики, если вы не хотите использовать ruby-opengl, попробуйте G3DRuby , «очень чистый набор классов- оболочек для многих из более продвинутых функций OpenGL». Там'Rubygame , о которой я не могу найти много информации, но она претендует на звание «кроссплатформенной мультимедийной библиотеки» и, учитывая ее название, должна уделять особое внимание разработке игр. Если вы знакомы с популярной библиотекой SDL для C ++, есть Ruby / SDL или RUDL , оба из которых являются Ruby-обертками SDL. Или, если вы предпочитаете более новый, более объектно-ориентированный SFML , он также доступен для Ruby!

Нет причин, по которым Ruby должен быть языком программирования меньше, чем Python; если таковой имеется, я бы очень хотел услышать это, чтобы спорить с этим. Если вы чувствуете себя наиболее комфортно в программировании на Ruby и знаете о плюсах и минусах по сравнению с другими популярными языками, то вы непременно можете разрабатывать игры на Ruby!


+1, но вы должны добавить кое-что об ограничениях использования некоторых языков на проприетарных платформах, таких как консоли ... (ограничения аппаратного обеспечения и политики конструктора). Если домашние игры сделаны для обучения, чтобы получить работу в отрасли, использование Ruby для самой игры не очень поможет с этой стороны. Для настольных игр, однако, "почему бы и нет"
Klaim

@Klaim Я бы поспорил, что он становится все менее актуальным, и мне будет интересно узнать язык, используемый для консолей следующего поколения или, возможно, того, что после этого. Возможно, что они продолжат разрабатываться на C ++, но я лично считаю, что весьма вероятно, что они перейдут на языки более высокого уровня. Например, разработка Android ведется на Java; Android не является игровой приставкой вообще. Но, возможно, гибридный язык, такой как Go, станет новым популярным языком в поколении консолей.
Рикет

1
Я согласен с принципом, и, возможно, иди или сделаю что-то на этой стороне. Но я думаю, что только системный язык может быть "стандартным" в этой отрасли. Однако я говорю об индустрии, а не об инди-стороне игровой индустрии. Я думаю, что если вы пойдете своим путем (не заработная плата крупной устоявшейся компании), у вас будет возможность использовать все, что вы захотите. Но вам все равно нужно использовать инструменты, запрашиваемые конструкторами, когда вы хотите что-то сделать, кроме консоли. Телефоны используют Java, но большая часть C ++ используется в приложениях, требующих большей производительности, на тех же телефонах.
Klaim

Фактически, я думаю, что, поскольку индустрия видеоигр не спешит принимать даже текущий стандарт C ++, есть хорошие шансы, что вам придется ждать много лет, прежде чем иметь что-либо, кроме C ++, на консолях. Может произойти изменение в том, как работают конструкторы и разработчики, но это не так просто представить с сегодняшнего дня.
Klaim

Я бы просто добавил, что существует много типов игр, в которых максимальная производительность не является проблемой. Конечно, при создании нового Crysis вы захотите выжать из него каждый кадр, но есть множество игр, в которых вам не нужно. А для работы с такими играми вам может понадобиться и немного других языков (например, шейдерные языки, такие игры, как Civilization 4 и 5, также полагаются на скриптовые языки).
MartinTeeVarga

9

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

URL, вероятно, немного спойлер.

tl; dr: наивный сборщик мусора - это реальная проблема.


Очень информативно! Может ли эксперт по Ruby прокомментировать, применимо ли это до сих пор? Статья датирована январем 2009 года, и я не удивлюсь, если бы с тех пор произошло многое. редактировать Хорошо, я только что нашел статью от 3 сентября 2010 года , которая намекает , что на самом деле это все еще происходит сегодня, говоря «сборщик мусора Рубин не должен был быть запущен» - интересно! jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
Сборщик мусора в Ruby - метка-зачистка, но в случае циклов, как и Python и Lua (на самом деле в игре на Python, над которой я работал, нам пришлось отложить GC именно по этой причине). Я не делал тесты, но, возможно, Ruby's просто медленный, а не медленный. Я не вижу в этом убедительной причины избегать Ruby, особенно если вы говорите о создании игр исключительно на 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
Существуют также другие виртуальные машины, кроме MRI, которые поддерживают различные системы сбора мусора, в том числе новый mruby от самого Маца, который включает в себя систему инкрементного сбора мусора. Пока что Mruby станет отличным выбором для игр. Он даже работает на iOS и Android!
Стивен Белэнджер

5

Там нет причин, почему вы не можете. Если есть поддержка мультимедиа для языка, то это материал для gamedev. Черт, большая часть одной из игр Rollercoaster Tycoon была сделана вручную в ASM.


3
Ты как бы противоречишь себе. «кодирование игры в asm» является полной противоположностью «кодированию игры в ruby» или некоторому другому действительно высокоуровневому языку.
Бобобобо

1

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

Это было на самом деле мое первое погружение в язык. Как говорили большинство людей, вы, вероятно, не добьетесь высокой производительности других языков, но если вы хотите запустить 2D RPG (или другую 2D-игру, на самом деле), то это, вероятно, один из самых сложных игровых редакторов, чтобы Помогите.


0

Ruby - хороший язык, но если честно, игры не совсем так. Если вы не хотите использовать C ++, но хотите что-то вроде Ruby, посмотрите Python. Для хорошей платформы Python вы должны проверить что-то вроде www.cocos2d.org/.


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

6
Это нонсенс. Язык Ruby не менее «для игр», чем Python.
Рикет

2
... ерунда. С тем же успехом можно сказать, что Lua не для игр.
Корнел Киселевич

2
Есть ли рубиновый эквивалент пигмея? Я бы не сказал, что один язык больше подходит, чем другой. Но было бы разумно сказать, что у python лучшие игровые библиотеки и сообщество разработчиков игр.
deft_code

У меня такое ощущение, что есть порт SFML для ruby.
Коммунистическая утка

0

Это зависит от того, какой тип игры вы заинтересованы в написании. Я использовал ruby ​​для написания AI-клиентов для нескольких игр, включая Diplomacy , poker и Lost Cities . Я считаю, что это очень дружелюбный язык для быстрого эксперимента с различными концепциями. С другой стороны, я не хотел бы использовать его для написания своего шутера в реальном времени - он просто не будет иметь нужную мне производительность.


0

Ваш вопрос слишком общий. Вы хотите просто написать какую-нибудь компьютерную игру в качестве хобби-проекта или хотите заняться инди / профессиональной разработкой игр? Будет ли это иметь графику? На каких платформах он должен работать?

В общем, Ruby подходит для хобби-проектов (кстати, моя любимая игра на Ruby Ruby Ruby Warrior ) и для разработки веб-игр, таких как Farmville. Есть даже определенный спрос на таких программистов, попробуйте гуглить что-то вроде: "ruby programmer social game".

С другой стороны, если вы хотите разрабатывать настольные или мобильные игры с графикой, Ruby - не лучший вариант. Рассмотреть возможность:

  • Библиотека Javascript, поддерживающая Coffeescript (ее синтаксис очень похож на Ruby)
  • Python - очень похож на Ruby, лучшие игровые библиотеки

0

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

Gosu - самая популярная (и активно поддерживаемая) библиотека для написания 2D-игр на Ruby. Он имеет базовую библиотеку C ++, которую он использует для повышения производительности и взаимодействия с базовыми библиотеками визуализации отображения, такими как OpenGL.

Что касается производительности, то реализация Ruby по умолчанию (MRI) будет работать нормально (я рекомендую последний Ruby 2.0 для лучшей производительности), но есть альтернативные реализации, которые имеют собственные потоки и альтернативные алгоритмы сборки мусора, такие как Rubinius, JRuby и т. Д. Если вы используете потоки, вы можете попробовать Rubinius, иначе MRI Ruby будет работать просто отлично.


-2

Я сказал Python, потому что он имеет большую базу пользователей и больше возможностей, когда дело доходит до фреймворков / библиотек для разработки игр. Совершенно очевидно, что у этого человека нет опыта в разработке игр, поэтому мне не имеет смысла рекомендовать использовать что-то вроде Ruby только потому, что это возможно.

Когда я работаю над играми, я использую C ++ с Lua, я не пишу свою игру на Visual Basic только потому, что она поддерживает мультимедиа. Я уверен, что все здесь слышали, как кто-то говорит определенные инструменты для определенных рабочих мест. Я уверен, что вы можете забить гвоздь обувью, но зачем вам это делать, если вы можете использовать молоток.


2
C ++ - хороший язык, но если честно, игры не совсем так. Если вы не хотите использовать ассемблер, но хотите что-то наподобие C ++, посмотрите C. Для хорошего C-фреймворка вы должны попробовать что-то вроде libsdl.org . (хорошо, это не совсем работает, потому что C ++ обратно совместим, но вы понимаете)
Ricket

Лол нет я не понимаю твою точку зрения Честно говоря, мне все равно, что ты говоришь, так что не беспокойся отвечать мне. Я просто пытаюсь помочь кому-то, а не спорить о легитимности языка программирования.
UnknownDevice

5
Суть его в том, что ваш первоначальный ответ не имел абсолютно никакого отношения к заданному вопросу. Вы утверждаете, что Ruby «не для игр», но это ВСЕ, что вы говорите. В этом нет особой ценности. Что касается того, почему OP захочет использовать Ruby, то совершенно ясно: это «единственный язык, который он знает очень хорошо». Это совсем не то же самое, что «только потому, что это возможно».
Neverender

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