2024年12月の日記

<2025年01月 2024年11月>

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

ふにゃ1(開発状況)

ちゃんと公開するためには同梱用のステージも入れとかないとね。
ゼロGステージはもともとステージじゃないふりをしたファイルを同梱しておいて、条件達成時にリネームする仕組みでしたが、元ファイルを削除されてしまったり、リネーム済みのファイルを持ち越して別環境で新たに始めると問題を起こすようになっていたので、仕組みから変えました。
実行ファイルに元ファイルが埋め込まれるようにしたので、リネームではなく新たに生成されるようになります。

起動時にはもう既にゲームが始まっていて動き始めているのですが、プレイヤーの気分としては、タイトル画面の見た目なので、動いてないつもりなんですよ。
だから、プレイ中のBGMがのっけから流れ始めるとちょっとおかしな気分になるわけです。
ということで、キャラクターの動作がタイトルの時点で始まるという挙動は維持したまま、BGMは気分的な開始のタイミングに合わせました。

これも細かいけど、初期フォルダの調整。
ステージファイルがある場所ですな。

ステージメーカーに流用するためにCleaterからステージ関連以外を分離してたわけだけど、本当に流用しようとしたら、分離がまだ足りなかったので、ステージのデータ関連と、ステージを動かす部分を分離しました。
本来は、ステージを動かす部分がステージのデータ関連を持っているhasの関係なのですが、それをやるにはちょっと密結合すぎてしんどかったので、ステージを動かす部分がステージのデータ関連でもあるというisの関係として分離しました。
実装的には、メンバ変数として持つか、継承するかの違い。

ということで、ステージメーカーの本格的な実装を始めようとコードをいじくりまわしたけど、まともに動くほど進行はしてないです。

いつもの。

いくつか大きな改善点や新機能を用意したもので忘れかけてたけど、このプロジェクトの今の目的は、公開停止したVB版の代わりを早期に提供すること。
だからこそ、本来最適であろうゲームエンジンを使わず、愚直なWPFを使ったのです。
ステージメーカーのほうは再現にとどまらない大規模改変になりそうだし、ひとまずここはゲーム本体だけで公開したほうがいいかも。

ドラゴンクエスト10(ミフミン)

  • クエスト「新春とってもヘビーな鏡餅」をクリアした!

お正月イベント「新春とってもヘビ~な鏡餅!」 (2024/12/27更新)|目覚めし冒険者の広場
蛇姫からのヘルプ巳~|目覚めし冒険者の広場
この辺やってた。
思ったより時間かかったので写真とかは年越し写真と一緒に明日の日記にでも。

ふにゃ1(開発状況)


本体と同じ問題抱えていたステージメーカーも作り直し!

これは本体側の話。
結局単なるHTMLファイルにしました。
WindowsHelpはもちろん、HTMLヘルプ(CHM)も、今どきのWindowsには搭載されていないし、XAMLはUI作成用であって文書作成向けではないので不適任。
別にファイルを隠したいわけでもないので、1ファイルにまとめていない単なるHTMLファイル群にしたというわけです。

これ、拡大率100%、つまり普通の画面だと、ふにゃが嫌な感じにぼやけてしまうので、調整した形です。
同じ症状はプレイ記録画面のバナナにも表れますが、文字列幅がどうしても少数になってしまう都合上、こちらの解決は難しそうです。

で、このコミットがステージメーカー側。
これまでずっと別の実行ファイルとして提供してきましたが、もうゲーム本体に組み込むことにしました。
マップメーカーはもともと複数ウィンドウを使うものだったのですが、なんかそういう構成はだいぶ前から使われなくなっているので、1ウィンドウに全部収める構成に変更しています。
ツールバーのアイコンは一応自作です。

ふにゃ1(開発状況)

