« 2006年01月 | メイン | 2006年03月 »

2006年02月28日

Movable Type 関連のニュース

気になったMovable Type 関連のニュースをメモしておきます。
(いずれもINTERNET Watch の記事より)


シックス・アパート、企業向け製品「Movable Type Enterprise」を発売

Movable Type Enterpriseが発売されるようです。企業向で52万5,000円とか。
企業向けだけあっていいお値段です(笑)

大規模な運用のための機能の強化がされているほか、Oracle 10gに対応しているそうです。


Dreamweaver 8の拡張機能、Movable Type 3.2のテンプレートを作成可能に
Dreamweaver 8でMovable Type 3.2のテンプレートがつくれるそうです。
私はDreamweaverを使ったりはしませんが、Dreamweaverでデザインをしている人には朗報ですね〜(たぶん)

2006年02月25日

作成中のゲームのβ版を公開中

ここには日記やメモを書いていきます。

日記(通常)
のトラブルとその対処法・役立つソフトなどは役に立つかも。
また、気になった話題や記事について触れていきます。
そのほかのメモは・・・気楽に読んでください(笑)

プログラム開発日記
では最近作っているプログラムについて書いていきます。
現在は主に
The Adventure Of Holy Bird
などについて書いています。

β版Ver.0.6.1
(2006/02/05 17:04UP。まだまだ不十分です。ストーリーが微妙?(笑))

β版Ver.0.6.2
(2006/02/07 01:30UP。一部追加・修正)

β版Ver.0.6.4a
(2006/02/10 19:30UP。)

β版Ver.0.6.4dはこちら
(2006/02/13 12:20UP。)


◆デモ
プレイムービー(Windows Media オーディオ640*480)




Stardust Collector通常版
も最近大幅に手直ししたのでおすすめ。


bird
BIRD「ホームページのほうもよろしく〜」

2006年02月24日

液晶ディスプレイ

最近ブログを更新していない日々が続いております。
そこで、先日液晶ディスプレイを買ったのでそのことでも日記に書いておきます。

今までは15インチのディスプレイで解像度XGAでした。
今回は17インチのディスプレイで解像度SXGAです。


ちょっと広くなっただけなのに体感的にはかなり大きく感じ、作業もしやすく便利です。
作業効率が大幅アップしそうです。とくに、プログラムを書いているときにウインドウを2分割すると今までは狭かったですが、すこし解消しそうです。
(さすがに、4分割はきついですが(苦笑))


液晶ドット抜け保証をつけましたが、ドット抜けはなくよかったです。
心配しすぎだったかな。
ディスプレイの高さを変えられるのもよかったです。
(1712Vでは変えられなくなってしまったとか?)


20インチ(かつUXGA)のディスプレイを使っている人と比べれば狭いかもしれませんが、当分はこれで満足できそうです。
ただ、今までの液晶と色が違うのでなれるまではちょっと違和感を感じそうです。

CIMG3679.JPG
RDT1711V

◆メーカーページへのリンク


2006年02月18日

MUSIC

最近は忙しくてあまりゲームを作っていません。
しかし、ゲームの音楽を随時滝雄さんの作曲したものへ切り替えています。

以下、独り言です・・・。


今日作っていただいた滝雄さんのゲームの曲(家で流れる曲)は最高です。
癒されました。
ゲームが完成したら、ゲームなんてどうでもいいので聞いてください
(あ、でもゲームの方もできれば・・・)


といってしまうほどはまってしまった。

これだけいい曲だと「ゲーム本体の方ももっとがんばらなければならない」と思ってしまいます。まだまだイベントがいいかげんなところもあるので。

(でも逆にゲームがたいしたことなくても音楽がすごいから・・・ってそれじゃだめですが)

2006年02月13日

プレイムービー作成

