🎨

Ruby の Processing Gem についての情報

2025/01/22に公開
1

東京Ruby会議12 の「ゼロからの、2Dレトロゲームエンジンの作り方」が面白かったので情報を集めている。特に OpenGL で互換APIを書いている processing gem が気になっている、Windows でも使いたい。

資料

Gem群

https://speakerdeck.com/tokujiros/zerokarano-retorogemuenzinnozuo-rifang?slide=18

image

その下にさらに低レイヤーの C++ ライブラリがある。

Processing Gem の依存関係

https://rubygems.org/gems/processing/

xot, rays を内部で使っている。 reflex や rubysketch は確かに不要そうではある。

Processing Gem の Windows ビルド

現在挑戦中。

RubyInstaller+DevKit + msys2 + pacman glew, openal が必要。(processing だけでいいなら glew だけでもいけそう)

image

(2025-01-22 追記) pacman でインストールできる glew や openal は何種類かあるので注意。

https://x.com/tokujiros/status/1881880676968153419

RubySketch と Processing

Mac, iOS で動く Processing 互換の開発環境。

https://apps.apple.com/jp/app/rubysketch-processing互換の開発環境/id1491477639

Mac があれば独立したアプリもリリースできるらしい。

https://apps.apple.com/jp/app/ルビーソリティア-クロンダイク-トランプカードゲーム/id6450155271

(ここが重要) 内部では 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

tokujirostokujiros

Windows PC で processing gem で書いたコードは、iOS 上でも RubySketch 経由で同じように動かせるはず

はいそのとおりです!
ソリティアのアプリも Mac 上で開発して、そのまま iOS アプリにビルドして AppStore に出してる感じですー

Windows PC で processing gem で書いたコードは、Web 上でも p5.rb 経由で同じように動かせるはず。

実際その通りで、テストコードでは同じコードを p5.rb と両方で動かして、描画結果をピクセル単位で比較して互換性検証してたりします。詳しくは ↓ に書いてますので良ければ。
https://zenn.dev/tokujiros/articles/973815bce7afdc

現状把握しているのは draw, update などがメソッド定義でなくブロック渡しになっているので、そこだけ薄いラップを書けばいける?
※ processing gem に関数定義モード、みたいなオプションを作ればいいのかも?

確かに、それができると良いですね!