アセンブリ情報からバージョン情報を取るように変更。
こうしたほうがバージョンアップ時に必要な修正箇所が少なくて済むし、何よりこれがVB版の挙動だったんですよね。
VB版はソース紛失でバージョンアップできなくなり、あの実装の恩恵を受けることはありませんでしたが、今回はちゃんとバージョンアップできる体制ですからね。

あとはヘルプを作り直すだけかな。
WindowsHelpはもう使えないし、HTMLかな。
あるいは、WPFらしくXAMLかな?

ふにゃ1(開発状況)


バージョン情報ダイアログも作って、本体の完成は残すところヘルプのみ。
こっから先は、各コミットに関するコメントを、昨日書けなかった分も含め、順不同で。

秘密機能のスピードオプションはVB版では2倍速と1/2倍速に変更できましたが、これに加え、10倍速と1/10倍速も選べるようにしました。
これは本来funyak向けに考えていた機能で、アクションが難しい部分ではスローにしたり、待つ必要がある部分で倍速にしたり、というのを想定したものです。
こういったピンポイント利用をしやすくするため、スピード変更機能にショートカットキーも追加しました。
激しく非推奨ですが、設定ファイルを直接いじると、50倍速までは出せます。

コミット履歴からもわかるように、WPFでは、キーボードショートカットとメニューに表記されているショートカットっぽいテキストは別物です。
ショートカットキーさえ知っていれば、未解禁のメニューも実質押せるってわけです。
なので、解禁前は、実行しようとしても無視するようにしました。

ふにゃが寝ます!
寝てるとかわいいので、WPF版に移植するとしても、絶対にここは外してはいけないのです!!

メッセージ表示をモードレスにした都合上、最初のタイトル表記の時点から「自爆」メニューが使えるようになってしまったので、それに対するピンポイント対応です。
自爆できないようにするというのも選択肢ではあったのですが、ここはなんかできるようにしときたいと思ったので。

今回WPFを使って実装を進めているわけですが、別にWPFに詳しいわけでも得意なわけでもなく、DataContextの設定の仕方すら満足に知らなかったのです。
開発を手っ取り早く済ませたい都合上、これまでも「WPFの機能をちゃんと知っていればもっと簡潔に書けるのに」と思ったことは何度もありましたし、これからも何度もあるでしょう。
今回のDataContextの件は、無事知ることができたので簡潔に書けた例です。
ま、まあ、コードビハインドの1行がXAMLの1行になっただけなので、行数的には変わってないんですけどね。
XAML上で候補が出るようになったのはうれしい。

ふにゃのバナナ数のカンストは現在5000ですが、もっとカンストらしく9999とかにしたいなーとか思って、その準備段階として、定数で書くようにしました。
なお、秘密機能の条件のほうは、要求数据え置きです。

昨日めちゃくちゃ頑張ってたのがここ。
今どきの言い方をするなら、実績とかアチーブメントとかいうやつですね。
VB版ではふにゃの顔をダブルクリックすると、殺風景なメッセージボックスに何の説明もなく数字とtrue/Falseが並べて表示されましたが、これをもっとわかるようにしたのがWPF版でのこの変更です。
取ったバナナの数をわかりやすく表記し、秘密機能もどれがどれかわかるように表示します。
あと、今更条件を隠す意味もないと思ったので、画面上に条件も表示するようにしました。

前後しますが、プレイ記録画面実装に合わせるため、秘密機能が出てきたときのテキストも変更しました。
名前とは別にプレイ記録画面で説明も出るようにしたので、名前としては簡潔なものにしました。
一応統一感を意識して、簡潔な英単語1語にしています。

サンプル画像を使うステージと、画像が無くなってた時のフォールバック対応。
指定された画像がないときは、サンプルステージ用の画像を使うようにしました。

ステージファイルを開くメニューから選択するのが面倒ってときに、エクスプローラーからドラッグ&ドロップできると嬉しいなってことで。
こういうのってビジネスソフト向けの機能な気もしますが、WPFがそもそもゲームよりビジネス用途向けの技術なんで、こういうのをするのは簡単なんですよね。

