日記(84)

<前 次>

ドラゴンクエスト10とふにゃ1

ドラゴンクエスト10(全員)

  • クエスト「もうひとつの星夜祭」をクリアした!

クリスマスイベント「もうひとつの星夜祭」 (2024/12/4)|目覚めし冒険者の広場
ふにゃ1の移植で忙しいけど、そろそろ期限も近付いてきたのでやりましたよ。

闇のクリスマスツリー
クリスマスツリーがまがまがしくなっています。
でもこれはこれで好き。

帝国の闇サンタたち
メインストーリーのネタバレじゃないイベントボスなので隠さず写真載せるよ。
帝国三将軍のクリスマスバージョンです。
冬のイベントボスがたまに使う雪だるま攻撃、今回はふんだんに使ってきました。
あっちもこっちも雪だるま!

ボンボントップスセット
クリア報酬は装備品のボンボントップスセット。
足装備だけ、クリア後の収集要素として、タイツ(ハイソックス?)付きの靴もあります。
写真で穿いてるのがまさにそれ。
ここには直接載せないけど、このセットとは別に傘装備の羽をつけてもいい感じ。

スイートノエルチェア、スイートノエルテーブル、ガラスのツリー
イベントエリアで買える家具はこんな感じ。
机と椅子はファンシー系を目指すハウジングなら季節問わず使えそう。
ガラスのツリーは庭用もあります。

他の写真は以下から。
写真置き場「2024/12/23」

ふにゃ1

音楽の設定画面の調整。
デフォルトで音楽鳴らさないようにしておくと、ファイルだけ設定しても鳴らないので、ファイル設定だけでなるようにデフォルトでオンになるようにしておきました。
さらに、オフなのにファイルを設定して混乱しないように、オフの間はファイルを設定できないようにしました。
ちなみにこのコミットメッセージはAI製。

ループ機能も実装しました。
VB版ではコントロール自身がよしなにしてくれていたのですが、WPF版ではループ用のコードを書いています。
さらに、WPF版では、ループするかしないかの設定もできるので、音楽としてファンファーレみたいな短いのを設定しても違和感なく鳴らせます。
このコミットメッセージはAIが出したのがろくでもない内容だったので心のこもった手書きです。

ふにゃ1

今回は音楽中心なので画面写真なし。

画像が一部欠ける現象、Widthプロパティが(もちろんHeightプロパティも)DPI依存で、古いビットマップ画像のDPIがなぜか95.95とか96.01とか、ぴったり96じゃないのが原因でした。
そうはいっても、ピクセルデータを持っていないはずがないので、ピクセル関係のプロパティを調べたら、そのものずばりなPixelWidthがあったので、それを使うようにしました。

変更点追記だけ。
…だけなのに、GitHub Copilotにコミットメッセージ任せたらとんでもないこと言い出したので、結局ほとんどコミットメッセージ削りました。

秘密機能だけじゃなくてバナナ取った数とかも入れていたので、しっくりくる名前に変更しました。

今日の本命、音楽再生。
VB版ではWindowsMediaPlayerを埋め込んでいたので、それに倣ってWPF版ではMediaPlayerを使っています。
やろうと思えば動画も音源にできますよ。

これはまあ、いつかやらないといけない、内容を変えないリファクタリング。

ふにゃ1


ステージ読み込みができるようになって、昔の動きがかなり再現できてきました。

昨日作っていた画面サイズ設定機能が完成しました。
小さくしたらこれ。
大きくしたらこれ。
最初に実装したウィンドウサイズ自動調整機能と正反対の機能なので、ちょっと時間がかかってました。

これ、バージョン1.0で廃止したんですが、実は実装だけ残っていたので、これも移植しました。
この演出が出るステージは、今のところ存在しません。

VB版ではメッセージはモーダルダイアログで表示していたため、閉じるまでメニュー操作ができませんでした。
それを再現するため、同一ウィンドウでモードレスになったC#版でもメニューを使用不可にしていました。
しかし、冷静に考えて、メニューが使えないのは不便でしかなかったので、バグらないように調整して、メニュー解禁しました。

ステージ読み込みのための一番大変な機能、ファイル読み込みを移植しました。
VB6のファイル読み込みは非常に癖があり、コンマと改行を区別しなかったり、読込先の変数の型によって処理が違ったりしてたんですよね。
完全ではないですが、再現しました。
本当はテキスト内のコンマとか引用符の挙動とかがさらに厄介なんですが、そこは妥協しています。

そして、ついにファイル読み込みができました!
実は画像が一部欠けたりして微妙な部分もあるのですが、とりあえず今までに作ったステージも大部分遊べます!

