2009-04-01から1ヶ月間の記事一覧

DXRubyプロジェクトWiki

あんまり整理できていないまま、思いつくに任せて書いているために、構造がごちゃごちゃしてきているよーな気がする。 でもあれを手直しするのは面倒だから、まあいいか、みたいな。 基本的に、DXRubyは俺用のお手軽ライブラリであるからして、原則としては…

ライブラリのパターン

Rubyに限らず、なんらかの機能を提供するライブラリにはいくつかのパターンがある。 大きくわけると3つ。 (a)作るのが面倒なものを、簡単に使えるようにして提供する。 (b)その言語だけではできないものを、他の言語で実装して提供する。 (c)やろうと思えば…

オブジェクト指向として正しいはRubyとして正しいか

例えばRubyでSingletonのクラスを作る。 Singletonモジュールをインクルードすれば作ることができる。 インスタンスを1つしか生成できないように細工されたクラスだ。 ここで一つの疑問がでてくる。 インスタンスが1つしか無いなら、そもそもそれはクラスで…

月間Wiki編集順位

SourceForge.jpの月間Wiki編集頻度が7位になっていた。 編集の内容にかかわらず、回数だけの順位だ(と思う)から、俺みたいにしょぼい更新をコツコツするタイプに有利である。 まあ、順位が高いからと言って表彰されたり賞品もらえたりするわけでもないから…

そして高さが加わる

なんだかタクティクスオウガみたいになって(゚∀゚)キータ 絵がみにくいから縁取りを入れてみた。 これもプログラムで生成したデータ。 テキトーに生成した絵でも、こんなふうにすると見栄えがよくなった気がするから不思議だ。 こういうプログラムは作ってて楽し…

高さデータ

高さマップも作って水の部分だけ低くしてみた。 左上に微妙に表示されてる小さい数字はFPS。 「2」とか出ている。やばい遅さだ。 ほんとに2FPSなのかと言うと、計算が怪しいから信用はできないが、とにかく重いのは確かだ。 32*32サイズの絵を表面だけで1000…

ちょっと本格的

何を思ったのか気がついたら妙に気合の入ったマップエディタが出来上がっていた。 左右に90度回転、土地の上げ下げ、右クリックでスポイト機能を作りこんでみた。 ついでに砂地も追加。 ここまで作っていながらスクロール機能は無い。 なんて中途半端な。 CP…

歳月

ずっと昔、C言語によるDOS用ゲームプログラム解説サイトを作っていた。 とっくに削除しているから、いまは検索しても出てこない。 微妙にリンクが残っていたりするが。 主にシューティングゲームの作り方を初心者向け記事として書いていて、基本的なアルゴリ…

棒人間デザイナー

いままでになくくだらないソフトを作り始めた。 名づけて棒人間デザイナー。くだらないクセに結構難しい。 これはお絵かきツールではなく、関節を軸にパーツをくるくる回したりできて、できあがったデータは座標配列として出力される。 用途はもちろんDXRuby…

Star RubyとSDLと、プロジェクトにまつわる話

うーん、勢い余って熱くなりすぎたような気がする。反省。 はじめてトラックバックもらって嬉しかったんだけど、送り方がわからない。 そして引用の書き方もよくわからない。 はてなに不慣れっていうか、ブログに慣れていない。 こんな感じかな・・・ うーん…

まじめに最適化を考える

ある機能に限定して高速化をすると、その機能を使うソフトに限定して高速化される。 ボトルネックを解消するのは正しいアプローチだが、仕様の変更や追加が伴うなら、その機能がどれだけ使われるのかという分析が前提である。 仕様の変更も機能の追加もしな…

リソース集中の落とし穴

世の中のプロジェクトの中心的な技術者が一同に集まれば、サイコーなものができるかというと、そうではない。 それには色々と問題点があるのだろうが、今回は逆に、分散したほうがいいものが作れるのではないか、ということを考えてみる。 競争すれば刺激に…

簡単なものを簡単に作るということ

俺がDXRubyを使うと、例えば簡易マップエディタ程度なら、絵を作る部分を除けば15分ぐらいでできる。 これはもちろん、DXRubyを作ったのが俺で、どのように動くのかをすべて把握しているからだ。 そういうのはとても大事なことで、簡単なものを簡単に作れる…

ProjectDXRuby統計情報から考察

DXRubyのプロジェクトページのページビューが毎日、少なくても200前後、多いと500ぐらい増えているんだけど、これもブログのページビューと同じで、そんなに見てる人がいるはずなくて、何かが自動で見に来てる分も含まれているのだろうな、と思う。 いままで…

なぜDXRubyなのか

プロジェクトWikiに、「なぜDXRubyなのか」という記事がある。 わざわざ文字数をかけて、どういうものを目指してDXRubyが作られたのか、どういった人に使ってもらいたいのか、と、さらにそれを説明する理由まで含めて説明している。 なぜDXRubyか、という話…

