神代クロ のすべての投稿

ケーキを食べる

5b07d521.jpg雨の中、ケーキを買ってきたよ。

最近はケーキ食べる男を甘党男子と言うらしい。草食男子とか弁当男子とか、分類するのが流行ってるのかな。

分類して単純化するのはシステム設計の基本だけど、これは女性視点からの一方的な分類だからなぁ。と、思ったんだけど、甘党男子という言葉が出来てからケーキバイキングに行く男が増えたとか?

ともかく、たまにケーキ食べると美味しいね。

六本木でランチミーティング

今日は取引先の人と六本木でランチミーティングです。

行ったお店ではオーストラリアフェアをやっていたので、それを頼みました。変わった肉があるなぁと思って食べていると、取引先の人が小声で「それはカンガルーの肉だよ」と教えてくれました(なぜ小声)。あっさりした感じの美味しい肉だったよ。

食べながらビジネスの話を色々としたけど、不況のせいで思わしくないね。

あと前に他社に横取りされたサイトの事を聞いたけど、その会社からかなりの金額を請求されてるとの事。大して作業が発生する訳でもないのに、社員数人が食ってける程の料金を取れるなんて、楽な仕事でいいなぁ。

その会社より安くて良いサイトを作れる自信はあったんだけどね。取引先の人と、改めてビジネスは人脈だなぁと嘆いたよ。

ま、過去の事を気にしてても仕方ない。新たなビジネスを目指して頑張ることにしましょう。

Windows7(RC)を実機に入れようとしてみる

前回はVirtualBoxでWindows7(RC)を試しましたが、今回は実機で試してみる事にしました。

押入れに古いデスクトップが2台余ってたので、そのうちの1台に入れてみます。Windows7をDVD-Rに焼いてクリーンインストール。時間はかかりましたが問題なく完了。

でもよく見るとウィンドウが半透明になってない。ハードウェアアクセラレーションが無効になってました。GPUオンボードだからなぁ…いちおうドライバを探しましたが2000とXPのしか見つからず。やはり古いのはダメか。ちなみにCPUもCeleronDで当時でも非力だったんだよな(汗)

仕方ないのでもう1台を持ってきて電源オン。するとピーという嫌な音が…BIOS死んでるじゃん。インストール以前に立ち上がりませんでした。こっちはPentium4でGPUも載せてたのに…

それぞれのパーツを持ち寄ろうにも、1台目のPCはミニパソコンなので分解も拡張もできず。あとノートPCが1台余ってるけど6年前のだから確実に無理そうだ。

そんな訳で試せませんでした。自作ゲームの動作チェックをしたかったのに残念。

PhpTiddlyWikiを導入する

3763ac1f.jpg前にも書きましたが、オンライン自分メモ用にKamiWikiを使っています。ダブルクリックで入力画面が出るのが手軽で良いです。ただもう4年前に更新が止まってるんだよね。せめてHTML表記かWiki表記が使えれば良かったんだけど。

そこでKamiWikiの元となったPhpTiddlyWikiを使うことにしました。ただこれも2年前に更新止まってるけどね。導入に物凄く苦労したので、忘れないよう以下に方法を記しておきます。こちらのサイトを参考にしました。

まずここから本体をダウンロード。

自分専用なので設置するサーバはSSLにするんだけど、なぜか共用SSLではデータの保存が出来なかった。多分内部パスのどっかの設定を変更すればいいんだろうけど、わからないので専用SSLのサーバに設置します。

tiddly_conf.phpMySQLのアカウント等の設定があるので、自分の所のデータベースの内容に書き換えます。インストールはtiddly_install.phpを実行するんだけど、なぜかエラーが出る。mysql_create_db()という関数が見つからないらしい。とりあえず自分でデータベースをutf8_unicode_ciで作成し、tiddly_install.phpの以下をコメントアウト。

// if (mysql_create_db($tiddly_db_name)) {
// print (“Tiddly database created successfully!”);
// } else {
// printf (“Error creating database: %sn”, mysql_error());
// }