Cleaterがロジック全部込みの、いわゆる“神クラス”(参考)になっていて、機能調整しにくい状態になっていたので、分離して使いやすくしました。
本当はステージデータ関連を分離したかったのですが、ステージデータ関連はあらゆる機能に密蜜の密に密結合していて、分離しようとするとかなり大変なロジックの修正が必要になってしまったので、逆に考えてステージデータ無関係な部分をきりのいい単位で分離しました。

ステージデータ関連の処理を分離したかった理由がこれ。
GitHub Copilotが書いたコミットメッセージからは何も意図が伝わってきませんが、ステージデータの読み込みに失敗したときにバグらないようにする対応です。
読み込み途中は、ステージデータを持っているCleaterオブジェクトをもう一つ用意しておいて、読み込み成功したときだけ、ゲーム画面が持っているCleaterオブジェクト本体と置き換えるようにしています。
こうしたことで、失敗したときに、途中まで読み込んだデータで画面上のステージが書き換えられてしまうことがなく、壊れたデータを開いてしまったときにも安全になったのです。

これは共通処理の切り出し。

ふにゃのモーションがランダムに流れるバージョン情報も再現しました。
今のところ、実行ファイルのプロパティで見られるバージョンと自動連動する機能はありませんが、それも開発中です。
Windows Formsと同じ方法だとエラーが出たんですよね…。

日記に書くほどのものでもなさそうだけど、一応書いたので。

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

ドラゴンクエスト10(おきがえリポちゃん)

おきがえリポちゃん ~ 花華メイドレス&華商人のたすき ~ (2024/12/24)|目覚めし冒険者の広場
今月の貸衣装。

花華メイドレス花華メイドレス
女性陣の花華メイドレスはこんな感じ。
和風でメイドって言うと、女中かな。

華商人のたすき
男性陣の華商人のたすきはこう。
こっちはカミハルムイで普通に商売してそう。

ふにゃ1


いろいろ頑張ろうとしたらコミットが中途半端な状態になったので今日は画像だけ。
詳しくは明日の日記にでも。

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

書き忘れてたんで追記。

来週、もとい、来年の放送情報。

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

ふにゃ1(開発状況)

まあ、普通にメニューで選択中のオプションとか、機能の解禁状況で表示切り替えたりとか、そういう基本的なところですな。

GitHub Copilotにコミットメッセージ任せたらステージセレクトの件がスルーされましたが、オプション変えたときの反応です。
秘密機能本体の実装も進んできたというわけです。

大昔のソフトだし公式ページに全シークレット書いてるのでネタバレ自重しないんですが、無重力に関するバグ修正です。
ここはちゃんとVB6のコードを解析できていたのですが、なぜか解析したコードを転記していませんでした。
無重力で飛び上がったら天井に頭ぶつけるか死ぬまで操作が効かないって状況になってしまっていました。

ここは実質動きの変わらない気分的な修正。

ショートカットキーの実装です。
これまでメニューイベントはClickイベントで実装していましたが、ショートカットキーの実装に当たって、WPFの流儀に従ってコマンドで実装しなおしました。
ショートカットキー本体とショートカットキーの表示が別管理になっているというのがちょっと微妙なところですが。

時々やっとかないと忘れる説明更新。

浮き沈みランチャー

課題「#32 削除前に尋ねる」の対応です。
一行で終わり!

ウィルス扱いされる件の再確認が済んだら、リリースしようかと思います。
それまでは、単純に自分一人で便利に使います。
一応、CIビルド版はGitHub Actionsからダウンロードできます。

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

ふにゃ1(開発状況)

設定の保存名のReverseが機能解禁状況と設定値で同じになっていて、うまく読み書きできない状態だったので、解禁状況のほうを名前変更しました。
スピードのほうは最初から想定して「SpeedSet」にしてたのになァ。