今日は、アクションゲームThe Adventure Of Holy Birdのプレイムービー
(Quick Timeムービー320*240)
(Quick Timeムービー640*480)
(Windows Media オーディオ320*240)
(Windows Media オーディオ640*480)
をつくってみました。いろいろハプニングがあって思ったより時間がかかってしまいました。
ムービーを作りたい人は必見!・・・かも(笑)
少なくともどんなツールがあるのかがなんとなくわかります。

私のパソコンはスペックがよくないせいか、ゲームを起動するとCPU使用率がほぼ100%になってしまいます。
よって、動画でゲーム画面をキャプチャすると、カクカクになってしまいうまくとれません。
よって今までは動画でゲーム画面をキャプチャすることをあきらめていました。


しかし、今回対策(一般的には使えませんが)を思いついたのでやってみました。


FPS:60でゲームをキャプチャするのは無理です。
ならば、一度ゲーム自体の動作速度を落としてからキャプチャしてしまえばいいと考えました。


まず、ソースコードにウエイトを入れて、ゲームの描画速度をFPS:7まで落としました。
(ゲームの動作は極端に遅くなりますが、負荷はPCの処理能力に比べればほぼ0です)
これで1秒間に7枚のスクリーンショットを取って、これを後でつなげれば動画にすることができます。


1秒間に60枚、ましてや1秒間に30枚でも重くて実現できませんでしたが、1秒間に7枚のスクリーンショットなら楽に取れます。


これには
ディスプレイキャプチャー あれ
というソフトを使いました。(定番)

そして、連番のビットマップ画像(0000.bmp〜1767.bmp)で出力させました
(そのままAVIに書き出すとFPS:7のままの激遅の動画になってしまう。)


次に、この画像をつなげて動画にすればOKです。
っとそのまえにD-ORDERS!フリー版でサイズを
640*480→320*240に変更しました。そのままではサイズが大きいので。


次に、この画像をつなげて動画にします。
これには
簡単ムービー作成AVI Maker V 1.73を使いました。


ところが、このソフトはFPS 30までしか動画を作成できません。
ゲームはFPS60なので、FPS 60で作成したかったのに、これではゲーム画面が実際より遅く再生されてしまいます。
そこで急遽、キャプチャしたビットマップ画像をまびいて
(画像のうち2枚に1枚を削除)FPS 30でやることにしました。


つまり、0000.bmp,0001.bmp,0002.bmp,0003.bmp……1767.bmp
とある中で、偶数番目だけをすべて削除することにしました。
これにはHSPで適当にスクリプトを組んで対処しました。
HSPは便利ですね。1767枚もある画像をすべてなんて、とても手動で削除なんてしていられないです。


ここでやっとのことで動画ができそうでしたが、問題が起こりました。
なんとAVI Makerでの圧縮出力がうまくいかないのです(最初はできたのに)


よって、このソフトでは圧縮せずに(できなかった)、
QTConverter 1.3.0を使って*.movに変換しました。


なんだかんだでいろいろなソフトを使う羽目になり大変でした・・・。




※※※さらにハプニングもありました※※※

名前はいいませんが、とある動画作成ソフトを使ったら、
すごい勢いでメモリを消費し始めました。

mem_danger.png

この後もどんどん上がり・・・
やばいのでプロセスを止めましたorz
1.44Gとかってなんだよ。ずっとHDDにアクセスしていました。
う〜ん、はずれソフト引いたかな(苦笑)

HSPプラグインリンク集

実際に使ってみてよかった、おすすめのHSPプラグインのリンク集です。
ご活用ください。



◆HSP3.0でも動作するプラグイン

・DirectX9

DirectX9の"DirectGraphics","DirectDraw","DirectSound","DirectMusic","DirectInput","DirectShow"を扱えるようにするものです。
かなり使い勝手もいいのでおすすめです。多機能。
メモリ上にロードしたデータも読める関数があります(一部のみ)
hmm.dll




・DirectXの拡張プラグイン

hspdx.dllのバグを取り除いて、さらに使いやすく改良されたものです。
扱いやすく、簡単にDirectDrawで高速描画なゲームをつくりたいときに必須です。

