2014-01-01から1年間の記事一覧

DirectSoundとRubyのプログラミング その4

なんとなく続き。どこまで続くのか俺自身にもわからない。 ポーリングとイベント 現状では適当なタイミングでバッファをチェックして、空いた部分に生成したデータを詰め込む、という動作をさせている。これをポーリングと言うが、DXRubyで使う場合は1フレー…

DirectSoundとRubyのプログラミング その3

なんとなく続き。 SoundTestをクラス化する 全体のコードはgistに置いておいた。今回はDirectSoundについては特に何もしてなくて、主にRubyに関する部分の修正となる。 これを全部説明するのは大変なので、ポイントに絞って順番に行ってみよう。

DirectSoundとRubyのプログラミング その2

なんとなく続き。気が向いたので書いてみた。 再生カーソルと書き込みカーソル DirectSoundでポーリングないしイベント受信でバッファを書き換えようとした場合、まずバッファ内でDirectSoundが使おうとしている領域をチェックしなければならない。と言うの…

DirectSoundとRubyのプログラミング

サウンドAPIは色々あるが、バッファをロックして書き込んで再生すれば音が出るという部分についてはどれも大きな違いは無い。WindowsVista以降ならWASAPIというオーディオAPIがあり、色んな機能があって優秀なのだが、このへんのOS上ではDirectSoundはWASAPI…

DXRuby1.5.17devリリース

とりあえずRuby2.1.0用をWikiに置いた。他のバージョン用のものはまた後で。環境まだ整備できてないし。 今回は目立つ機能追加は無いが、こまごまとメソッドの追加と、制限の緩和がメイン。詳細はreadmeの更新履歴を見てもらうということで。 Window.loopが…

DXRuby Advent Calendar 2014 : DXRubyの怪しげで不自然な挙動について語る

この記事はDXRuby Advent Calendar 2014の15日目です。14日目の記事はあおいたくさんの「ゲーム用GUIフレームワーク作った(作ったとは言ってない)」でした。どっちやねん。俺もDXRubyWSというウィンドウシステムを作ってはいるのだが、ゲーム用UIにも使える…

Procについて

RubyにはProcクラスという組み込みのクラスがあるが、例えばるりまのProcのところを見ると ブロックをコンテキスト(ローカル変数のスコープやスタックフ レーム)とともにオブジェクト化した手続きオブジェクトです。とか書いてあってさっぱり意味がわからな…

module Easing

ちょと前にDXRuby Advent Calendar 2014の記事を書いたのだが、やっぱり突貫工事で記事を書くとちょっと辛いものがある。1日ぐらい寝かしてからアップすればよかったか。と言っても指摘事項はほんとに厳しいところを突かれていて、例えばティアリング防止な…

DXRuby Advent Calendar 2014 : DXRuby機能リクエストにお答えする

この記事はDXRuby Advent Calendar 2014の5日目です。4日目の記事はしのかろさんのDXRuby機能リクエストでした。しのかろさんはDXRubyを使い込まれているようで鋭い指摘が多い。確かに使っていると「何でこれが無いのかな?」って感じる物なのだが、実は今ま…

Rubyによるリモートデバッグ

IDEとかでリモートデバッグするためのgemなどはあって、それを使えば便利で簡単にリモートデバッグができるようなのだが。 それはそれとして、その手のものを自分で作ってみるという興味本位の行動があっても特に問題は無かろう。さて、Rubyにはset_trace_fu…

Window.loopを複数置く

あと丁度1ヶ月でRuby2.2が出る。んじゃないかと思う。 そうするとDXRubyもそれに対応してビルドしてリリースしないといけないのだが、次はTypedData化しないといけなくなるのでそのままビルドするわけにもいかず。つっても警告はビルド時の話だと思うので問…

U25 Ruby“ネ申”プログラミングコンテストin島根

少し前の話になるのだけども、「U25 Ruby“ネ申”プログラミングコンテストin島根」というコンテストが名前のとおり島根で行われて、この最終審査会が10月11日にあった。 http://www.ruby2014.shimane-u.ac.jp/ この最終選考に残ったものの中に「MotionTool」…

SDL_mixerのラッパを考える その2

前回、SDL_mixerのChannelの問題点を指摘し、その解決法の一部を実装した。残っている問題はChannelに空きが無かった場合の処理である。それを作る前に少し検討しておかないといけないことがある。 効果音の重要度と処理方式 SDL_mixerではMusicとChunkしか…

SDL_mixerのラッパを考える

SDL2の周辺ライブラリのひとつ、SDL_mixerは各種フォーマットの音データを簡単に再生できる。その点では非常に扱いやすいのだが、再生した音の制御という点では非常に低レベルな機能しか持ち合わせていない。 sdl2rで実装したSDL_mixerの機能を扱いやすくラ…

DXRuby Advent Carendar2014だそうで

ここ。 http://www.adventar.org/calendars/345 TwitterやGithubのアカウントでログインできるのでネタをお持ちの方もそうでない方も登録して何か書いてやってくださいな。 俺も何か面白いネタがあったら書く方向で考えていく感じ。

sdl2rのそのままじゃないところ