マップエディタ

Wikiで新しい記事を書こうと思って、それ用のプログラムを書いていた。 簡易マップエディタ。 マップチップの絵がダサいのは俺が描けないからであって、DXRubyの機能がしょぼいせいではない。 ついでにソースも。 # 簡易マップエディタ require 'dxruby' # …

快挙

Googleでdxrubyって入力して、候補に出てこないのはしょうがないとは思うけど、「もしかしてfxruby」って出なくなった。 これはすごいことだ。 でも検索結果は誰かが取り上げてくれた、とかじゃなくて、RSSリーダーとかアンテナとかがSourceForge.jpをひっか…

MMLでピコピコ

なんとなく音が鳴りはじめた。 かなり変だが、一応、音階とテンポ、ボリューム、オクターブなどの指定は通る。 長さが微妙なところで、MMLの&を使うところが難しい。 テンポ絡みで、ブレゼンハムっぽい方式を採用してみたところ、これがなかなかうまくいかな…

Rubyに絡んでいる人たち

現在、Rubyになんらかの形で絡んでいる人には、ある切り口でみると、大きく分けて2種類の人がいると言える。 それは、オープンソースの世界に馴染んでいる人と、そうでない人だ。 いくつか具体的な例を挙げるなら、 ・Rubyは自分でコンパイルして使うもので…

サンプルシューティングのDXRuby0.0.6対応とRubyist

メソッド変更で動かなくなっていたところを修正した。 新機能を有効に活用できればいいのだろうが、もちろんそんなアイデアもやる気もない。 ステージデータやらなんやらを変更して、敵の数を大幅に増やしてみた。難易度超アップ。 右上にFPS表示を追加しと…

高速化

サンプルに突っ込んだdot.rbが遅い。 うちの環境でたかだが900ほど点を動かすだけで処理落ちする。 2000のスプライトが動くはずなのだが。 テクスチャのロック・アンロックに時間がかかるとばっかり思っていたが、実験的にlock、unlockメソッドを追加しても…

高速化の結果

やっぱり仕様がごちゃごちゃするのは好きではないから、compareメソッドを追加してみた。 座標と色配列を渡すと、比較してtrue/falseを返す。 こうすれば、色配列はあらかじめ作って定数にでも入れておけばいいし、メソッド内で配列を生成する必要もない。 …

Wikiの記事などを書いてて思ったこと

このブログの記事も、DXRubyプロジェクトWikiもそうだが、基本的にソースをベタっと貼るようにしている。 プロジェクトホームページの領域を利用すればスクリプトのファイルそのものをダウンすることもできるわけでが、いまのところはそのようにするつもりは…

ペースダウン

休み取ったおかげでハイペースで作ってきたけど、0.0.6リリースしたのでちょっとペースダウン。 Wikiのほうの情報の充実や、サンプルの書き直しと追加に手をつけよう。 ほんとはWikiで記事を書いて、きちんとまとまったらプロジェクトホームページに移動した…

インストールされてないフォントを使う機能

フリーのフォントってあるけど、フォントのファイル自体の再配布は禁止とかあるじゃない。 画像にして使うなら再配布可能みたいな。 たとえば、ゲーム内で使う文字をテキストに吐き出しといて、それを入力して、使うフォントを画像に展開、大きな画像ファイ…

FM音源の理屈

詳しいことはわからないが、概要など。 FM音源っつーのは、ある波形にたいして別の波形を入力して、元の波形の周波数を、入力した波形により修正する、つまり周波数変調の機能を持った音源だ。 えらい人が編み出した理論をYAMAHAが頑張って研究して製品化し…

成功している人とできない人

本屋さん行くと、成功しちゃった人の秘訣やらなんやらが書いてある本が並んでたりする。 ああいうのが参考にならないのは、成功できる人ってのは成功するための最低条件を生まれつき持っているからであって、それを持っていない人にとっては絵に描いた餅でし…

MMLを解釈して再生するロジック

DXRubyのSoundEffectを利用して、ファミコンの音楽を作れるかしらん。 と思って、いろいろと考えている。 はてなMML記法を使えば既にそんなことできるわけだが、自分で作るというプロセスが目的であって、それで何かを再生することにはそんなに興味は無い。 …

ストリーミング再生を考える

DXRubyではサポートしていないが、DirectSoundにはストリーミング再生というものがある。 サウンドバッファをループバッファとして確保し、再生しながら再生し終わった部分をロック、書き換えという荒業を行う機能だ。 ゲームで使いそうな効果音でDXRubyがサ…

Rubyの終了時処理

DXRubyでは、DirectXの基本的なインターフェースを初期化の時に取得して、Rubyのオブジェクトを生成するときに、それぞれ個別に必要なインターフェースを取得するようにしている。 で、GCにより解放されるタイミングで、個別のほうを解放して、Rubyの終了時…