昼頃起床。なんか風邪気味。
OpenGLでプログラマブルシェーダーを使う為にあれこれやってました。
最初、GLEWを使ってDから呼び出しできるかと
色々試してみたのですが、どうにもうまくいかず。結局、GLEWのコードを参考にD言語に移植する
というハメになってしまいました。とは言え、やってる事は wglGetProcAddress()を使って、
関数へのポインタをひたすらくくりつけるだけという作業です(^^; テンプレートとか使えば
良い感じに書けるのかも知れませんが、イマイチ使い方が判ってないので、手書きで並べると
いう感じ。この辺、GLEWもやってる事は同じです。
で、ハマったのは、extern(Windows)宣言が抜けていた為に、リンクはできるけど実行すると
不穏な動きをするバイナリになったという点。これ、なんとかならないかなー?と毎度思います。
GLSLを使えるようになってみたのですが、GLSLの文法がよく判らなかったり。
文法というよりも、ビルトイン変数の保持する値が何を意味しているのかがよく判らないと
いう感じ?雰囲気的にはRenderManのシェーダーと似たものだとは思いますが....
今日一日、津波警報でどのTV局も ずっと日本地図が被ってたなぁ。
昼頃起床。
トリビアの泉のスペシャルが放送されるという事で、トリビアの種をいくつか
再放送してました。その中で初めて見たのが「防弾ガラスvsバズーカ」。
対戦車バズーカのRPGと対決って、どんだけー?って感じでした(^^;
でも、厚さ5cmの防弾ガラスは貫通してしまいましたが、厚さ10cmの防弾ガラスは
貫通せずに弾いてしまいました。防弾ガラス恐るべし(^^;;;; 一見アホっぽい実験のように
思うのですが、いざやってみると意外と驚くような結果が得られるのが、
トリビアの対決シリーズのように思います
(日本刀vsピストルとか、
日本刀vsマシンガンとか)。
そういや、「イッテQ」にも同じ事を感じたかも。
因みにスペシャルの本体は、まぁ普通でした(^^;;
コンビニのレジに表示されている製品ニュースみたいなので知った事。
ONE PIECEの最新刊が3/5に発売されるようなのですが、NARUTOも同じ日に発売される
ようです。で、何気にNARUTOも次に発売される単行本で50巻目だというのを初めて
知りました。
ちょろりコーディング。うまくいかず。
早めに帰着。
猛烈に眠くなって死亡。
早くも無く遅くも無く。
ちょろりコーディング。調べごと。
早めに帰着。
ちょろりコーディング。
久々にハスラーキング。相変わらずプロモードでは勝てません。ごっそりお金を
持って行かれるので、簡単に再戦もできないし。うーむ。
早くも無く遅くも無く。
ちょろりコーディング。
早めに帰着。
そういやMIDIファイルってどうやって作るんじゃろ?と思ってWeb検索してみたり。
音の事はさっぱりなのとMIDI楽器は特に必要性も興味も無かったので、MIDIっていうフォーマットの
ファイルがあるってくらいの知識しかありませんでした。X68k時代にTimidityで.MIDファイルを
.WAVにレンダリングできるというのに少し興味は持ったものの、そもそも入力となる.MIDファイル自体をどうやって
作れば良いのかさっぱり判らなかったので、興味は薄れてしまいました。
そういや話は逸れますが、Zmusicは .ZMSっていうMML記述のファイルを直接コンパイル&
演奏できたので、なんとなく触ってみようって気になったのですが、.MDXってどうやって
作るものなのかが、X68kを使っている間(10年間くらい)、結局わからなかったなぁというのを
思い出したり。
さておき、調べてみると方法は2つくらい。一つはX68k界で有名なGORRYさんが作成された
SPICEというシステム。独自MMLから.MIDを生成する事ができます。もう一つはビジュアルな
感じの編集ソフトを使う方法。これはDAW(Digital Audio Workstation)とも呼ばれるようで、
曲の入力から編曲まで全てが行える物を指すようです。
後者のDAWの一つである、「Music Studio」ってのを使ってみました。音の事はさっぱりな
人なので、インストールして起動してみたものの、さてどうしたものかという感じ(^^;
MIDIファイルを入力にできるようなので、取り合えず再生できるってのから始まって、
音階入力の方法くらいまではなんとなく判ったり。
面白いのは、VST(Steinberg's Virtual Studio Technology)というソフトウェア
シンセサイザーやエフェクターをプラグインにできるという所(VSTiと呼ばれたりするようです)。
例えば、MIDI楽器を使用するトラックを、VSTのプラグイン音源に切り替えれば、
ソフトウェアシンセサイザーを使った演奏に簡単に切り替えられます。
ただ、.MIDファイルはあくまでMIDI楽器を演奏する為のファイルフォーマットなので、ソフトウェアシンセ
と同居させる場合は、独自形式で保存する必要があるようです。
起きたら午後もいい時間。
ここ数日の実験で作ったoggのプレイヤーを「プロ遊」の下の「D言語で遊ぼう」に
置いてみました。ご参考まで。
フリーの音源素材を探していたら、意外とMIDIで置いてある場合があったり。
WindowsMediaPlayerでソフトMIDI音源を使って鳴らせるようなのですが、意図通りの
音になってるのかがイマイチ良くわからなかったり。そこで、古くからあるソフトウェアMIDI
のTimidity++を入れて聴き比べてみる訳ですが、大分様子が違うというのは判るものの、
どちらが正しいとも言えず。どちらも正しく無い可能性もある訳で、うーむと思ったり。
起きたら午後もいい時間。
homeのムイムイ客船に、ドミンゴレースというミニゲームが追加されました。
ロコロコのゲームに出てくるドミンゴという鳥をモチーフにしたキャラクター
による、何故かの水泳レースです(^^; ムイムイと4種のドミンゴの計5匹で客船の
周りを一周泳ぐので、その一着を予想するというゲームです。初めて見た時、泳いでる様を
足の方から見たので、なにやらアバターが妙な服を着て泳いでいるのかと思いました(^^;;;
オッズがあるので、それに対してピコリを賭けるという感じ。二度ほど賭けてみたのですが当たらず(^^;
レースは1時間毎開催なので、次のレースまで結構待たされる感じです。10分とか
15分毎くらいだと、良いのになーと思ったりも。
そういや、以前ムイムイ客船のラウンジに
行った後にロコアイランドに行くと、ジュークボックスの音楽再生が止まるという
不具合があったのですが、それが直ったみたい。
そういや「世界一受けたい授業」を途中から観たのですが、テレ東アナウンサーの
大橋未歩が出ていたり。なんでだ?
D言語でWindowsアプリを作るのに、WindowsAPI
プロジェクトのWinAPIラッパーを使用しているのですが、久しくアップデートしてなかった
ので、アップデートしてみたり。ところがリンクでエラー。
調べてみると、どうやら以下のような記述がダメっぽい。
struct OPENFILENAMEW { DWORD lStructSize = OPENFILENAMEW.sizeof; HWND hwndOwner; HINSTANCE hInstance; LPCWSTR lpstrFilter; LPWSTR lpstrCustomFilter; DWORD nMaxCustFilter; DWORD nFilterIndex; LPWSTR lpstrFile; DWORD nMaxFile; LPWSTR lpstrFileTitle; DWORD nMaxFileTitle; LPCWSTR lpstrInitialDir; LPCWSTR lpstrTitle; DWORD Flags; WORD nFileOffset; WORD nFileExtension; LPCWSTR lpstrDefExt; DWORD lCustData; LPOFNHOOKPROC lpfnHook; LPCWSTR lpTemplateName; }
早めに帰着。
oggのプレイヤー。ファイルをファイルダイアログでオープンしたら演奏し始めるという
感じだったのを、ファイルをドラッグ&ドロップできるようにしてみたり、一時停止
ボタンや音量コントロールを追加してみたり。
home。シアターで「イヴの時間」というアニメの公開が始まっています。
元はインターネット上で公開された全6話(各話15分)のOVAのようです。
それを元に制作した劇場版が今年の春に公開されるようで、その連動イベントという位置づけです。
同期イベントなので、1時間毎(一日24回)の公開になってます。1話は1週間公開されるようなので、
1ヶ月半の長期イベントになる感じ。1話目は世界観の説明をした所って感じで、これから
どうなるのかが楽しみです。
眠くて死亡。
早くも無く遅くも無く。
homeに色々投下されていたり。
ちょろり調べごと。
早めに帰着。
ちょろりコードの整理。
早くも無く遅くも無く。
oggプレイヤーの続き。-mno-cygwinビルドするとハング状態になる件を調査。
調べてみると、どうやら ov_* 関数を実行するコードを含んだオブジェクトファイルを
リンクすると、ハング状態に陥る事が判ったり。ハングに陥っているのは、
Windowのメッセージループを終了して、phobosのGCが後始末をしている部分
でした。なにやらlibogg、libvorbisのビルドの仕方がマズイのかなぁ?
どうやら、C言語で書かれたHelloWorld的なプログラムでも、ov_*を含んでリンクすると、
ダメだったり。ライブラリがやっぱり怪しい感じのようです。そんな訳で、
liboggとlibvorbisを再ビルドしてみることに。この時、configureで--host=i686-pc-mingw32
を指定すると、コンパイラにi686-pc-mingw32-gccが使用されます。これを、
「CC='gcc -O2 -mno-cygwin' ./configure --prefix=/usr/local/gdc_svn2 --host=i686-pc-mingw32 --build=i686-pc-cygwin」
みたいな感じでコンパイルしてみたり。liboggもlibvorbisもどちらもエラー無くビルドできたので、
make install。すると、正常に終了するようになりました(^^; ついでに
try{}catch{}のcatchブロックでMessageBoxを開こうとするとアボートしてしまう
問題も同時に解決。ライブラリが怪しかった為、リンクはできても実行で
不具合が出たという感じだったのでしょうか。そんな訳で一応の解決を見たり。
ふぅ。
早くも無く遅くも無く。
取り合えずコマンドラインでOggを鳴らせたので、Windowアプリにしてみたり。
ところが、oggとは関係無い所で色々とつっかかったり(^^;;;
一つは、-mno-cygwinビルドをすると、実行ファイルは出来て実行もできるのですが、
閉じようとするとハング状態に陥る(CPU使用率が100% になってしまう)。ハング状態
になるので、原因がイマイチ掴めず。-mno-cygwinビルドをやめると正常に終了できるので、
ひとまずそれでデバッグしてみたり。
もう一つは、ファイルのオープンに失敗した時、例外をcatchしてMessageBoxで
エラー表示しようとしたのですが、何故か try{}catch(){} のcatchブロックの
中でMessageBoxを開こうとするとアボートしてしまう。catchブロックの外で
MessageBoxを開けばOK。んー、なんでだ?
昼前起床。
OpenALのBufferをキューイングしてストリーム再生するコードは、Webで見つけたものを
参考にしたのですが、そのコードはBufferを開放せずに割り当て続けながら再生
する為、曲が進むとどんどんプロセスサイズが大きくなってました(^^;
で、ここがなんだかOpenALの面倒臭いところなのです。alGenBuffers()で割り当てた
Bufferに、alBufferData()でPCMデータを入れるのは良いのですが、それが
できるのは一回きりで、再生が終了したBufferを使い回すという事はできないようなのです。
なので、使い終わったらalDeleteBuffers()で開放して、またalGenBuffers()で
新しいBufferを割り当てるというのを繰り返す必要がありました。
あと、vorbisfileライブラリのov_read()は、引数で指定した量のPCMデータを取り出す
のではなく、指定した量を上限とはするものの、一回のov_read()実行でどれだけの
量が読み出されるかは、不明という感じのようです(サイズに8KBを指定しても、1KB〜8KBまで
色々になりました)。なので、例えば再生以外の処理時間が長い場合、その期間内に
OpenALのキューイングしたBufferを使い切ってしまうと音が途切れるのですが、
それを回避する為に、Bufferのサイズを大きく(つまり長い時間再生するBufferにする)しようと
してもも、うまくいきませんでした(どうやってもov_readが8KBまでしかデータをくれない為)。
なので、キューイングするBufferの数を多くして(つまり短い再生をするBufferを沢山キューイングして)、
途切れないようにする必要があるようです。こうなるとループ再生とかもなんだか
面倒臭い感じで、どうしたものかと考え中。
昼頃起床。
ハスラーキング。ちっとも勝ち続けられず。的球を外すよりも、手玉が
間違ってポケットインする率が高いのは気のせいか?
ほったらかしになっていたoggファイルの再生実験をしてました。
ファイルからのストリーム再生は、C言語ならばvorbisfileのライブラリを使えば
簡単にできるのですが、外付けでFILE構造体を使用できなくてはならない為、
D言語から使おうとするとちょっと面倒臭い事になります。それでほったらかしに
なっていたのですが、メモリに読み込んだoggファイルイメージからもvorbisfileを
使って読み込みができるという事を知って、実験していたという次第。
具体的には、ov_callbacksという構造体の、read_func, seek_func, tell_func, close_func
というメンバー変数に、それぞれ自前の関数ポインタを指定します。ov_open_callbacks()を
使って、コールバックを使ってファイルオープンすれば、メモリ上のoggファイルイメージ上を
走査できるという感じです。
途中色々ハマり所もありましたが、ひとまず oggをlibvorbisfileを経由してデコードし、
OpenALで音を出す事ができました。まだ実験コードなので、ogg再生クラスとして
再実装しないと使えなさげ。
と、一通り実験を終えてから、vorbisのソースアーカイブに含まれているdocを読んでみると、
ov_fopen()なるFILE構造体を外付けで管理しなくても良い関数があるのを知って愕然としたり。
先に読めよって感じでした。Webを検索して先に使い方を探るのが癖になってしまってて、
イカンイカンと反省したり。
早めに帰着。
ちょろりコーディング。
ハスラーキング。勝ったり負けたり。
昼頃起床。
ハスラーキング。ちっともお金が貯まりません。
そういや、オンラインでも何度か対戦してみたのですが、
「一緒に遊んだプレイヤー」には何故か登録されない模様。
早めに帰着。
PS®Storeのアーカイブスシリーズに「センチメンタルグラフティ」が来ていて
驚いたり。確か、セガサターンで発売されたゲームだったと思うのですが、
PSでも発売されていたとは知りませんでした。2001年発売だったようなので、
色々とほとぼりが冷めた後に移植されたという感じでしょうか。
Wikipediaを見てみると、何気に続編が発売されていたり
したようです。ゲームがなかなか出なかった代わりに、イラストを使った
グッズの方がバカ売れした、新手のキャラクター商法
(狙った訳ではなくて、結果的にそうなったのでしょうけど)だったと思います。
ゲーム中の絵がイラストと違ってて大騒ぎになったり、ゲームの内容も
色々な意味で切なかったりと、話題に欠かなかったように思います。
Wikipediaに載っていた、ゲームが出る前にゲームの内容を勝手に想像して
攻略するという攻略本。初めて存在を知ったのですがバカ過ぎます(^^;;
寒さで急速に死亡。
早くも無く遅くも無く。
ハスラーキング。驚くほど負けたり。
気持ち遅めに帰着。
homeでライアーゲームの映画連動で、毎日クイズが出題されています。
今日の問題は、
5本のクジの中に1本当たりクジがあります。これを二人で順に引いたとします。 人物A: 先に引いた方が当たる確率が高い! 人物B: いやいや、後で引いた方が当たる確率が高い! さて、答えは? [0]どちらとも言えない [1]先に引いた方が当たる確率が高い [2]後に引いた方が当たる確率が高い
: 女: 確率の問題じゃん。 男: 50%? 女: ちがうよ。最初は1/5で、次は1/4。 女: だから、後から引いた方が当たる確率が高いのです 男: じゃぁ、答えは2という事で 男: 他に行かない? 女: いいよー
昼前起床。
ハスラーキングにはまったり。対comのゲームは何度かやってれば勝てるのですが、
チャレンジゲームに全く歯が立たなかったり。例えば、15個のボールをブレイクショット
から一度も外さずにポケットに入れ続けるとか、ランダムに指定されるポケットに
入れ続ける(外したり違うポケットに入るとそこでゲーム終了)とか、テクニックで
カバーできる限度を越えている感じです(^^;
ビリヤードのゲームは、ファミコンディスクシステム用に出ていた、コナミの「エキサイティングビリヤード」
を延々とやっていた記憶があるのですが、ハスラーキングと記憶にあるエキサイティングビリヤードとを
比べると、随分と進化したものだなぁと思います。
個人的に一番進んでいると思うのは、COMの思考時間が短くなっている点でしょうか(笑。
しかしながら、エキサイティングビリヤードのCOMは、長考後に 引き玉やらスピンに加え、
更にクッションに手玉を当てて的球をポケットするとか、なかなかアグレッシブなショットを
繰り出していたのは侮りがたしと思います。
ビリヤードの玉の動きは計算で求められるのと、物理や数学の基本的な要素を色々と
含んでいるので、プログラムの例として時々挙げられたりしてました。でも、実際には
三角関数やら浮動小数点やらが使えないと、なかなかに面倒臭いプログラム例でもあったように
思います。ファミコンでは浮動小数点演算も三角関数もハードウェアサポートは
一切ありません。こうして思うと、対COMの無いゲームにするだけでも大変なように
思うのですが、手玉にスピンをかけられるのを込みで最適解をCOMが求めていた
というのは、何気にスゴイことだったかも。
因みに、ナムコのファミコンカセットのビリヤードゲームである「サイドポケット」は
やった事無いのですが、今では当たり前の機能である バウンドガイド が出るのが良さげ
でした。ポニーキャニオンのルナーボールとかも、毛色の変わったビリヤードゲームとして
面白かったと思います。
homeのアイマスイベントも本番最終日。見事に時間通りに始まらなくて、結局2時間遅れ
になりました(^^; エクストライベントもラウンジ再読み込みを要求されたりと、
すったもんだした感じでした。TANEの場合は、始まらなくてもほっぽらかしにして、TVを観たり
と違う事をしてられるのですが、これを見る為だけにログインしている人にしてみれば、
流石に時間泥棒になっていると言わざるを得ない所かも。
今回、イベントの行われるラウンジ(アイマスラウンジと言う事にします)に行くには、
ホームスクウェアの自動販売機を操作する必要がありました。
でも、この方式はあまり良く無いように思いました。と、いうのは、アイマスラウンジ
のインスタンス(空間の実体)を新たに生成する為に、必ずスクウェアラウンジのインスタンスを
生成する必要があります。つまり、人が短時間に大移動すると、一時的ではあるものの、
サーバ上にはスクウェアラウンジとアイマスラウンジがそれぞれ一つ(計二つ)ずつ生成される事に
なります。すなわち、それぞれ「イベントに参加する人数/64(1ラウンジに存在できるアバター人数)」個
のインスタンスが生成されるという事になります。もし、直接アイマスラウンジに
行ける、もしくはトロのラジオ体操イベントのようにスクウェアで直接イベント開催すれば、
ラウンジインスタンスの数は半分で済むという事になります。2倍のラウンジインスタンスが
生成される事が問題なのか?という点なのですが、ラウンジ再読み込みを行ったとき、
少し人の流れをスクウェアで観察していたのですが、物凄い勢いでスクウェアの初期入り口
から透明人間がが沸いて、そのまま自動販売機になだれ込む状態になってました(^^;
どれくらいのラウンジインスタンスが生成されたのかは、運営している人にしか判りませんが、
尋常では無い数のインスタンスが生成されていたのじゃないかな?と思われます。
今のhomeって、恐らくそこらのネット対応ゲームなどとは比較にならないくらい、大量の人が
ログインしているように思うのですが、実際どのくらいの規模になっているのか、
興味のあるところです。
起きたら午後もいい時間。
homeでアイドルマスターのイベントを見ていたら。イベントの途中で突然
アクシデント表示になり、イベントが中断したり。3曲目が始まるのかと思ったら、
いきなり格納。てっきり演出かと思ったら、ライブは終了しましたのスクリーン
表示がされて、マジアクシデントだと気づいたり(^^;
すると、次のライブ開始が30分後に設定されて、どうやらリカバリー再演待ちが
始まったり。ほったらかしにして、再び30分後のイベントを見たら、また
同じ所でアクシデント発生(^^;;;; イベントデータの読み込み
が完了しているのに、途中でダメになったりするか?と思ったりも。実は、
イベントスクリプトがバグってたのかも。まぁ、こういうのも込みでhomeの
イベントという事で。
早めに帰着。
昨日のリワードTシャツがどっかいった件は、今日homeを起動したらリワード
取得できました。なにかしらの整合チェックを行っているのかなぁと思ったり。
そんな訳で、うまく無いって事はありませんでした。
「崖の上のポニョ」を観たり。浸水した辺りから何の話だかよく判らなくなりました(^^;
手描きで32万枚の動画って計算合ってる? 30fpsで約3時間。1時間分くらいカットになってる
事になるような?350枚/日で絵が出来てるってのはスゴ過ぎる物量のように思います。
でも、着色はCGでやってる模様。流石にセルでこの規模は無理げかも(^^;
「ハスラーキング」というPS3のオンライン販売ソフトを買ってみたり。1000円也。
最初のチュートリアルをやってる最中に、フレンドにオンラインに誘われてみたり。
全く操作がおぼつかないのですが、ガイドが出るので思ったよりもイイ感じの
ショットが突ける感じです。ジャンプボールとかマッセもガイドが出るので、
大技も結構イケます。気のせいかも知れませんが(^^; 久々のFull-HD画面で、
レイトレのようなツルツルのボールや グローバルイルミネーション風の柔らかい
影/シェーディングが良い感じです。
早くも無く遅くも無く。
homeのムイムイ客船ラウンジで、ピコリでゲットできるリワード交換所が
あります。ちょいと交換を行ったところ、取得最中にネットワークが切断されてしまったり。
結果として、リワードのTシャツが消失したまま、交換メニューは取得済(メニュー選択できない)
の状態になってしまったり。うーむ。PS®Storeを介する方式のリワード取得はかなり
頑丈にできているようなのですが、homeだけでやり取りが行われるリワード取得はどうにも
穴があるようでうまくない気がします。
早めに帰着。
homeで行われているアイドルマスターのイベントですが、なんだか時間通りに
始まらない事が続いているようです。回線の遅い人はイベントダウンロードが間に合わない
とかで、それに対応する為にタイムアウト時間か何かを調節をしているようなのですが、
その調節のせいでおかしな事になっているような気も。
あまりの眠さに急速停止。
早くも無く遅くも無く。
ありえへん世界に、マンガ家ののむらしんぼ氏が出ていたり。
「つるピカハゲ丸」よりも、「とどろけ!一番」の方がど真ん中なTANEですが、
関ジャニ世代だとつるピカハゲ丸がど真ん中という世代かも。
ハゲ丸以降は泣かず飛ばずなようですが、いまでもマンガ家として活動している
ようで。
早くも無く遅くも無く。帰り際は雪が降っていたり。寒さを通り越して手が痛かったり(^^;
ちょろりコーディング。