一応、sdl2rはSDL2そのままの形でRubyから使えるというのが売りなのだが、そもそもがC用のライブラリであるだけに、どうしてもそのままでは困ったちゃんな部分があって、Ruby向けに修正しているところがいくつかある。そのへんを書いておこうと思う。

sdl2rの使い方

現在、Ruby用SDL2バインダのsdl2rをなんとなく作ってみている。 基本的にはSDL2の関数やマクロをそのまま実装した感じで、そのままだと困っちゃう部分に関してはちょこっとだけ手を入れている。SDL2のラッパなのでMacでもLinuxでもビルドできれば動くはずで…

SDL2の使い方

SDL2は日本語の情報があんまりなくて、SDL2そのままの使い勝手でRubyから使えますというライブラリを作っても、使える人は限られるのではないかと言うことで、基本的なことを書いておくことにした。とりあえずはおおまかな概念だけ。 関数の一覧および使い方…

手続き脳のためのラムダ式のはなし

ずいぶん前からメジャーなオブジェクト指向言語にラムダ式が導入されている。 俺がいる職場では未だに.net2.0なので使えないのだが、最近ちょこちょことヘルパーライブラリを作っていてSystem.Funcが使えたらなあーなどと思うことがよくある。職場の何人かに…

DXRuby1.4.1(Ruby2.1用)リリース

ビルドできて一通り動いているようなのでSourceForgeにアップしておいた。一番下にある。 https://sourceforge.jp/projects/dxruby/releases/ いつからか知らんけど見た目が変わっててわかりにくくなった。前からたいがいわかりにくかったけど。いずれはgem…

Ruby2.1.3が出たので今後を考える

Windows用のRubyインストーラであるRubyInstallerでRuby2.1.3がリリースされた。リリースされてしまった。Ruby2.1.3自体が9月19日リリースなのでつい最近のことだろうと思う。 http://rubyinstaller.org/downloads/ RubyInstallerはRuby2.1系について、テス…

CライブラリとRubyの不整合について

昨日、SDL2のRubyバインダを作ろうとして挫折したので、何が問題になったのかをメモ。 結論から言うと、SDL2のオブジェクトの寿命管理がC用の考え方で作られていて、Rubyで扱うためにRubyオブジェクト化した場合にGCによる解放処理との整合性が取れない。SDL…

DXRubyWS開発秘話

2013年7月26日、大阪に行ったときに暇つぶしにDXRubyWSを検討していたときの文章が出てきたので置いておく。 これで開発されたものがgithubにおいてある。 https://github.com/mirichi/DXRubyWS 見てみたら最初のコミットは7月28日であった。文章を書く前に…

C言語の変数とメモリとアドレスの話

Cの入門などでは変数の説明で箱をイメージさせることがたびたびあるが、ポインタのところまで来ると箱の名前だとか場所だとか住所だとか言われていまいちピンとこない。ポインタが理解できない一因はこの「箱のイメージ」なのではないかと思う。 変数とは言…

mrubyのVMざっくり解説

なんとなく、mrubyのVMの基本的なところを書いておこうと思ったので。誰かの参考になれば。 大きな仕様的なところは、 ・32bit固定長のバイトコードを解釈して動作する。 ・レジスタをスタックに確保するタイプのレジスタマシンである。従って、スタックの任…

DXRuby1.5.11devリリース

DXRuby1.5.11devをWikiに置いといた。 http://dxruby.sourceforge.jp/cgi-bin/hiki.cgi?%A5%D5%A5%A1%A5%A4%A5%EB%C3%D6%A4%AD%BE%ECInput::IMEの機能追加で、変換中の文字列や候補の一覧、数などを取得できるようにした。 通常、IMEの変換中文字列の描画はI…

mrubyのkhashとHashの高速化

mrubyカテゴリあったほうがいいかなーとか思うが、そんなに書くこともないからいらんかも。増えるようなら考える。 khashをどうにかして高速化できないかなーと細かい修正を入れてみて、ついでにHashが遅いらしいので書き込みを高速化してみたのでそれをネタ…

ocraで画像や音その他のファイルをexeに入れる方法

ocra による Ruby の EXE 化を見てもらえば終わる話なのだが。 ちょっと具体的にDXRubyで扱うリソースをまとめてみたのでそのレポートをば。 サンプル ここに置いておいた。解凍するとexeファイルが1個出てくる。これを実行するとサンプルゲームが動く。exe…

プリセット画像というアイデア

これは昔書いたかもしれんし、Twitterでつぶやいたかもしれんけど、DXRubyにプリセット画像を用意するという発想はずっと前から持っている。水視さんが手伝ってくれてた頃に思いついてたら迷わずお願いしてたはずなのだが、それが無いということはまあ、るび…

RubyInstallerのRuby2.0でRubyInlineとOcraを使ってexe化する

Rubyのコード内にCのコードを埋め込んで、その部分だけCコンパイラでコンパイルして拡張ライブラリ化し、呼び出す。これがRubyInlineの仕掛けである。Windowsでうまく動かないとか、Ocraでexe化するのがうまくいかないとか、色々あったが、最近のんは改善さ…