2005年6月の日記

<2005年07月 2005年05月>

ドット絵レンダリング

どこぞの掲示板でちょっと触りの部分を書いたのですが、ここではもうちょっと具体的な話をします。
ドット絵作成には、重要な特徴をつかんで他を省略するということが大事になってきます。
それは人間の感性によるものが大きいので3Dレンダリングエンジンに計算させることは困難ですが、そもそも3Dモデル自体基本的に人間の感性で作られているものなんだから、特徴の重要さもやはり人間の感性を数値化して3Dモデルにデータとして組み込めばよいのではないかと思っています。
では重要度はどうやって組み込めばいいか。
じっくり描くのなら手描きで充分。リアルタイムにレンダリングしてこその3Dなので、とりあえずDirectXかOpenGLで使えるものがよいでしょう。
となれば、扱えるデータはある程度絞られてきます。
例えば、テクスチャとして、重要度マップを組み込む。
特定の範囲の色と重要度を対応付け、小さい場合は重要度の低い部分はレンダリングしない。
難しいのは、1ドット幅の輪郭。まあこれは頑張って計算すれば何とかなる。
ってなわけで、気が向けば実際に作ってみたいと思います。

スミスチャート

ひらカタチェンジャDX作ってみました。
ひらカタチェンジャにリコチキエンジンのユーザーインターフェースを施して、もちろんリコチキ語も同時収録!
しかもおまけにタイトルもなぜかひらカタチェンジ!
リコチキは巡回置換なので何度も同じ変換を繰り返していると必ず元の文章が現れるはずですが、それは巡回置換一つ一つの巡回周期の最小公倍数となるので、そう簡単には元には戻ってくれないようです。

ふにゃさんエディタにマップサイズ変更機能を施しました。
レポートの合間にちょいちょいっと実装したにしてはまともに動いてくれていますが、将来3層マップに対応するときにちょっと面倒になりそうな気がしないでもありません。
標準以下の大きさになったときの処理ができてないな…。

inDLableを更新したりしてみました。
スタイルシートを新しく替えただけですが。

レポートについては、現在スミスチャートドローマシンとなって作成中。そろそろ終わらせます。

DMP

作りかけで完成させる意欲のないDirectMusicPlayerをプログラミングコーナーのサンプル&ソースコードにアップしました。

ミディビ更新ペース

ミディビ更新しました。
2月に1回の割合での更新ですね。
ということは後3回で…急がなければ!

レポート終わんないぃ~!

ふにゃ1・2・3

ふにゃさんのすり抜けバグは直しました。
ふにゃふにゃステージ制作講座番外編にあったように、「同時」であることが問題だったので、当たり判定に時間差を設けることですりぬけを回避したのです。
すり抜けバグはあくまでもバグですので、面白くても今回は取り入れませんよ。
実はふにゃさんには当初考えていたものからカットされた要素が既にいくつかあります。
例えば、ギヤバネは最初の予定では性能差により32種類のバリエーションがある予定だったのですが、ステージに組み込むのが、私にもステージ作者にも大変そうだったので、歩行+3方向バネの1タイプのみになりました。
敵も只のマップチップと同じように選んで配置するだけのほうが手軽でいいですよね?
とりあえずすり抜けバグの確認用のテスト版をアップしましたんでよければ見ていってください~。

ふにゃふにゃのページ、キャラクター、更新しました。
いつまでも絵がないんじゃさびしいので昔2分2秒で描いた適当なふにゃの絵でも載せておきました。
タグで拡大してて比率が変だけどないよりはマシ。

もしかしたらアキタラヤメル企画に「ふにゃ」を追加するかもしれません。
ふにゃのいろんなことがわかっちゃうというコンテンツ。
需要があるなしは関係なしに、自分で思い入れが強いから作りたいんですよ。

パネルγの遊び方ページを少し見やすくしました。
特に新しいものの追加はなし。

Bomber丸WorldのBGMのページを更新しました。
地下ダンジョンボスのBGMです。
イントロをちょっと変えました。
ちなみにキャラとしては、何ターンに一回かの割合で溜め攻撃を使うのでそのたびに防御しないと手痛い打撃を受けてしまいます。
しかも、この攻撃、溜めた実時間によりダメージが増えるので、素早く防御しないと大ダメージを受けてしまいます。
そこで考え出されたシステムが、コマンドショートカット。
せっかくパソコンのキーボードには標準で百個以上のキーが付いているんだから、これを利用しない手はない、ということで。
防御にBキーを割り当てていた場合、ヤツが力を溜め始めたら必死でB連打していたらダメージを減らせるという寸法です。