高機能。
hspdx.dllのバグ取り改良品 hspdxfix.dll




・Ogg Vorbis 再生プラグイン

oggを再生できるプラグインです。HSP3.0でもなにげに動いちゃいます。
メモリ上にロードしたoggデータも読めるので便利です。
ds_play.dll




・Ogg Vorbis 再生プラグイン

細かい操作がいろいろできるogg再生プラグインです。
メモリ上にロードしたoggデータは読めませんが、途中からのループ再生などができます。
Vox.dll




・PNGイメージ読み込みプラグイン

HSP3.0対応です。
メモリ上にロードしたpngデータも読めます。
シンプルで使いやすいです。
hsppng3.dll




◆HSP2.61以前で動作するプラグイン


・画像処理プラグイン

HSP3.0非対応(一部の関数のみHSP3.0からでも使えます)なのが残念ですが、
非常に高機能で、BMP / JPEG / PNG / GIFの相互変換や画像処理が行えるプラグインです。

imgctl.hpi






※HSPに標準でついているプラグインに関しては書いていませんが、標準プラグインにも便利なものがたくさんあります。

HSPでのメモリ節約について

HSPでのメモリ節約について書いていきます。

ところで、HSPでメモリを確保するには
sdim buf,65536
のように書きます。
このようにすると、変数bufのメモリを65536Byte確保してくれます。


このあとで、変数bufがいらなくなったときに
sdim buf,1
と書いたらどうなるでしょう。

どうやら、再度bufが1Byteのサイズで確保しなおされて事実上メモリの開放をしてくれるようです(タスクマネージャ等でみればわかります)

よって、使い終わった変数でなおかつ変数のサイズが大きいときは、このようにして開放してあげるとよいでしょう。

また、これを利用してメモリクリーナを作ることもできるようです。

このことは以前にどこかで読んだこともあったのですが、


さらに!
screen命令でも同様のことが起こるみたいです(よくわかりませんが)
実は気づいたのがついこのあいだです。


まず、最初に
screen 2,1024,768
などとして、ウインドウID2にウインドウを
1024*768の大きさで作成します。

そして、picload "test.bmp"
などとして画像をそこに読み込んだとします。


もし、このウインドウの画像が不要になったとき、


screen 2,1,1

とすると、使用メモリをぐっと減らすことができます。
ウインドウを1*1で再確保してくれるためか、
やはりメモリが開放されている(?)ようです。


なので、使わなくなったウインドウや画像があれば、このようにして
開放してあげると大幅にメモリ使用量を削減できます。


DrectXを使ったゲームを作っていて、かつHSPDX.DLLを使っている場合、


buffer 3,1024,768
picload "IMG/test.bmp" //画像読み込み
es_buffer 3 //DirectXのオフスクリーンバッファへ画像を転送

などとやることが多いです。
es_buffer 3
を実行した後では、ウインドウID3のバッファはすでに不要になっているので
画像転送後は

buffer 3,1,1

とするとよいでしょう。

転送している画像が多い場合は数MByteのメモリを節約できたりします。


※HSP3.0で確認しました。
※間違い等があれば指摘してくれるとありがたいです。


※まさか、es_buffer 3を実行した後でID3の画像が必要になることがあるという落ちなんてないよね……。

2006年02月10日

The Adventure Of Holy Bird Ver.0.6.4a

ゲームにデモモードを追加しました。


タイトルから「DEMO」を選ぶと、デモとして、文鳥が自動でステージの途中まで進む様子を見られます。
かなりぎりぎりでジャンプしないと間に合わなかったりするステージなので、
これを見るとアクションゲームの爽快感を疑似体験(?)できるかもしれません。


実はこのデモモードは、簡易リプレイ機能をつくり、それを使って記録したものを再生しています。
簡易リプレイ機能では、プレイヤーのキー操作をすべて記録し、それを再生しているだけです。
よって、たまにうまくいかないこともあるかもしれませんが、そのあたりは大目に見てください・・・。


