Я автор ruby-sdl-ffi.Этот вопрос был доведен до моего сведения сегодня, поэтому я отвечаю на благо всех, кто все еще интересуется.
Основное отличие состоит в том, что ruby-sdl-ffi - это чистый Ruby-код, который обращается к SDL (и связанным библиотекам) через FFI (интерфейс сторонних функций), а rubysdl - это расширение, написанное на C, которое ссылается на SDL (и связанные библиотеки).У каждого подхода есть свои плюсы и минусы.(Очевидно, я считаю, что FFI - лучший подход, или я бы не стал писать ruby-sdl-ffi.)
Обе библиотеки предлагают схожие наборы функций, хотя есть некоторые различия (отмеченные ниже).Они могут одновременно выполнять 2D-игры с изображениями, звуками / музыкой и пользовательским вводом с клавиатуры, мыши и / или джойстика / геймпада.Их также можно использовать с OpenGL (через ruby-opengl или ffi-opengl) для создания 3D-игр с аппаратным ускорением.Оба могут использоваться в Windows, MacOS X и Linux (и, возможно, на других платформах), хотя Rubysdl работает только в MacOS X, если вы используете специальную оболочку интерпретатора Ruby с именем "rsdl".
Я не запускалникаких серьезных ориентиров, поэтому я не могу предоставить какие-либо точные данные о сырой производительности.У меня общее впечатление, что у rubysdl может быть небольшое преимущество в производительности, но они достаточно близки, чтобы производительность не была основным фактором при выборе между двумя библиотеками.
Вот как я бы суммировал плюсы и минусыдве библиотеки:
ruby-sdl-ffi
- Легче для пользователей установить гем.Его не нужно компилировать, поэтому пользователям не нужно устанавливать компилятор C или набор инструментов.
- Работает с MRI («обычный» интерпретатор Ruby), JRuby и, возможно, Rubinius.
- Никакого специального переводчика в MacOS X не требуется. Однако поддержка MacOS X может потребоваться обновить, чтобы она полностью работала на последних версиях MacOS X. (Apple продолжает что-то менять.)
- Ниже-уровень API, более тесно отражает библиотеки C.Это может быть хорошим или плохим в зависимости от вашей перспективы.
- В настоящее время имеет привязки для библиотек SDL, SDL_gfx, SDL_image, SDL_mixer и SDL_ttf.(По сравнению с rubysdl он добавляет SDL_gfx, но в нем отсутствуют SGE и SMPEG.) Добавление привязок для других библиотек довольно просто.
- Больше не разрабатывается и не поддерживается.У меня больше нет времени или интереса, но кто-то может вступить во владение, и я могу предоставить руководство.
- Несколько экспериментально и имеет некоторые острые углы.
rubysdl
- Более зрелый и отшлифованный, выдержал испытание временем.
- Лучшая поддержка ввода и рендеринга японского текста.
- Higher-level, более абстрактный API.
- Связывает библиотеки SDL, SGE, SMPEG, SDL_image, SDL_mixer и SDL_ttf.
- Требуется, чтобы у пользователей был установлен компилятор C для установки гема.Это может быть головной болью в Windows и MacOS X.
- Требуется, чтобы пользователи MacOS X запускали вашу игру, используя специальный интерпретатор Ruby "rsdl".Таким образом, насколько мне известно, он не будет работать с JRuby или Rubinius в MacOS X.
- Похоже, что он больше не разрабатывается и не поддерживается.