1119709646.mid

クラスの実体

パネルγの遊び方9と自己紹介とゲーム記のゲームボーイと同じくロクヨン、それぞれ更新しました。
昨日書き忘れていたところと、たくさんの質問への回答と、標準語化をしてみました。

レゴ、昔買ったものを5つほど復元しました。
ずっと前に作ってばらさずに置いたものを数には入れてないので全体としてはもう少し多くなります。

Java、とりあえずサンプルを落として見てみました。
eclipseが異常に重いのが気になったけど、クラスの扱いについては大体わかりました。
Class1 c = new Class1();

昨日断念した音楽、今日何とかMIDI化に成功しました。
なんに使うかはまだ検討中。
メテオスでこんな惑星があったらいいなと思っていたときに妄想中の惑星のBGMとして思いついたものだったのです。
うちってMIDI化するときにどうしても半音を使ってしまう悪い癖があるのね。
しかし今までMIDIだからいいやとPiccoloを使いまくってたけど結構無茶な奏法だったのね…。

1119625040.mid

風の影響

ふにゃさん、走るときのグラフィックを出せるようにしてみました。
今回は移動や当たり判定の処理と描画の処理を分けて作っているので、動作から先に作って、直立姿勢のまま走ったり跳んだりするようにしてから、動作が安定するころにグラフィックの変更を行ったりしています。
スピードの減速方法、地面に立っているときは速度0に向かって一定加速度+風の抵抗をかける。
走っているときは最高速+風速を超えているときには最高速+風速に向かって減速。
跳び上がり・しゃがみ・歩き中は減速処理はせず。
落下中は風の抵抗のみによって減速。

パネルγのページを更新しました。
ルールの同時消しのところです。
う~ん、LARGE以上のどでかい同時消しボーナスについては書き忘れてたけど、まあいいや。

同じくパネルγ、ランキングへの得点の送信には公開鍵暗号を使ってみようかと思ったのですが、これは第三者が解読できないようにということで、送信者本人によるデータ捏造への対応ができなさそうなので、見送ることにします。

なんとなくメロディが思いついたのでMIDIにでもしてみようかと思ったのですが思ったとおりの音が出せずに断念。
それはそうと、音源を変えてMIDIを聞くと同じ曲でもなんだか新鮮ですね。

動けるぞ!

ゲーム記、プレステのとこ、更新しちゃいました。
標準語にしたのと、ドラクエ5の話を少々。