ゲームをプレイしている間に、配列にキー操作を全て入れておきます。
そして、特定のキーを押したときにそのキー操作のデータをテキストファイルに書き出して保存しています。
(キー操作はカンマ区切りで保存しています。HSPの命令だとcsvstr命令またはcsvnote命令などを使えばできます。HSPのサンプルディレクトリを見てみるとよいです。Perlならsplit文ですぐにできるのですが、HSPだと少し面倒ですね(苦笑))

The Adventure Of Holy Birdβ版はこちらからダウンロードできます。

タイトル画面変更

今日はタイトル画面(メニュー画面)のデザインを変えてみました。

action_new_title.png
新しいタイトル画面のデザイン


以前は青一色の背景でしたが、青空を背景にして、明るいタイトル画面にしました。
また、ゲームの画面解像度(640*480または800*600)により適切な背景がでるようにしました。
今日はそれぐらいです。。

2006年02月08日

ゲームでのミニマップ表示

アクションゲームの作成。
今日は、表示切り替えボタンを押したときに、ミニマップ表示がでるようにしてみました。
スクリーンショットを見てもらえばわかりますが、緑がブロックなど、通過不可能で、それ以外が通れるというものです。

minmap.png

ミニマップ表示(一部加工)

普通の表示は1ブロック32*32ドットですが、このミニマップは1*1です。
だから全体がよく見えます。

別のゲームでもこういうミニマップの表示がありましたが、以前はどうやっているのかわからなくて
「すごいな〜。どうやるんだろう。」と思っていました。
それ以来忘れていましたが、今考えれば意外と簡単でした(笑)

ただ、これだと隠し通路までばればれなんですね(苦笑)
迷路ステージも簡単になってしまう。
(特に1ブロック2*2ドット以上の場合、つまり縮尺が1/16より大きいとき)
どうすればいいのだろう。
サイズを小さくすればわかりにくくなるので、ヒントにはちょうどいいかもしれませんが・・。
簡単になりすぎてしまうので、マップの表示は二回目のプレイ(二週目)から有効になるとかいう風にするかもしれません。
二週も遊んでくれる人がいればいいのですが(苦笑)


改良して、マップによって縮尺を変えるようにしました。
大きいマップは画面に収まるように小さく表示します。
minmap2.png
ミニマップ表示

2006年02月07日

ゲームの起動を高速化

The Adventure Of Holy BirdのVer.0.6.2では、ゲームの起動を高速化しました。

今まではゲーム起動時に背景画像をいっぺんに12枚も読み込んでいましたが、
今回はそれをやめ、ステージ開始時に背景画像を必要に応じて読み込むようにしました。
起動がかなりはやくなりました。
もっと早くやればよかったな・・・。


他にはワールドマップの画像をpng→jpegとして容量を削減しました。
さらにマップやイベントの追加、修正もしてあります。


The Adventure Of Holy Birdβ版はこちらからダウンロードできます。

2006年02月05日

The Adventure Of Holy Bird β版完成

アクションゲーム「The Adventure Of Holy Bird」がとりあえず一通りできたのでここでだけ公開してみます。

The Adventure Of Holy Bird

β版はこちらダウンロードできます。

とりあえず一通り遊べるので気になる方はやってみてください。

◆正式版を待ちたいという方
あなたの判断は正しいかもしれません(笑)
もうしばらくお待ちください・・・。
3月までにはRC1を公開したいです(かなり未定)

2006年02月04日

必殺バグ修正法!?

そろそろ完成?
アクションゲームの作成。昨日は作成がはかどりました。
最後までバグ続出。

そして今日の話。

なんか、特定のステージに移動すると
HSPエラー「配列の要素が無効です・・・」
と表示されてうまくいきません。


何度も原因を探したが、解明できず。
しかたがないので強引に修正をしてみると(下記参照)


hsp_bug.png


