2014/01/10(金) [n年前の日記]
#2 [dxruby] STGっぽいものを作成中
自機画像もできたので、DXRuby を使って、横スクロールSTGっぽいものを作成中。
Sprite を使っていて、ちょっとハマったり。アニメパターンの最初の1フレームだけ、変な位置に表示されてしまって。
initialize() 中で super しか呼んでなかったのがマズかったらしい。super(x, y, image) までやらないとダメなのだな。…と思ったけれど、それでもやっぱり何かの拍子におかしくなるような。alpha、blend、angle、scale_x、scale_y、全部使うと、何かの拍子に変な位置に表示される。ただ、必ずいつでも起きるわけでもなくて。どんな条件で発生するのか、よく分からない。そのうち検証してみよう…。
Shader を使って背景をラスタースクロールさせたいなと思ったのだけど、HLSL とやらが、よく分からず。脳内イメージとしては、サンダーフォースIVのステージ5の宇宙面っぽい背景がやりたいわけで。
_Thunder Force IV HD Full Run (Long Play) No Miss (Progressive) - YouTube (14:00頃)
昔の2Dゲーム機って、ラスター本数分のスクロール値を格納するメモリ領域があって、その領域にCPUがあらかじめスクロール値を書き込んでおくと、後はハードウェア側でその通りにラスタースクロールしてくれる、てな感じだったのだけど。
そういうことを、DXRuby の Shader + HLSL でやれないかなと思えてきたり。そういう仕組みができれば、処理が変わるたびにHLSL側を弄ったりせず、Ruby側で配列内の値を生成・変更すれば事足りるはずで。つまり、HLSLの知識まで要求せずに済むだろうなと。たぶん、そういうクラスを作って、 require すればOKであろう予感。
ただ、HLSL側で配列相当を扱えるのかどうかが分からなくて。Shader/HLSLのサンプルの中に、ラスタースクロール関係のサンプルがあるかもしれないので、眺めてみないと…。
でも、もしかすると、今時のGPUなら、BG相当の画像を十数枚ほどそのまま重ねて描画しちゃったほうが速かったりするのかな、てな疑問も。
Sprite を使っていて、ちょっとハマったり。アニメパターンの最初の1フレームだけ、変な位置に表示されてしまって。
initialize() 中で super しか呼んでなかったのがマズかったらしい。super(x, y, image) までやらないとダメなのだな。…と思ったけれど、それでもやっぱり何かの拍子におかしくなるような。alpha、blend、angle、scale_x、scale_y、全部使うと、何かの拍子に変な位置に表示される。ただ、必ずいつでも起きるわけでもなくて。どんな条件で発生するのか、よく分からない。そのうち検証してみよう…。
Shader を使って背景をラスタースクロールさせたいなと思ったのだけど、HLSL とやらが、よく分からず。脳内イメージとしては、サンダーフォースIVのステージ5の宇宙面っぽい背景がやりたいわけで。
_Thunder Force IV HD Full Run (Long Play) No Miss (Progressive) - YouTube (14:00頃)
昔の2Dゲーム機って、ラスター本数分のスクロール値を格納するメモリ領域があって、その領域にCPUがあらかじめスクロール値を書き込んでおくと、後はハードウェア側でその通りにラスタースクロールしてくれる、てな感じだったのだけど。
そういうことを、DXRuby の Shader + HLSL でやれないかなと思えてきたり。そういう仕組みができれば、処理が変わるたびにHLSL側を弄ったりせず、Ruby側で配列内の値を生成・変更すれば事足りるはずで。つまり、HLSLの知識まで要求せずに済むだろうなと。たぶん、そういうクラスを作って、 require すればOKであろう予感。
ただ、HLSL側で配列相当を扱えるのかどうかが分からなくて。Shader/HLSLのサンプルの中に、ラスタースクロール関係のサンプルがあるかもしれないので、眺めてみないと…。
でも、もしかすると、今時のGPUなら、BG相当の画像を十数枚ほどそのまま重ねて描画しちゃったほうが速かったりするのかな、てな疑問も。
[ ツッコむ ]
以上です。