ふにゃさん、走る・跳ぶ・止まるの基本的な動作ができて、狭いステージの中を駆け回れるようになりました。
当たり判定の基準位置を間違えていたりして、なかなかうまく動いてくれなかったりもしましたが、現状の動作としてはまあまあよくできているといった感じではあります。
今回はいろいろな部分を関数化させて多分後から見てもそれなりにわかりそうなコードにしています。
コードを一部抜粋。

	if (m_State==STANDING) {	// 立ってるとき
if (f3Input.GetKeyPressed(F3KEY_UP)) StartJump();
if (f3Input.GetKeyPressed(F3KEY_LEFT)) Run(DIR_LEFT);
if (f3Input.GetKeyPressed(F3KEY_RIGHT)) Run(DIR_RIGHT);
if (m_DX>0) m_DX = (m_DX>STANDFRICT?m_DX-STANDFRICT:0);
if (m_DX<0) m_DX = (-m_DX>STANDFRICT?m_DX+STANDFRICT:0);
if (m_DX==0) m_Direction = DIR_FRONT;
if (!m_HitBottom) {
Fall();
}
ジャンプの処理を呼び出すのにStartJumpを呼び出しているのは、立っているときの上キーがジャンプの予備動作をさせるためのものだから。
Jumpは上キーを離したときに発動されて、実際に上向きの速度を与えてジャンプさせています。

1119449256.png

素早い実験

先週うまくいかなかった実験は今日終わらせました。
実験項目が事実上増えたことになるのでかなり遅くなることを覚悟していたのですが、最後の実験が電光石火で終わったのでまあまあ普通の時間に終了。

あとは、レゴで昔作ったのを復元するだけ復元しようかと。

前作からのパワーアップとか

昔からずっと思っていたんだけど…
レゴの幽霊パーツがほしい。
それで、情報を集めるため公式サイト含めいくつかのサイトを回ってみたんだけど、自作の作品やミニフィグ(人形)やレアパーツのこととかばかりで目的の情報には近寄ることすらできず。
せめて写真だけでも拝みたかったですよぉ。
レゴ自体はもう飽きちゃったのですが、嫌いになったわけじゃないし、むしろ今も大好きなので、「サイズ」の観点からレゴを語るサイトでも作ろうかと思ったのですが、自分ちのレゴで頑張って作った完成品だけがなくなっているのを見つけてげんなりしたので見つかるまでしばらくは手をつけなさそうです。

ふにゃさん、ジャンプの処理を作り始めました。
例によってジャンプ力係数も浮動小数型で。
ちなみに、ジャンプ力そのものは第一作に対して特に増やすようなことはしません。
普通ならばゲームの遊べる幅を増やすためパワーアップなどさせるべきものなのでしょうが、ジャンプ力アップに関してはギヤバネが補ってくれるので、他では不用意に増やさないようにという判断です。
キー入力周りの挙動がどうも怪しいようです。見直さねば。

レポート、痛恨のミスを犯していました。
グラフが・・・・逆さま。

天界へ

ふにゃさんの当たり判定を作ったりしてました。
昨日書いたとおりに少数と整数を混在させたデータにしてます。
一応キーで上下左右に飛ばして確認できるようになったので、今度は本格的に動きの作成に取り掛かるつもりです。
しかし代表位置として足元の位置を選んだのは当たり判定の観点からは少々面倒なことになっていて、また改めて体の中心を代表位置にしようかと考えていたりしてます。

久々にエアツェー2プレイ。
ボスの強さに面食らってアイテムで準備を万全にして改めて行ったらアイテムを一切使わずに楽勝ってのは意図されたバランスなのかな。
それともRPGは自然にそうなるようにできているんだろうか…。
途中の負けボスは1ターン目に気付いておしょくじとかスロースターとかでボケをかましつつ潔く全滅。
しっかし、ラストのこの装備の異常な強さ、これはあんまりだと思うなぁ…。

再提出のレポートなんかもやってます。

へたっぴ

パネルγの遊び方のページを更新しました。
基本中の基本なのでやった人が見てもなんともないのですが。
そういうこともあってしばらくぶりにプレイしてみると思ったようにクリックできない。
初めて触る人はきっとこんな感覚なんだろうなと思いました。
こういうのは開発中にはどう頑張っても頑張らなくてもわからないのでこういうことは貴重なのかなと思ったりも、しかしなんだか複雑な気分。

ふにゃさん、今ちょっと考えていることがあります。
それは、主人公の位置の変数の型をどうするか。
現在はCGameObjectに倣ってint型にしているのですが、そうすると加速度や抵抗やいろいろな物理量を使う以上それなりの精度を設ける必要があって、それはそれでスケーリングで何とかなる範囲ではあると思うのですが、今回は多くのオブジェクトを扱う可能性があるということで、スケーリングの倍率はできるだけ一定、あわよくば1にしたいので、それなら小数点以下も結構な精度のあるfloatやdoubleなどの小数型を使いたいのですが、そうすると処理速度の点で不利に、とはいっても近頃のコンピュータではそんなの気になるほどではないと思うけど、処理数はオブジェクト数の2乗のオーダーで増えることを考えるとやっぱりオブジェクトが増えたとき無視できないかと思ったりもするけど、それならば相手オブジェクトとの関係を持つ部分では整数型を使って、その整数型による位置を割り出すのに内部で使う変数だけを小数型にしたらどうかと考えて、つまり以下のようになったわけです。

  • 内部で使用する正確な位置などの情報(小数型)
  • 外部に公開する実用上問題ない精度の情報(整数型)

他には、当たり判定データを作ったりもしていました。
とはいっても、今はデフォルト値を作っただけで、実際にどのチップがどの当たり判定に対応するかを作るために機能を作ったわけではないのですが。
デフォルトでは第一作と同じく、一番左のチップが通行可能、二番目が壁、三番目から左が危険地帯となっています。
今回はすり抜けはありません。

気まぐれに

とりあえず必要なところはCGameObjectBaseから抜いてきて、一応Cf3MapObjectBase完成。
さらにこれを派生させて主人公クラス作成。
グラフィックはstaticメンバにして無駄なメモリ消費を減らす。
主人公は一体だけだから関係ないはずだけど。
ちなみにグラフィックはGIF画像で用意されていて、透過情報はGIF側で持っています。
一応表示までできるようにはなってます。
やっぱり目に見えるところから作ると作ってるって感じがしていいねぇ。

気まぐれ人工無能、そろそろ作り出そうかなと考えていたり。
正規表現にマッチする応答を返す方式、マルコフ連鎖、人対人の会話から自動学習、呼ばれて出てきて落ちたら消える。

しまった!!

半導体レーザのレポートがやっとこさ完了しました。
結局ひとつのレポートで合格もらうのに1ヶ月もかかってしまった…。
一応文章の部分はデータとして手元にあるので、気が向けば学習帳にアップするかもしれません。

ミディビの開発をそろそろ再開しようと思って、とりあえず何か音を鳴らそうと考えて、書き始めてから気が付いた。
私はJavaを知らない!
オブジェクトの生成とか、構造体の使えるかどうかとか、基本的なことを。
使ってりゃ何とかなるというポリシーの私ですが、さすがに先立つ知識が何にもないとはじめられそうにありません。

ゲーム記、ちょっとだけ変えました。
文面を微妙に。

ふにゃさん、昨日のはサイズがちょっと小さくてはみ出していたのですが、無事サイズを正常にすることができました。
そんでもって、下に余った部分にいろいろ情報を表示してみようかと思ったのですが、その前にマップのほうをまともに表示できたほうがいいと思って、昨日ピンクになっていたところを0番チップ(背景)に置き換える処理を作りました。
その後さらに置き換えた部分にマップキャラを置くことになるのですが、その辺はまだ作っていなかったので、Cf3MapObjectから作ることにしました。
Cf3MapObjectは、マップ上に表示されるオブジェクト(キャラに限らず)で、いつかはCGameObjectBaseから派生させるといっていましたが、細かいところの実装でこのゲームにあわないようなので、自前のものを作ることにしています。
元々yaneSDKのCGameObjectBaseはある程度自立したオブジェクトを使うためのものなのですが、今回は完全にマップに癒着したオブジェクトなので、マップと関連付けられるオブジェクトが必要だったのです。

マップ読み込み

FFCC、ケアルリングゲット。

ふにゃさん、マップ読み込みを作ってみました。
右下2チップが不定になっているので、まだ読み込みに不具合が、と思いきや、実はセーブミスだったようです。
ピンクの四角は未対応だから、ということで。
ウィンドウサイズも同様。
圧縮については、圧縮しきれずに逆に膨張しちゃうこともあるんじゃないかと危惧していたのですが、デタラメにマップチップを配置してテスト圧縮(エディタ以外で圧縮)しても半分程度まで圧縮できたようなので、これは特に問題はなさそうです。

1118846015.png

実験中断

簡易アクセス解析を更新しました。
自分で使っていて納得いかない部分を2・3パッパッと直してみました。
まず、検索フレーズで、検索と誤認して関係ない語句を追加してしまうバグを修正。
これは意味もなく配列を流用していたのが原因でした。
次に、ユーザーエージェントの正確な表示。
モジラばっかりじゃなにがなんやらわかんないので。
しかしアップするまで気付かなかったけど、バージョン1個すっ飛ばしてたのね…。
今考えれば0.07としてアップすべきだったわ。

ふにゃさんエディタ、マップデータやマップタイトルもセーブできるようになって、セーブの部分はひとまず行えるようになりました。
マップの大きさをまだ変更できなかったりもするのですが、ゲーム本体のほうがまだまだということを考えると、まず初期の大きさだけでうまく動かしてから、サイズ変更を実装するという方法をとっても良いかな、と考えてしまいます。
でもやっぱり最初から完成形(スクロールあり)を意識して作らないと、と思ってしまうのですが…。
そんなわけで、そろそろ本体の開発に移るので、読み込むためのサンプルデータを用意してみました。

学校の実験では、なぜか実験で使わないはずののこぎりが置いてあったり、なぜか1学年下の学生のものらしきレポートが置き忘れてあったり(しかも再提出)、なぜか測定器の針がいきなり負の方向に振り切れてしまったり、そんなこんなで実験は中断になっちゃいました。

心にもない俳句

プリンタドライバ見つけてきました。
これでレポートを印刷するたびに親のパソコン借りずに済みます。
インストーラCDがなくなっていたのですがCanonの公式サイトから見つけてきたんですよ。
どうやらOSによってドライバのバージョンが違っていたようなので、CDを使わなくて結果的には正解だったようです。

朝、寝冷えしたのか何なのか、ちょっと調子悪かったです。
午前中、なんとなく寒いような気がする状態が続きました。

ふにゃさんエディタで、非圧縮セーブを実装して、テスト書き込みしたら、セーブしたはずのない「きたなー」の文字がなぜかデータに紛れ込んでいました。
[....TITL0123....AUTH4567....DESCabcdきたなー]
そういえばその前に
[....LTITうんこ....HTUAしっこ....CSEDきたなー]
なんてデータを入れてたっけ。
やっぱり下品な言葉を使ったのが悪かったのか…
というわけで、改めてセーブの処理を完全に実装してから綺麗な言葉でセーブ。
今度はバッチリうまく行った模様です。

1118672625.png

復元仙人のワナ

アキヤメのメテオスDB、更新しましたよー。
面白作品ベストを数点追加しました。

そんでもって、ゲーム記のカービィのエアライドのエアライドクリアチェッカも少し更新しました。
どっちも中途半端ですが。

ゼルダの伝説不思議な木の実時空の章やってました。
三日月島のダンジョンを半分ほど終わらせてセーブしていたはずなのになぜかセーブされていなくてダンジョンの最初からになってしまったのですが、何とかクリアして、次のどくろダンジョンに入るところまで行ってきました。
道中、赤くて刺激的な味がしそうだとトカゲ人に言われたウィウィや迷いの森で立ち往生していたムッシュと出会ったり、シメトリ村の下品ヒゲ男にヒゲをもらったり、メイプルのアイテムを何度も強奪したり(今考えるとやっていることはひったくりそのものだ)、ワナの仙人リペアに挑戦したり。
いやあ、懐かしいなぁ。

ふにゃさんエディタ、ステージ名(ステージファイルの全体のタイトル)と作者名と作者からのコメントが記録できるようになりました。
そんでもって、セーブの部分も作り始めました。
今のところはファイル名取得の部分だけです。
流れとしては、ステージの生データを一時ファイルに書き出し→必要ならば圧縮→ヘッダをつけて指定されたファイル名に出力、となります。
ちなみに、圧縮ステージファイルと非圧縮ステージファイルは同じファイルフォーマットではありますが、拡張子が違い、圧縮ファイルのほうはエディタ側では読み込みには対応しません。
展開すれば普通に読めるようにはなるけど、バイナリエディタで簡単にデータ改竄されるということはなくなるのではないかと思います。

1118582193.png

キ番復活

散発に行ってきました。
この季節は髪が乾きにくいのでかなり短くしてもらいました。

とりあえず提出期限を一番大きく過ぎてるレポートを完成。
何度も再提出させられて、今度こそ完璧だと思うのですが…。

「甲骨文字から楷書に至るまでの漢字の変遷について」を書き直したものを学習帳にアップしました。
元々学校にレポートして出したものをHTMLに編集したものなので、「引用のないレポートは自分勝手な思い込みだから信用できない。必ず引用と引用元を記載すること」という先生様の有難いお言葉のため、半分以上が引用で成り立っています。

キ番復活しました。
統合の影響で2000以上すっ飛ばされていますが、一応今のこの値で運用再開です。

エイミーと更新と学習と

Bomber丸WorldのBGM、製鋼所ダンジョンボスのところを更新しました。
イントロ部分の追加とエイミーパートの一部変更です。

更新のカテゴリを増やしました。
更新履歴に乗せないような更新は日記に載せていきます。

学校のレポートがたまってきてます。
最近学校でやっていることがわからなくなってきているようなので勉強もかねてレポートでやった内容や自分で考えてみたことを自分で理解したように(≠他人にも理解できるように)書いてみて学習帳にでもアップしようかと思っています。
さて、レポートを早いとこ片付けないと。

ミディビとパスワード

ミディビの具体的な仕様について考えてみます。
まず、掲示板と連携しなければいけないので、アプレットからCGIへとデータの受け渡しをしなければならないのです。
しかし、ブラウザの不調などで、アップロードはできたけど文章の記入ができないなどのトラブルが出てきそうです。
作品投稿→コメント記入→コメント投稿、という流れになるのですが、この途中で終わっちゃったりすることがお絵描き掲示板でも結構あるようなので、アップロードされたMIDIから、この流れを再開できるようにするのが必須だと思うのです。
お絵描き掲示板ではこのあたりどうやっているのかは知らないけど、今回はMIDIの中にパスワードを暗号化して埋め込むという方式を採用しようかと考えています。

非線形要素

Bomber丸Worldの要素のひとつ、非線形ダメージ特性。
属性別防御力は、すなわち攻撃耐性を意味し、少ない攻撃力ではほぼノーダメージだけど、ある臨界点を超えると、つまり耐性の限界に達すると急に大ダメージを受けるようになり、しかし限界まで行くとまた急にダメージが増えなくなったり。
例えば、なまくらな剣では切断ダメージなんて受けるわけないけど、普通の刀なら結構ダメージを受けるわけです。しかしながらその100倍鋭利な刃物を使ったとしても、決して100倍のダメージを与えられるわけではない。
ということです。
実際に非線形にするとややこしいことになるので、これは折れ線で近似することになります。

ふにゃさんエディタのステージタイトルの指定を作りました。
とりあえず何か作らねば、ということで。

レポートは無事提出完了≠完成。

個人的リンク消失!

自分用のリンク集プログラムを改良してみたら登録していたデータが半分吹っ飛びました。
レポートは今日中には終わらせるつもりです。

ちょっとね

Q&A設置しました。
サイトについて疑問があればどうぞ。

恒例

レポート中。

一応、ByteEditを更新したり掲示板にアイコンを1個増やしたりはしましたけど。

ファイル構造解析のために

日記と掲示板のプログラムをちょっと改良しました。
いずれもメンテナンス部門の変更なのでユーザーが使える部分では変更ありません。

FFCCでは、ちょっと気まずい手紙を拾って受け取ってしまったためリセット。
結構アイテム手に入ってたんだけどな。

ByteEditでも改良してみようかと思ったのですが、どうも今日中には間に合いそうにないです。
ファイルとの比較を作れば解析が簡単になるかなぁと思ってたり。

月影の祠

久しぶりにゼルダの伝説不思議の木の実時空の章をプレイしてみました。
三日月島でウロチョロしている最中で、盾だけ取り戻せていなかったようなので取り戻してダンジョンへ。
ワープポイントが作られていなかったからまだ未攻略のようです。

ふにゃさんエディタ、マップエディット画面からマップチップを呼び出せるようにしてみました。
いやぁ、これがないと不便で不便で。

物理シミュレーション

ゲーム開発のための物理シミュレーション入門という本を買ってみましたです。
使っている物理法則そのものはそう高度なものではないようですが、布のシミュレーションが面白そうだったので。
しかし予想以上にパラメータ変化にシビアなようで、ちょっとポリゴン数を増やしただけで布消滅。
果たして実際に使えるようになるのだろうか…。
剛体の衝突シミュレーションでもとんでもない飛び方してる様子だし。

もう少し細かくこれからの予定

もとのGBBSとあまり変えていませんが、掲示板を設置してみました。
一応専用アイコンにも対応したりエラー時の処理を改良したりもしています。
アイコンは今のところユーザーで利用できるのが1種類しかありませんが、順次増やしていく予定です。
予定ついでに今後の方針を言っておくと、自己紹介は統合してひとつに、ランキングやその他もろもろのCGIは多分そのまま、アンケートは削除するかも。
HPMもそのまま移転しない予定。パーミッションやら.htaccessの再設定が面倒くさいので。
リンク集は相互リンク以外は順次移転。相互リンクのほうは向こうから張り替えてくれたらこっちもTGWSのほうのリンクに移動。どことどこの相互かははっきりさせておきます。
チャットはその内気が向いた来店します。

<2005年07月 2005年05月>