初心者向けと速さ

DXRubyは速さを第一に主張しないが、とりあえず速い。
最適化マニアが基本設計レベルから真剣に取り組んだものなのだから、そのぐらいでなくては困る。


ところで、ライブラリの実行性能はどういうときに役立つのだろうか。
ぱっと思いつくのは、とにかく派手なゲームを作る場合と、遅いPCで動かす場合だ。
Rubyが遅いのはあるが、1.8系でも現時点で結構なものが作れるぐらいは速い言語なのではないかと思っている。
速度的にRubyで間に合う程度の処理のはずが、ライブラリが足を引っ張って処理が間に合わなくなるというのは、ちょっとさびしい気がする。


それとは別に、検索してるとこんなものが出てきた。
BIGLOBEなんでも相談室より。
http://soudan1.biglobe.ne.jp/qa3851227.html
Ruby/SDLを使ってブロック崩しを作っていて、画面全体を描画し直しているから遅いという話である。
ライブラリが足を引っ張っている例と言うこともできるが、Ruby/SDLは使い方によって速くも遅くもなりそうで、きちんとした知識がないとまともに使えないのなら、初心者には厳しい。


上記の記事の質問者は、質問内容やコードから察するに初心者っぽい。
初心者が作るゲームってのは、激しい弾幕げーとか物理計算するシミュレーションとかそういうのではなくて、非常に簡単なものになることが多い。
ブロック崩しも大変よい題材だ。
俺としては、そういう簡単なものを作った程度で速度の問題が出てくる、というのが気に入らないのだ。
初心者が学ぶべきは、リアルタイムのゲームを動かす概念、各種判定や描画を行うという感覚、アルゴリズムなどであって、速く動かすためのコツではないのである。
最低限、最初に作るであろう程度の簡単なゲームぐらい、どんなコーディングをしてもサクサク動くぐらいじゃないと、初心者に余計なコトを刷り込むことにしかならないと考える。
無論、ちょっと凝ったものを作るレベルになってきたら、処理性能の限界と格闘することになるが、それは最初の段階ではないのだ。


上記記事では更新範囲を限定することで解決している。
DXRubyは基本的に全画面毎フレーム描画である。
用途によってはそこに弱点もあるが、とりあえずそれで十分な性能を出せているのだから、それでよいし、問題は無い。
サンプルのブロック崩しを実行してCPUの負荷を見てもらえば、俺がいいたいこともわかるんじゃないかと。