VB版からのデータ引継ぎに対応しました!
ただ、今のところVB版とWPF版を共存できる環境がないので、テストはできていません。
また、最初にVB版のデータを引き継いだ後は、WPF版専用の場所に別形式で保存するので、VB版に設定を書き戻すことは想定していません。

ドラゴンクエスト10

魔法の迷宮ボスモンスター「人食い火竜」登場! (2024/12/23)|目覚めし冒険者の広場
新コインボス。
まだ戦ってないどころかコインすら当てていませんが、討伐報酬だけはクリスマスプレゼントでもらいました。
まあ、3キャラ合わせて福引券2万枚ぐらいはあるので、引いたらコインぐらいいくらか当たるでしょう。

ふにゃ1

設定&記録の読み書きができるようになりました!
これでバナナ収集要素も秘密機能も成立します。
もちろん、音楽とかの設定も、軌道のたびにやり直す必要はありません。
秘密機能由来のゲーム速度や重力などの設定も保存しますが、そのあたりは変数があるだけで中身は未実装。
あと、VB版とは記録場所が違うので、今のところ互換性はありません。
まあ、レジストリにいることはわかっているので、引継ぎ機能は作れると思いますが。

再生のたびにイベントをつけたり外したりしていたら、どこかで対応関係がずれるのか、ループがバグったりしたので、修正しました。

VB版にはなかった画面サイズ変更機能が付いたので、それへの対応。

VB版からの変更点追記。
コミットメッセージはAI任せにすることもありますし、今日のコミットにも使っていますが、これに関してはAIが大ウソついたので、手書きしました。

READMEに概要だけ書いたのを見て、ソースコードに実装したと勘違いするの、たぶん疑似相関に騙されてる感じですね。
疑似相関というのは、「体重の重い子供ほど学力が高い」みたいなやつで、本当は体重と学力に因果関係なんてないのに、年齢でどっちも上がっていくから、まるで因果関係があるような数値が出るんですね。
今回のでいうと、ソースコードに実装したら、文書にその概要を書き、コミットメッセージにも概要を書くわけです。
そうすると、ソースコード→文書、ソースコード→コミットメッセージの因果関係が生まれるわけですが、一つのコミットにまとめると、文書→コミットメッセージの因果関係もあるように見えるのです。
だから、論理的な判断ではなく、文字列の解釈だけで結果を出すようなAIは間違った結果を出すわけですね。

ドラゴンクエスト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が役に立つ時が来るとは!

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

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

ふにゃ1

ついに操作できるようになりました。
ボタン離したのを感知しないので走ったら走りっぱなしだし、足元の当たり判定がなんかおかしいようで、走った瞬間地面を貫通して落ち始めますが。
ここはコードのベタ移植じゃなくてちゃんと意味を把握して書き直さないといけなさそうですね。

あとは、今盛り込んでいる変更点をREADMEに追記しました。
リリース時に忘れちゃいそうだし。

ふにゃ1

ついに「動く」ようになりました。

画像読み込みに関しては、今日になってからStream経由で読み込む方法が分かったので、リソース→Stream→BitmapSource→Imageコントロールの経路で読み込むようにしました。
んで、いい感じに方法が確立できたので、マップ背景だけでなく、その他もろもろの画像も読み込むようにしました。
参考にしたのは以下のサイトなど。
アプリケーションのリソース ファイル、コンテンツ ファイル、およびデータ ファイル - WPF .NET Framework | Microsoft Learn
c# - IO.Stream to Image in WPF - Stack Overflow

MoveCharaとMainLoopがこの作品のゲームとしての中枢です。
もともとMainLoop関数はなくて、タイマーコントロールのイベント内に直接書いていたのですが、移植に当たって、ゲームのロジックの大部分が書いてあるCleater内に移しました。
ちなみにCleaterってモジュール名は、何かを生成することを意図してCreatorと書こうとして誤字ったんだと思われます。
もはや生成どころではない何でも屋になっているので、スペル修正はしていません。