再度実行したらテーブルが作成されました。

文字化け対策としてindex.phpの5行目をコメントアウト。
// header(‘Content-Type: text/html; charset=ISO-8859-1’);

あとindex.phpの14行目辺りに以下の2行を追加。
$msg = $_REQUEST[“msg”];
$theTags = $_REQUEST[“theTags”];

シングルクォーテーションとかがあるとデータが保存されないようなので、index.phpの11行目を以下のように変更。
$body = addslashes($_REQUEST[“body”]);

インストール後、AutoSaveのチェックを外すとデータが保存できるようになります。最後に他人がアクセス出来ないようにBASIC認証を設置して完了です。

今後はこのPhpTiddlyWikiをオンライン自分メモとして密かに利用していきます。

ゲーム開発25:サウンド処理の作成

前回に引き続きサウンド処理です。古いDirectSoundを使うか、新しいXAudio2を使うか迷ったのですが、やっぱり新しい方でやる事にしました。

しかしネットで検索してもあまり情報が無いね。新しいと言っても数年前のものなのに。リファレンスとサンプルプログラムで調べたのですが、物凄く面倒です。サウンドファイルを自前で解析してライブラリに投げる方式のようで、サンプルではCWaveFileという独自クラスで解析してました。なのでCWaveFileをいじってたんだけど、いまいち良くわからず。

さらに調べてたらXACT3というライブラリがXAudio2のラッパーであると知る。ラッパー使った方が楽じゃんという訳で、XACT3をいじってたのですが、こっちも資料が少なくて難航する。

さらにさらに調べたらXACT3は元々XBOX用のなので、素材もゲーム機に特化したデータ形式に変換して使うのだとわかりました。つまり複数の音楽ファイルを1つに結合して(Waveバンク)、属性なんかを埋め込んだファイル(Soundバンク)にしないとダメだったのです。

以前のとは全然違うな…

だいぶ回り道をしたけど、ようやく音楽を鳴らすことが出来ました。以下はオーディオ基底クラスCAudioBaseです。1シーンにつき1ファイルって考えて設計したんだけど、もしかしたら変更になるかも。

//-----------------------------------------------------------------------------
// 生成
CAudioBase::CAudioBase()
{
 // いちおう
 pXACT3Engine=NULL;
 pbWaveBank=NULL;
 pbSoundBank=NULL;
}

//-----------------------------------------------------------------------------
// 解放
CAudioBase::~CAudioBase()
{
 Release();
}

//-----------------------------------------------------------------------------
// 初期化
BOOL CAudioBase::Init()
{
 XACT_RUNTIME_PARAMETERS  EngineParameters={0};

 if (pXACT3Engine!=NULL) {
  Release();
 }

 // COM初期化
 CoInitializeEx(NULL, COINIT_MULTITHREADED);

 // XACT3生成
 XACT3CreateEngine(0, &pXACT3Engine);

 // XACT3パラメータ
 pXACT3Engine->Initialize(&EngineParameters);

 return S_OK;
}

//-----------------------------------------------------------------------------
// 解放
void CAudioBase::Release()
{
 // XACT3解放
 if (pXACT3Engine!=NULL) {
  pXACT3Engine->ShutDown();
  pXACT3Engine->Release();
 }
 pXACT3Engine=NULL;

 // Soundバンク解放
 if (pbSoundBank!=NULL) {
  delete[] pbSoundBank;
 }
 pbSoundBank=NULL;

 // Waveバンク解放
 if (pbWaveBank!=NULL) {
  UnmapViewOfFile(pbWaveBank);
 }
 pbWaveBank=NULL;

 // COM解放
 CoUninitialize();
}