あとは、セーブデータ関連と秘密機能関連と、ヘルプも時代に合わせて作り直しかな。

アンパンマンDBとTGWSAdminとふにゃ1

アンパンマンDB(記事更新)

来週の放送情報。
ガレットさんは新キャラですね。
クレープの亜種みたいな感じ?折り畳みがポイント?

TGWSAdmin

いつも記入している定型データの記入が簡単になるようにテンプレート機能を追加。
簡単に実装できる割りに効果高いんだからもっと早く作っときゃよかった。

ふにゃ1

昨今の高解像度環境対応のため、画面サイズ変更機能を実装中。
実はふにゃさんでもやろうとしたことがあったんですが、あの時は頓挫してたんですよね。
今回はWPFなんで拡大縮小処理はフレーム側にお任せで楽ちんです。
まあ、今は画面写真を出せないぐらい挙動が変なんですがね。

GitHub Copilotとふにゃ1とFamiTracker

GitHub Copilot

Announcing GitHub Copilot Free - GitHub Changelog
なんか無料枠ができてました。
以前からちょいちょいお試しで触ってはいたんだけど、本格的に使い始めてもよさそう。
まあ、あまり本格的過ぎると無料枠の限度に達してしまうかと思いますが。

ふにゃ1

今回はスクショなし。

この辺はバグ修正。
カウントダウンのほうは、メッセージ表示にダイアログボックスを使わなくなったことで発生した初期化漏れ。
キー入力のほうは、リセットのコードが解析で出てこなかったので、原作でももしかしたら発生していたかもしれません。

これは単にコードを移植しただけ。
先ほどのGitHub Copilotに一度書かせてから、手直しして作ったものです。
コミットメッセージは、全面的にGitHub Copilotに任せました。
基本的に全面的に信用してプログラミングを任せるのはありえないですが、修正する前提で案を出してもらうとか、少し変でも害の少ないコミットメッセージあたりに使うのがよさそうかな。

ここはメニューの機能の実装だけで、実際の読み込み処理はまだ作っていません。

FamiTracker

ふにゃ1にはもともとBGMはついていなくて、プレイヤーが好きな音楽をかけられるだけでした。
せっかくの移植だしここらで標準のBGMでも作ってみようかと思って思い出したのがこれ。

FamiTracker
ファミコン音源で音楽作れるやつです。
単に音がファミコンっぽいってわけではなく、しっかり制限事項も含めてファミコンの仕様で音が鳴ります。
前回使ったのが2008年だから、16年ぶりか…。

ふにゃ1と浮き沈みランチャー

ふにゃ1


ステージクリアとゲームオーバーができた!!

食べ物取得処理…と、やられ判定も実はここ。

メッセージやらマウスカーソルやらでとかく隠れがちなふにゃの顔を何とか見せようとする修正です。

全クリの演出はVB版から仕様変更しています。
秘密機能を解放しても終了しない、複数の条件を満たしたら連続で取得可能、といったあたり。
あと、メッセージ表示が実質非同期になった関係で、内部的な処理の流れも変更しています。

これは単なる便利メソッド。

やられた時の演出。
ゲームオーバーも作っていますが、コンティニューの処理はまだテストできていません。

浮き沈みランチャー

昔立てた課題の内容を忘れてしまったので思い出そうとしているところ。

ふにゃ1


だいぶ動くようになってきました。
バナナ取得とミスを作ればとりあえずゲームとしては成立するようになります。

キー押しっぱなし暴走モードを止める、キー離す処理。

この辺は動作に係わらない微妙な修正です。

昨日の状態で床をすり抜けていたのは、移植の際に動く方向を間違えて設定していたことによるバグでした。

WPF標準のタイマーだと動きががたがただ立ったので、funyakプロジェクトからタイマー処理を移植してきました。
まさかエターナってたfunyakが役に立つ時が来るとは!

地形との当たり判定。
これでとりあえず不自由なく走り回れるようになったわけです。

事あるごとに出てくるメッセージボックスも実装しました。
もともとはダイアログボックスで表示していたのですが、タイマー処理中にダイアログボックスで処理を止めてしまうとまずかったのと、ダイアログボックスを閉じると元のウィンドウが別のウィンドウの後ろに回り込んでしまうという謎現象があったので、同じウィンドウ内に普通のボタンとして表示することにしました。
ついでに、コンティニュー演出時のキャンセル機能を独立したボタンにしたり、補足説明を右下に表示できるようにもしました。
秘密機能とか、もともとは番号しか表示されなくて、何の機能が解放されたかわかんなかったですからね。

<前 次>