ゲームの中枢はできたって言ったけど、操作受付はまだないので、落ちるだけです。
当たり判定もないので、床の下まで落ちていきます。
今後はそのあたりを重点的にですね。

ふにゃ1

コミット数多くなったけど、元のコードをだいたいサブプロシージャごとに移植してます。

バナナの絵は、もともとVB6に添付されていた矢印画像を使っていましたが、今回の移植を機に自分で描きなおしました。
元の画像よりちょっとスリムになっています。
いわゆる「おいしくなって新登場」ってやつです。

で、なんとかステージ画像が表示できるところまでこぎつけたんですが、WPFって画像処理まどろっこしいですね。
すぐに解決できない部分は、妥協して無理やりな方法使ってます。

とげの中でふにゃが笑っていることからもわかるように、まだまだゲームとして動く段階までは来ていません。

アンパンマンDBと𝕏

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

来週の放送情報。

𝕏(Twitter)

アンパンマン日替わり紹介botにせよワンドロにせよ、APIのレートリミットが意味不明なことになっていて、そんなに頻繁に投稿しているわけでもないのにToo Many Requestsのエラーがしょっちゅう起きています。
一時的なものかと思って様子を見ていましたが、収まる様子はないですね。
エラーを減らすため、投稿頻度を減らすべく、何らかの形で投稿内容をまとめていこうかと思っています。

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

ふにゃ1

まだゲームらしい部分は何一つ実装できてないけど、ゲームの動きに入るための入り口はできてきた感じ。

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

コラムから転記。

「命の星がない」「顔がない」「女の子になった」の3つは、項目名が説明的過ぎたので、個別記事化するのは見送りました。
「顔が欠けて力が出ない」みたいに他の記事の一部に組み込むことも考えましたが、それだとコラムの一部だった元のままと同じなので、それもなしにしました。
一応、アンパンマン日替わり紹介botには反映しています。

ふにゃ1

とりあえず枠組みだけ作りました。
いざコードを写そうとしたら、定義のない変数がいきなり使われていたりして、思ったより解析進んでなかったなという印象。
少なくとも単なるVB6→C#への翻訳ではいかなそうです。

ちなみに、元のソースコードを失った真相というのは、Cleater.basの白紙化です。
あの頃はバージョン管理なんて個人で使うものじゃなかったし、そもそもまだ知らなかったし、こまめなバックアップもしてなかったんですよねぇ。

今はGitで一挙手一投足は記録するし、GitHubにコピーは作るし、自動バックアップの仕組みも構築しています。
何より、今はソースコードがいきなり消えない!!

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

ふにゃ1

mifumi323/funya1_wpf: ふにゃ1のベタ移植プロジェクト
ゲームエンジンを使ってのいい感じのフルリメイクというのも考えたんですが、その前にまずは再公開に向けた、単なる移植をしておこうということで。
オリジナルのソースコードは紛失していますが、解析は進んでいるので、まあどうにかなるでしょう。

ドラゴンクエスト10

毎月10日はDQXで遊ぼう! ~みんな一緒に福の神まつり~ (2024/12/3)|目覚めし冒険者の広場
テンの日。
今回は福の神まつりだったそうなので、いつもより多めに迷宮回っときました。

Unity

先日GodotのDPI対応について調べたので、今度はUnityも調べてみました。
画像は割愛しますが、Godotがシステムで、Unityはモニターごと(v2)。

システムは、解像度がメインモニター基準固定で、別ディスプレイに行くと機械的に拡大縮小されてぼやけます。
最初の解像度対応さえちゃんとすれば後は全自動で、Godotは最初の起動時の状態をドットバイドットの表示にします。