//-----------------------------------------------------------------------------
// ファイル読み込み
BOOL CAudioBase::LoadSound(PCSTR filename)
{
 HRESULT hr;
 HANDLE hFile;
 DWORD dwFileSize;
 HANDLE hMapFile;
 DWORD dwBytesRead;
 char pathfile[512];

 // Waveバンク生成
 hr=E_FAIL;
 sprintf_s(pathfile, 512, "data\%s.xwb", filename);
 hFile=CreateFile(pathfile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
 if (hFile!=INVALID_HANDLE_VALUE) {
  dwFileSize=GetFileSize(hFile, NULL);
  if (dwFileSize!=-1) {
   hMapFile=CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, dwFileSize, NULL);
   if (hMapFile) {
    pbWaveBank=MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0);
    if (pbWaveBank) {
     hr=pXACT3Engine->CreateInMemoryWaveBank(pbWaveBank, dwFileSize, 0, 0, &pWaveBank);
    }
    CloseHandle(hMapFile);
   }
  }
  CloseHandle(hFile);
 }
 if (FAILED(hr)) {
  return E_FAIL;
 }

 // Soundバンク生成
 hr=E_FAIL;
 sprintf_s(pathfile, 512, "data\%s.xsb", filename);
 hFile=CreateFile(pathfile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
 if (hFile!=INVALID_HANDLE_VALUE) {
  dwFileSize=GetFileSize(hFile, NULL);
  if (dwFileSize!=-1) {
   pbSoundBank= new BYTE[dwFileSize];
   if (pbWaveBank) {
    if (0!=ReadFile(hFile, pbSoundBank, dwFileSize, &dwBytesRead, NULL)) {
     hr=pXACT3Engine->CreateSoundBank(pbSoundBank, dwFileSize, 0, 0, &pSoundBank);
    }
   }
  }
  CloseHandle(hFile);
 }
 if (FAILED(hr)) {
  return E_FAIL;
 }

 return S_OK;
}

//-----------------------------------------------------------------------------
// サウンド再生
void CAudioBase::PlaySound(PCSTR zap)
{
 XACTINDEX iIndex;

 iIndex=pSoundBank->GetCueIndex(zap);
 pSoundBank->Play(iIndex, 0, 0, NULL);
}

//-----------------------------------------------------------------------------
// サウンド停止
void CAudioBase::StopSound(PCSTR zap)
{
 XACTINDEX iIndex;

 iIndex=pSoundBank->GetCueIndex(zap);
 pSoundBank->Stop(iIndex, XACT_FLAG_SOUNDBANK_STOP_IMMEDIATE);
}

ゲーム開発24:サウンド関連を見てみる

0fbbff93.jpg前回書いたとおり画面解像度を800×600に変更しました。面積にして1.5倍。だいぶ広くなったね。これで凝ったマップが作れるな。

次にサウンドを入れ込もうと昔のソースコードを引っ張り出してコンパイルしたら、大量のエラーが出ました。調べてみたらDirectMusicが無くなってたよ。

DirectX8の頃はDirectSoundとDirectMusicの2つを使って音楽再生してたんだけど、今使ってるDirectX9.0c(March 2008)からDirectMusicが無くなり、さらにDirectSoundもXAudio2とやらに差し替えるよう書かれてました。

とりあえずDirectMusicの処理を消したらコンパイルは通ったけど、残りの処理もXAudio2に書き換えた方がいいんだろうか…

XBOXとの互換性対策らしいけど、仕様変更しすぎ。

とりあえず、もう少し調べてみますか。

イース・オリジンをプレイ中

ぐるみんをクリアしたので、ファルコム繋がりでイース・オリジンをプレイする事にしました。ちなみにぐるみんは500円だったけど、イース・オリジンは1,000円でした。

とりあえず3時間ほどプレイしての感想。あんまイースっぽくないね。まぁ今の時代に半キャラずらしの体当たりで敵を倒すなんて操作方法は無いから、やはり3Dになったり剣でバシバシ斬る方式になったりと、システム的に進化してます。思ったよりアクションがスピーディーなので、やってて楽しいです。