「変数の値が正常でなかったら処理しません。」
という風にしてみた。
本来は値がmapx,mapyという変数を超えることはないので、超えたら無視します。
この処理はループの中なので、continueを書けばスキップします。

原因がわからないのにこんなことしてはいけません。
普通はこんなことしないだろうし・・・。


しかし

・・・動いた。
表示や動作も正常です。
わけわかりませんorz
どうしたものか・・・。

(以前も値が正常範囲を超えたら正常値に修正ということをしましたが、こちらは理論上問題ないはず。しかし今回は・・・?)

2006年02月02日

Movable Typeにカレンダーを表示する

他のブログにはカレンダーがあるものが多いのに、Movable Typeには何でないのか気になって、調べてみました。どうやらMovable Type 3.15にはあったのに、新しいバージョンではなくなってしまったようです。

参考
Movable Type メインページにカレンダーを表示

ここを参考に設置してみました。(カレンダーがあるとなんとなくかっこいいので・・・)

管理ページの「テンプレート」→「インデックス・テンプレート」→「メインページ」の適当なところに以下のタグを追加しました。

<!-- カレンダーのテストです -->
<h2 class="module-header">カレンダー</h2>
<div class="module-content">

<div id="calendar">
<MTArchiveList archive_type="Monthly" lastn="1">
<table summary="カレンダー">

<caption>
<MTArchivePrevious><a href="<$MTArchiveLink$>" title="<$MTArchiveTitle$>"><<</a></MTArchivePrevious>
<$MTArchiveTitle$>
>>
</caption>

<tr>
<th abbr="日曜日">日</th>
<th abbr="月曜日">月</th>
<th abbr="火曜日">火</th>
<th abbr="水曜日">水</th>
<th abbr="木曜日">木</th>
<th abbr="金曜日">金</th>
<th abbr="土曜日">土</th>
</tr>

<MTCalendar month="this">
<MTCalendarWeekHeader>

<tr>
</MTCalendarWeekHeader>


<td<MTCalendarIfToday> class="today"</MTCalendarIfToday>><MTCalendarIfEntries><MTEntries lastn="1"><a href="<$MTEntryPermalink archive_type="Daily"$>"><$MTCalendarDay$></a></MTEntries></MTCalendarIfEntries><MTCalendarIfNoEntries><$MTCalendarDay$></MTCalendarIfNoEntries><MTCalendarIfBlank> </MTCalendarIfBlank></td>


<MTCalendarWeekFooter>
</tr>


</MTCalendarWeekFooter>


</MTCalendar>

</table>
</MTArchiveList>
</div>
</div>
<!-- カレンダーのテストここまで -->

次に、「スタイルシート」に以下のタグを追加しました。

/* calendar test */

#calendar {
line-height: 140%;
color: #666666;
font-family: Verdana, Arial, sans-serif;
font-size: x-small;

padding: 2px;
text-align: center;
margin-bottom: 30px;
}

#calendar table {
padding: 2px;
border-collapse: collapse;
border: 0px;
width: 100%;
}

#calendar caption {
color: #666666;
font-family: Verdana, Arial, sans-serif;
font-size: x-small;

text-align: center;
font-weight: bold;

text-transform: uppercase;

letter-spacing: .3em;
}

#calendar th {
text-align: center;
font-weight: normal;
}

#calendar td {
text-align: center;
}