モニターごとは、各モニターごとに解像度が再設定されます。
そのため、画面が切り替わるごとに処理が発生します。
起動時の状態は、Unityでもドットバイドットになりますが、別モニターに行くと結局拡大縮小が発生します。
ここで、3Dならば、解像度をちゃんと切り替えたうえで、新しい解像度でドットバイドットになるようにレンダリングできます。
しかし、2Dの場合、SVGみたいなベクターグラフィックでまない限りは、ドット数固定で、別解像度など存在しないので、機械的に拡大縮小するしかなく、やはりぼやけてしまいます。

うーむ、3DならUnityのほうが強いけど、2Dだと実質変わらないってことか。
2Dの作りやすさでいえば、Godotのほうがやりやすく感じたし、2Dゲーム開発するときはGodotを先に考えるようにしてみよう。

ドラゴンクエスト10とアンパンマンDB

ドラゴンクエスト10(ミフミン)

伝説の三悪魔闘

  • 【コイン】伝説の三悪魔闘をはじめて倒した!

ミフミンも倒せました。
さすがにしろいコキンのほうで何度か戦っていたので、対策はさほど苦労せず。

自分:ハンマー盗賊。とにかく敵の動きを止めまくる。呪文耐性厚め
サポ:扇賢者。回復&バフ&敵のバフ消し。ブレス耐性100
サポ:片手剣魔法剣士。敵がブレイクブレスならこっちはフォースブレイクだ!ブレス耐性100
サポ:スティック天地雷鳴士。呪文耐性補完とネクロゴンドの波動対策。ブレス耐性100

痛恨あるのわかってたのに会心ガードもせず突っ込んで私一人死んだ以外は、危ない場面は一つもありませんでした。

アンパンマンDB(システム)

なんか検索でエラーが起きてて、ちょっと心当たりがあったので調べていたのですが、ライブラリ更新中の一時的なエラーでした。
検索に使っているライブラリが、最新版を指定しているはずなのに古いバージョンが使われているという問題が、開発環境では発生していたんですよね。
今回起こったのは、更新作業中に一瞬ファイルが消えるタイミングにリクエストが重なってしまったからでした。

ドラゴンクエスト10

ドラゴンクエスト10(ァォィョッュ)

タロット魔人強

  • 【コイン】タロット魔人強をはじめて倒した!

多分ァォィョッュの強コインボス初撃破。
これもともと、ランダム要素強すぎな占い師4人組で戦う想定のボスなので、そんなに強くないんですよね。
そして、このボスはブレス攻撃が強く、ァォィョッュはブレス耐性100%。
相性抜群!
連続ドルマドン(呪文なので耐性なし)とかもぶちかましてきやがったのでちょっとびっくりする場面もありましたが、まあまあ問題なく倒せました。

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

第22回アストルティア★ハッピーくじ『年末大勝負くじ☆2024』 (2024/11/29)|目覚めし冒険者の広場
ハッピーくじ買いました。
今回はちゃんと全員全町で買えました。

アンパンマンDBと浮き沈みランチャー

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

来週の放送情報。
2019年の再放送です。

浮き沈みランチャー

Create dotnet-desktop.yml by mifumi323 · Pull Request #41 · mifumi323/FLaunch
CIビルドの設定、実はずっと以前から作っていたのですが、コミット忘れてました。
ということで、作ったやつをそのままコミット。

Create dotnet-desktop.yml · mifumi323/FLaunch@9f4443b · GitHub
CIビルド結果がこちら。
ずっと前のファイルですが、うまく動きました。
試しに成果物をダウンロードしてみたのですが、もしかしてこれ、ウィルス扱いされずに済んでる…?
ってことは、「[1.8.0] Trojan:Win32/Wacatac.B!ml と判定される件の対策 · Issue #39 · mifumi323/FLaunch」の課題も解決してるかもしれないってこと?

ふにゃ1


