日記(1027)

<前 次>

動けるぞ!

ゲーム記、プレステのとこ、更新しちゃいました。
標準語にしたのと、ドラクエ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はある程度自立したオブジェクトを使うためのものなのですが、今回は完全にマップに癒着したオブジェクトなので、マップと関連付けられるオブジェクトが必要だったのです。

<前 次>