シナリオはオリジンと名が付くとおり、イースの起源である700年前のお話ですね。3時間程度じゃ全くストーリーわからないけど、なんか主人公が2人いて最初に選ばせたって事は、途中途中のイベントとか変わるのかな? 長い戦いになりそうです。俺は騎士見習いのユニカを選んだよ。

ちなみに俺がプレイした事あるイースシリーズは1~4のみです。5~6はやってないけど、ネタ的に大丈夫かなぁ。そういえばもうすぐ7作目が出るんだっけ。結構続いてるね。

またのんびりとプレイしてみます。

運動不足ヤバい

5c491774.jpgYahoo!ニュースを見たらこんな記事がありました。

デブほど借金に苦しむらしいがどうすべきか

管理能力不足や目先の事しか考えないから太る、貧乏になる、といった内容です。なるほど。そういえばアメリカじゃ肥満は昇進できないって言うし、太ってると色々マイナスだね。

折角なんで俺もBMIを計算してみました。そしたら…どっちかというと肥満だったよ。ヤバいな、俺の場合は基本的に自宅作業だから運動不足という事か。

そんな訳で今日はひたすら歩いてきました。往復1時間半、歩数にして1万2千歩。結構疲れるね。1日1万歩が目標らしいんだけど、これを毎日やるのはしんどいな。

恥ずかしながら俺のここ3ヶ月間の歩数を表にしてみた。勝間和代氏の本だったかな? 万歩計を付けてるって書いてあったので、俺も真似して付けてたんだよね。

俺の表を見てみると、1万歩超えたのは今日を含めて3回だけ。そして平均はたったの3700歩。少なすぎる…これは太るわ。

職場が別にあれば通勤で歩きもするだろうけど、自宅作業の場合はどうやって歩数を稼げばいいんだろうか。またスポーツクラブに通うってのもアレだし…

まぁとにかく出かけて、ぐるっと回り道でもしてみようかな。

Windows7(RC版)をVirtualBoxに入れてみる

a606fa8e.jpg今日からダウンロード出来るようになったWindows7(RC版)を早速落としてきました。でもってとりあえずVirtualBoxに入れてみた。

当たり前かもしれないけど、見た目はベータの時とあんまり変わらないね。あとやっぱりバーチャル環境なので、ハードウェアアクセラレーションが有効化せず、半透明になったりしません。いちばんの売りであるWindows XPモードも動かないだろうな。

ブラウザにFlashを入れようとしたら入らず。IE8のせいかと思ったけどFirefox3でも入らないね。英語版なら入るらしいって書いてあったけど、よくわからないから放置。

このRC版は来年の7月まで使えるらしいので、今回こそは実機に入れて試してみようかな。

ぐるみんクリア(ネタバレ)

ファルコムのPCゲーム、ぐるみんをクリアしました。実は去年の10月に買ってやってたんだけど、可愛い絵柄とは裏腹に後半は難易度が高く、先が見えない感じだったので放置してました。

足場の悪いステージで武装した敵が複数現れた時の絶望感といったら…やられたら最初の方に戻されるので、なかなか大変でした。敵の防具を破壊しないとダメージを与えられないというのも、斬新だけど大変だったね。

ちなみに1回目はバッドエンド(?)でした。クリアしてない面があるとダメらしい。

ac4bd89d.jpg気分転換にアイテム収集。お金を99999まで貯めてゴスロリ衣装を購入。あと攻略サイト見て着物もゲット。着物は正月3が日だけの限定衣装なので、PCの時計をいじったよ。

ラスボスの巨大なドラゴンが滅茶苦茶な攻撃してきて、それを追いかけるのは楽しかったです。ドラゴンは呪いが解け、敵とも和解し、悪者がいない終わりでした。でもドラゴンに呪いをかけた者や、本物の王子の行方など、続編を臭わせる感じだね。

ぐるみんオンラインとかいうのが開発中止になったみたいだけど、普通に続編が出るのであればやってみたいです。