VB6本体入れたら動きました。
ということはVB6ランタイムの何かが足りなかったということ?
他のVB6製ソフトがVB6本体入れる前から動いている以上、足りないのはVB6ランタイムそのものじゃないはず。
かといって、個別のコンポーネントかというと、それを個別にインストールしても何も進展がなかったのです。
ということは、足りなかったのは、素のVB6ランタイムになくてVB6本体に入っている何か、ということに。
メディアプレイヤーを埋め込んでいるのでそれ関係の可能性はあるけど、うーん…。

マウス

BSMBU26SMBK : マウス | バッファロー
買い換えました。
静音マウスなので、クリック音は小さめ。
クリック感は重すぎず軽すぎず、「静音なのに確かなクリック感」の謳い文句の通り。
ケーブルがちょっと硬いけど、ケーブルが邪魔にならない配置にしたから問題なし。
前回使っていたマウスより動きが遅くなったけど、これは設定をいじって解決。

一応ゲーミングマウスも検討したんだけど、マウスの正確かつ高速な操作が求められるゲームはしないし、3ボタンとホイール以外の機能は私にとって邪魔になったことしかなかったし、今回は除外しました。
有線タイプにしたのは、電池交換が面倒だから。
最初に入った電池で10年持つんなら無線でもいいんだけどね。

Godot


ふにゃ1を移植することを念頭に、ドット絵が動表示されるのか確認。
メインディスプレイでは、1枚目のように、原寸で表示。
ディスプレイの拡大率は200%に設定されていますが、拡大されずに表示されています。
より正確に言うと、ゲーム本体ではない外枠だけが拡大されています。


これを、拡大率100%のサブディスプレイに移動すると、全体が200%→100%で半分サイズになって、ドットが潰れました。
ゲームはマルチディスプレイ環境でもメインディスプレイだけで遊ぶことがほとんどだとは思いますが、一応注意が必要かもしれませんね。

具体的にどう注意するのか…というと、それはまあ、ゲーム画面の物理ピクセル数を見て個別に判断する…ってことになるかなぁ。

アンパンマンDBとドラゴンクエスト10とNode.js

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

コラムから転記。
情けないアンパンマンですな。

ドラゴンクエスト10(ァォィョッュ)

強ボス。
普段は書かないけどァォィョッュにとっては強敵でありますからして。

(ネタバレでありますからして)

魔女グレイツェル強

  • 【強モード】魔女グレイツェル強をはじめて倒した!

他の二人はずっと前から楽勝だったから、ァォィョッュでも行けるだろうと踏んで挑戦。
このボス、次々と増援を呼ぶタイプだから、サポート仲間で一気に片を付けられる他の二人では簡単だったんですな。
サポートをつけず、多くても仲間モンスター+幻魔の3人体制にしかできないァォィョッュだと、どんどん仲間を呼ばれててんやわんや!
敵の一撃もァォィョッュからすると重いし、状態異常耐性も必要なのを盛れてないから、もう誘われてダンスフィーバーです。
手持ちの装備でできる限り呪文耐性を盛って、敵呼ぶやつを優先的に攻撃し、それでもひやひやする場面が多々ありました。
これだとバージョン7.2の強ボス組も厳しそうだな…。

他の写真は以下から。ついでに倒されたラズバーンも。
写真置き場「2024/12/02」

Node.js

Node.js — Run JavaScript Everywhere
Node.jsのバージョン、最新版が23、LTS(長期サポート)が22。
昔アップデートしたときは13だったから、ずいぶん進みましたな。
またJavaScriptを使ってやりたいことができてきたので、この機会にアップデートしておきたいですね。
たまにしか使わないから、サポート短い最新版よりは、LTSの22のほうがいいかな。

ふにゃ1

ふにゃ1、こっそりひっそりダウンロードコーナーからファイル消しました。
動作対応環境でも動かない問題とは別の問題も発生したのです。
問題のあったファイルを削除して再掲するか、フルリメイクするかは未定。
本当はフルリメイク相当のことはfunyakのプロジェクトでやりたかったんだけどね。

<2025年01月 2024年11月>