Долгое время казалось, что гегемония 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 |
Вы можете видеть, что синтаксис Ruby допускает четкое назначение кода при выполнении некоторых относительно сложных графических функций.
Если у вас есть опыт разработки игр с Ruby, сообщите нам об этом в комментариях. Спасибо за прочтение!