🎨
Ruby の Processing Gem についての情報
東京Ruby会議12 の「ゼロからの、2Dレトロゲームエンジンの作り方」が面白かったので情報を集めている。特に OpenGL で互換APIを書いている processing gem が気になっている、Windows でも使いたい。
資料
-
ゼロからの、レトロゲームエンジンの作り方 - Speaker Deck
- レトロゲームエンジン Reight の中に processing gem がある。
Gem群
- A Drawing Engine using OpenGL. https://github.com/xord/rays
- A Graphical User Interface Tool Kit. https://github.com/xord/reflex
- A Simple Synthesis Library. https://github.com/xord/beeps
- Yet Another Processing implementation for Ruby https://github.com/xord/processing
- A game engine based on the Processing API https://github.com/xord/rubysketch
その下にさらに低レイヤーの C++ ライブラリがある。
- Useful utility classes and functions. https://github.com/xord/xot
Processing Gem の依存関係
xot, rays を内部で使っている。 reflex や rubysketch は確かに不要そうではある。
Processing Gem の Windows ビルド
現在挑戦中。
RubyInstaller+DevKit + msys2 + pacman glew, openal が必要。(processing だけでいいなら glew だけでもいけそう)
(2025-01-22 追記) pacman でインストールできる glew や openal は何種類かあるので注意。
RubySketch と Processing
Mac, iOS で動く Processing 互換の開発環境。
Mac があれば独立したアプリもリリースできるらしい。
(ここが重要) 内部では processing gem を使っていると思われるので Windows PC で processing gem で書いたコードは、iOS 上でも RubySketch 経由で同じように動かせるはず。
Processing と p5.rb
Windows PC で processing gem で書いたコードは、Web 上でも p5.rb 経由で同じように動かせるはず。
現状把握しているのは draw, update などがメソッド定義でなくブロック渡しになっているので、そこだけ薄いラップを書けばいける?
require 'processing`
alias _setup setup
alias _draw draw
alias _update update
# ここが p5.rb の main.rb 相当
def setup
end
def update
....
end
def draw
end
# ここまで
_setup { setup }
_draw { draw }
_update { update }
※ processing gem に関数定義モード、みたいなオプションを作ればいいのかも?
Discussion
はいそのとおりです!
ソリティアのアプリも Mac 上で開発して、そのまま iOS アプリにビルドして AppStore に出してる感じですー
実際その通りで、テストコードでは同じコードを p5.rb と両方で動かして、描画結果をピクセル単位で比較して互換性検証してたりします。詳しくは ↓ に書いてますので良ければ。
確かに、それができると良いですね!