.today {color: #ff0000;}

このようにしたあと、
日別アーカイブを有効にしておきます。
これで以下のようなカレンダーが表示されました。


movabletype_cal.png

MovableType用アクセス解析

MovableType用アクセス解析プラグインでよいものが見つからなかったので、結局いままでに私が作ったアクセス解析でどうにかすることにしました。
今回は、MovableTypeでアクセス解析をするのに便利なポイントを紹介します。

MovableTypeには便利なテンプレートタグというものがあります。
これを使えば、アクセス解析を作る際に、簡単にページのタイトルやURIを取得できます。
例えば、私はいままではページのURLを取得する際はJavaScriptを使っていましたが、
MovableTypeのテンプレートタグを使うことにより、JavaScriptなしでも
ページのURLを取得できるようになりました。

例:


<$MTEntryPermalink$>……エントリーのパーマリンク(URL)に置き換えられる。
<$MTEntryTitle encode_url="1"$>……エントリーのタイトルをエンコードしたものに置き換えられる。

そこで


<img src="bird_analyzer_write.php?url=<$MTEntryPermalink$>&title=<$MTEntryTitle encode_url="1"$>">

とかけば、PHPにエントリーのパーマリンクとエントリーのタイトルを渡すことができます。

後はこれをデータベースに格納してやればOK。
(別にデータベースでなくてもよいですが・・・。)


◆参考
Movable Type テンプレートタグ リファレンス


ここで注目すべきなのは、encode_url="1"の部分です。これはグローバル属性というらしいです。
<$MTEntryTitle$>
とするだけでは、そこがエントリーのタイトルに置き換えられますが、これをそのままGETで送っては
エントリーのタイトルに日本語があった場合、文字化けしたりしてしまいます。
そこで、エンコードしてから送る必要があります。
エンコードをJavaScriptでした場合、ブラウザに依存する問題などがあり、気軽にはできません。
私は困ってしまいました(苦笑)

ところが、encode_url="1"を指定すると、URLエンコードをした状態で置き換えてくれます。
これを知ったときは感動でした。
アクセス解析をつくるなら皆さんもこの方法でやってみてはどうでしょう。簡単にできます。


※encode_url="1"の存在は滝雄さんが教えてくれました。ありがとう!

2006年02月01日

アクセス解析

現在私が作ったアクセス解析は機能が十分でないので、Movable typeで簡単にアクセス解析をしてみたいと思い、Movable typeのアクセス解析プラグインがないか探してみました。

statWatchしか見つかりませんでした。たまにあったとしても、別のブログ用のものでした。

statWatchはログが一種間しか残らないとか。

さらに検索していると、
xreaではうまく動かない

という記事を見つけました。うちのブログはxreaで動かしているので、だめなようです・・。

XREA サーバー特有の問題のようです。対処方法は分かりませんです。

う〜ん、残念。

Movable typeのアクセス解析プラグインでよいものを知っている形がいたら教えてください・・・。

やはり自分で作らないとだめなのかな。でも時間がないし・・・。よくわからないし・・・。

コンパクトな「Portable Sleipnir」が登場

「Portable Sleipnir」が登場しました!

サイズが小さくて、USBメモリに入れて持ち運べるので、外出先で使うには便利そうです。
同じお気に入りをどの環境でも使えるので重宝するでしょう。
サイズは約5MB程度とのことです。小さいので気軽に持ち運べそうです。

Geckoエンジンが利用できませんが、問題ないでしょう。
サイトの訪問履歴などは削除されるなどの配慮がされています。

USBメモリに入れて持ち運べるタブブラウザ「Portable Sleipnir」が登場


タブブラウザ Sleipnir 公式ページ(上級者向け)
ダウンロードは公式サイトよりできます。

DirectXのバージョンを確認するには?

友達に、DirectXは入ってる?
っときかれたので、DirectXのバージョンを確認するにはどうしたらいいかを簡単に説明します。

Windows XP
でこの方法が使えます。ほかのバージョン・OSでは知りません。 たぶん普通はもうインストールされてると思います。

その場合は、左下のスタートメニューから

スタート→ファイル名を指定して実行
を選択し、
dxdiag

と入力。
「DirectX診断ツール」が出るのでそこでバージョンを確認できます。

file_shiteishite_zikkou.png
↑操作方法



DirectXwin.png
↑DirectX診断ツール

DirectX診断ツールでは他にもディスプレイ・サウンドの情報が見られたり、
DirectXの機能のテストできたりするので知らなかった人は一度見てみるとよいでしょう。