Статьи

Хорошо ли Ruby для разработки игр?

Долгое время казалось, что гегемония Flash непобедима на рынке онлайн-игр. Затем Apple объявила, что их (тогда) новое мобильное устройство — iPhone — не будет поддерживать Flash из-за проблем с производительностью. Это заставило разработчиков игр быстро находить новые альтернативы.

Для разработчиков приложений постоянно идет спор о том, какой язык лучше всего использовать для разработки игр. С одной стороны, им нужна простая среда, которая позволяет им использовать свое воображение и творческий потенциал для реализации своих идей вместо того, чтобы сосредоточиться на библиотеках функций и классах кода. С другой стороны, конечное приложение должно работать быстро и без сбоев, чтобы обеспечить наилучшее взаимодействие с пользователем, и должно работать на всех основных платформах.

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

Полный пакет библиотек под названием RubyMotion с отличными функциями и инструментами был опубликован для расширения Ruby для iOS, так что теперь вы можете легко использовать динамический язык Ruby для разработки игр для iPhone или iPad.

Хотя есть и обратная сторона. Когда дело доходит до производительности, безусловно, есть лучшие языки. Например, чтобы получить тот же уровень производительности, что и в C ++, нужно быть очень креативным и уделять много времени, когда дело доходит до Ruby. Но благодаря своей динамической природе и возможности компилирования в код Ruby для Flash или приложений iOS, Ruby дает разработчикам большую гибкость, которая позволяет творческому и опытному разработчику прекрасно справляться со своими языковыми ограничениями.

Еще один важный вопрос, который необходимо изучить, — существует ли необходимая технология для создания игр. Достаточно ли поддержки таких компонентов, как графика, воспроизведение звука и взаимодействие с пользователем? В Ruby есть все это и даже больше. Поскольку это язык с открытым исходным кодом, он постоянно развивается и меняется. Почти любое препятствие преодолевается тысячами программистов, которые превращают его в вызов и часто делятся своими выводами с сообществом All Ruby. Существуют также пакеты для быстрой и ускоренной поддержки OpenGL. Вы можете найти решения для 3D-игр с помощью G3Druby или мощной библиотеки Gosu для разработки 2D-игр.

Главной жемчужиной во всем этом является Rubygame, который предлагает независимую платформу мультимедийных библиотек, которая предоставляет все игровые функции простым и эффективным способом для программистов Ruby (Если вы хотите запустить Rubygame в Windows, я предлагаю вам загрузить и установить вверх зависимости от учебника Man With Code Rubygame , где вы также можете найти несколько простых видеороликов обо всем процессе настройки).

Когда наша замечательная новая игра будет готова, следующий вопрос — как мы можем охватить ее миллионами пользователей и как мы можем представить свое видение на их компьютере. К счастью, у нас есть готовые решения для этого. Например, iOS поддерживается через ранее упомянутое RubyMotion.

Но вам не нужно беспокоиться, если вы предпочитаете старый добрый Flash.

Существует компилятор с открытым исходным кодом, называемый ‘Ruby On Flash’, который компилирует ваш код Ruby в файл .swf. Это дает вам возможность перенести процесс разработки игры в среду, удобную для программиста.

Будучи разработчиком, работающим в игровой индустрии, позвольте мне продемонстрировать простоту Ruby (используя Gosu) с помощью простого скрипта «с нуля», который работает аналогично известным картонным скретч-картам, где спрятаны изображение или символ под покрытием. В онлайн-версии мышь берет на себя часть монеты, царапает покрытие и раскрывает значки. Здесь я просто

Вот как это выглядит:

require ‘gosu’
require ‘texplay’
class GameWindow < Gosu::Window
def initialize
super 200, 200, false
self.caption = «Scratch-off Sample»
# below we set up the image resources that we’ll use for the app
# your base image that will be hidden under the grey layer
@background_image = Gosu::Image.new(self, «a.jpg», true)
# simply grey to cover our first image
@grey = Gosu::Image.new(self, «grey.jpg», true)
# small pointer or virtual coin to scratch-off the coating
@pointer = Gosu::Image.new(self, «pointer.png», true)
@pos_x = 0
@pos_y = 0
end
def update
end
def draw
@background_image.draw(0, 0, 0)
@pointer.draw(mouse_x, mouse_y, 0)
a = mouse_x
b = mouse_y
@grey.paint{
circle a+5, b+5, 10, 10, :mode => :clear, :fill => true
}
#@background_image.draw(0,0,0)
@grey.draw(0, 0, 0)
end
end
window = GameWindow.new
window.show

view raw
gistfile1.rb
hosted with ❤ by GitHub

Вы можете видеть, что синтаксис Ruby допускает четкое назначение кода при выполнении некоторых относительно сложных графических функций.

Если у вас есть опыт разработки игр с Ruby, сообщите нам об этом в комментариях. Спасибо за прочтение!