「funyak」に関する日記(2)

<前 次>

funyak

Unityはひとまず置いといて、こっちの課題進めてみることにしました。
ただ、こっちもこっちでリソースの扱いについてそろそろ本格的に向き合わなきゃならなくなるんですよね。
タイルマップ読み込みには、マップチップの並びのほかに、マップチップ自体の画像と当たり判定も必要で、その画像が問題なのです。
最終的にはWPFじゃなくてUnityあたりで動かしたいと思っていて、だから両方に対応できる読み込み方をしなきゃならないわけです。
マップチップの並びの方は課題コメントに書いた通りでどうにかなりそう。

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

funyak

廃止しました。
実用的に使っているどころか他でできている処理の重複で邪魔しかしていなかったので、削除は簡単に終わりましたね。
次やる課題は考えていないのですが、ここらで一度Unityから呼び出すのを試してみたいところ。
そう考えると、まずは単にUnityをそれなりに使えるようになるところからかな。

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

来週の放送情報。
前半はともかく後半はばいきんまん受難の予感しかしない。

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

ハッピーくじ購入。
最近はスマホのツールでも買えて、各駅回る必要がなくて便利。

ハッピーくじの話題も定期的にするから日記の分類に追加してもいいかなとか思ったけど、冷静に考えて、くじ購入報告だけ探して読みたい需要なんて考えられないな。

funyak

この課題、完了しました。
ステージファイルのareasを全部消してしまえばあとはAreaEnvironmentを削除するだけの作業でした。
が、ここに来てちょっとだけ困ったことが発覚。
AreaEnvironmentは表示順がふにゃより前なのでふにゃごとステージを覆い隠すような見た目だったのですが、後継となるRegionMapObjectはふにゃより後ろなので、ちょっとふにゃが浮いて見えるのです。

ということで、表示順制御機能を付けることにしました。
まだ課題立てただけで、実装は始めていません。
あくまでも見た目だけの問題で、先にやるべきことではないですからね。

次やるのはこれです。
Vector2Dに当たり判定情報を付けたやつですが、それはPlateColliderとNeedleColliderの役目で、役割重複なので、AreaEnvironmentと同じく廃止の方向で進めます。
もうすでに実用的に使っている部分は皆無なので、AreaEnvironmentの件よりは速く済むと思われます。

funyak

これに取り掛かり中。
…なんですが、実際の作業としては周辺の土台固めと言ったところです。
直接進展しているのは#22の方。
もうすでにシステム的にはAreaEnvironmentは必須ではなくなっているので、今後はテストプログラムからAreaEnvironment関連を抜いて、それからAreaEnvironmentの実体も消していく方針です。

funyakとアンパンマンDB

funyak

この辺の課題、ちょっと当初の見立てが甘くて、そのままやるわけにはいかなくなったので、ちょっと当初の予定とは違う形での対応になりました。

これはそのままでよかったのでそのまま対応。

あと、これに取り掛かりました。
これも削除系の課題なのですが、結構重たい課題なので、時間かかりそうです。
こういう削除系の課題は、追加実装系の課題の足を引っ張る要素なので、早めに潰しておきたいものです。

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

情報提供の反映。

funyakとドラゴンクエスト10

funyak

完成させる気あるのかないのかわかんないプロジェクトだけど、とりあえずTileGridMapObjectの件は一区切りつけてmasterにマージしないと他が何も進まないので、残った厄介なパターンだけ別課題に切り出して、masterにマージしてしまいました。

それから、開発環境新しくするためにいろいろバージョンアップ。

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

ガズバラン王子
バージョン4.1クリアしてバージョン4.2に突入しました!

(ネタバレのはなし)

魔軍十二将
不死の魔王城に突入!そして全盛期の魔軍十二将と決着!
ドラゴンガイアの全盛期の竜眼でダメージ完全ガードされてめんどくさい以外は特に苦労することもなく。

不死の魔王ネロドス
この時代の魔王も討伐!
何度もアルヴァンさんに突入されてたからか、なんか腐れ縁みたいになってました。
カミルさんは結局来ず、アルヴァンさん一人で秘術を使って不死の魔王を封じたものの、史実通りに闇落ちしてしまいました。
で、不死性の源となっていたコアは、アルヴァンさんが闇落ちした関係で壊せず、いつものパドレさんが勝手に持って行ってしまいました。
一応主人公介入による歴史改変でカミルさんの名誉は回復したようです。

無限獣ネロスゴーグ
そして現代に秘術を持ち帰ってネロスゴーグとも決着。
秘術は正しく使ったので、アンルシア姫は闇落ちせずに済みました。
それにしてもこの尻尾の斧、不死の魔王が使ってた武器とデザイン同じなんだよなあ。
まさか不死の魔王第二形態だったりする?

オルセコ闘技城
その後は終焉の繭がオーグリード大陸に移動したのでそっちで調査していたら、悪鬼ゾンガロンが復活して、対策を考えるためゾンガロン全盛期の時代に行くことになりました。

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

Haxe(Today I Learned)


Haxe、興味は持ちつつも全然触ってなかったので、ちょっと手ごろなサンプルコードをAIに出してもらいました。
コマンドは少々修正が必要だったけど、コードの方は特に問題なくビルドできました。

出来上がったコードは、C#側は.NET Framework 2.0、PHP側はPHP 7.0相当のコードが出てきて、両者とも、Haxe自身の言語仕様やライブラリとの互換性のためのファイルがいくつか追加されていました。
C#の方は、丁寧にもDLLにまでビルドしてくれたので、コードで共有しなくても、このDLLをプロジェクトに追加すれば、Haxeで作ったライブラリをC#で使えることになります。
PHPの方は、パッと見た感じ、互換性用のファイルが、PHP 8.2ではエラーになりそうな感じだったので、何か追加対応をしてエラー解消するか、これのためのPHP 7.0サーバーを作るか、何か対応が必要そうです。

プロジェクト実質停止してるけど、funyakあたりでも何かしらの形で使ってみたいんですよね…。

アンパンマンDBとfunyak

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

「ロボリィとぽかぽかプレゼント(2023劇場版ベストCD)」の商品情報を追加
映画サントラの情報が来たので記入しました。
6月28日発売のようです。

funyak

TileGridPlateCollider 斜めの通常ケースの境界線算出 · mifumi323/funyak@7352c7c
角の特殊パターンの前に、斜めの通常パターンを完成させることにしました。
できていなかった境界線の算出は、角の特殊パターンでも使うので、マップオブジェクト側に共通処理として作っておきました。

アンパンマンDBとfunyak

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

キャラ「ナポレオンパイくん」を追加
キャラ「シャルロットさん」を追加
最近登場した2名を追加。

funyak

角に当たった場合のパターンを表にするとこんな感じ。

A手前横B手前縦C奥横D奥縦対象
N/A
oD
oC
ooCD
oB
ooBD
ooB
oooBD
oA
ooA
ooAC
oooAC
ooAB
oooAB
oooAB
ooooAB

法則性としては、手前に壁があると、方向の違う奥の壁が隠れる、といったところですね。
この表の通りに16パターンをそれぞれ実装するより、法則性をうまく使って効率よく済ませたいところ。

funyak

角にぶつかった特殊パターンについて考えています。
座標上の角にぶつかった場合、壁としては、最大4つ(手前と奥、縦と横の組み合わせ)とぶつかる可能性があります。
一方、共通当たり判定の仕様としては、一つとしかぶつからないので、どれか一つを選ぶ必要があります。
もちろん、いつも4つ壁があるわけではなく、2つだったり、全くなかったりというパターンもあります。
0は言うまでもなく当たりなしで、1はシンプルに当たった一つの壁を採用すればよく、4つは手前2つを合成すればいいはず。
組み合わせパターンの多彩な2と3が厄介なんですよね。

funyak

TileGridPlateCollider 斜めの当たり判定 · mifumi323/funyak@c783055
斜めの当たり判定、頑張りました!
ただ、まだ接地面データの生成とか、角にぶつかった特殊パターンができていないので、斜めが実用的になるにはもうちょっとかかります。
今のところは垂直な当たり判定しか必要とされていないので、ここ作りかけのまま他を進めるというのも手ですがね。

Woodokuとfunyak

Woodoku

ゲーム記に『Woodoku』を追加
ちょっとやってて画面写真撮ってたやつ、ゲーム記に記事作りました。
せっかく撮った写真がもったいないぐらいの感覚で記事作ってもいいかなーという考えで。
記事内に書いてあるように、ゲーム自体は広告がうるさかったのですぐ辞めました。
広告が気にならない人にはいいゲームかも?

funyak

TileGridPlateCollider.IsCollided 頻出の単純なパターン · mifumi323/funyak@9e7c08a
このコミットだけじゃないですが、タイルの当たり判定、ごっそり書き換えました。
流石にあの分岐の量を一つ一つ実装していくのは無理があったので。
特に実装が簡単かつ頻出な5パターン(マス内+軸並行上下左右)を個別実装にして、それ以外の斜め全般を汎用実装にすることにしました。

funyakとアンパンマンDB

funyak

TileGridPlateColliderにTODOコメント追加 · mifumi323/funyak@460f1da
久々に進めようかと思ったけどどこまでやってたか覚えてなかったので、ちょっと次やるところにTODOコメント入れておきました。
シンプルな上下左右は判定自体は難しくないけど交差位置の検出が面倒そうかな。

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

トップページの今年の映画カウントダウンを入れておきました。
5月31日以降、カウントダウンが開始されます。

アンパンマンDBとfunyak

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

キャラ「ニコラちゃん」を更新
担当声優が判明したのと、情報提供の反映です。

funyak

TileChipを共通当たり判定対応の形式に書き換えました。
で、昨日はテストが全パターン網羅していると言いましたが、判定の速さとか考えると、場合分けをもうちょっと増やした方が良さそうなんで、テストも増やす必要がありそうです。
当たり判定そのものの実装は進んでいません。

funyakとドラゴンクエスト10

funyak

[追加]TileGridPlateColliderTest · mifumi323/funyak@49f7820
とりあえず、自動テストの方を先に作ってみました。
当然ながら、実装してないのでテストは失敗します。
一応全パターン網羅しているので、テスト成功するまで実装頑張れば完璧なはず。

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

モバーとイール
本当はクリスマスイベントの方をやろうと思っていたのですが、つい目についてしまったので、ポケット映写機のクエストを先にやりました。
クエストの内容としては単純なお使いだったのですが、困りごとかと思ったらいきなりセールストークが始まったり、幼い日の兄弟の夢が年老いて以前の仕事を現役引退した今だから実現できたりと、短いながらも印象的なクエストでありました。

funyak


遅々として進まないプロジェクトですが、なんとか進展しました。

1.今やりたいことは共通当たり判定で、
2.共通当たり判定未対応の最後の対象がタイルマップで、
3.それを実装するにはグラフィカルに動作を確認したくて、
4.確認するにはタイルマップに当たる側のテストに適したものが必要で、
5.当たる側も表示できるようにしなきゃいけない…
という状況でした。

ということなので、
5.を最低限の労力で実現するために、既存の“板”のマップオブジェクトと新規の“針”のマップオブジェクトの共通項“線”のマップオブジェクトを作って、既存の板の表示ロジックを線に対して行うようにしました。
4.は、針のマップオブジェクトを線の派生として作りました。
これにより3.が表示できるようになったので、針を始点と終点それぞれ動かせるようにして、当たったら表示できるようにしました。
で、やっと2.に本格的に取り掛かれるようになったというわけです。

これさえできれば開発の枷となっているCollidableSegmentとかColliderBase.Shiftとかも消せるので、開発も加速できると思うのです。

アンパンマンDBとfunyak

アンパンマンDB

Twitterのハッシュタグのページを更新
「ロールパンナ誕生祭2022」と「メロンパンナ誕生祭2022」の追加です。
この二人のタグは毎年増えるんですね。

funyak

[追加]タイルの当たり判定テスト画面(作りかけ) · mifumi323/funyak@bd47424
当たり判定作るのにどこが当たったか見た目で分かるようにした方が作りやすそうだったので、画面も作ることにしました。
典型的な上下左右の当たり判定だけならこんなのなくてもどうにかなるのですが、一応斜めも対応することになっているので、様々なパターンを見ながら試せるように。
今のところ、線のテストの流用で、小さいマップが表示されるだけです。

日記とfunyak

日記

内部処理をいじって、カテゴリの処理を切り分けました。
内部的に使ってるけど日記では何の意味もないシステムを削除したくて、でも結構影響範囲が大きくて、なので、影響範囲を狭めつつ、リグレッションテスト可能なように作り替えているということなのです。
ついでにテストのカバレッジも上がるので、精神衛生的にもよくなります。
なお、外部仕様を1ミリも変えない内部仕様の変更なので、これが成功した暁にも読者にとっては特に意味はありません。

funyak

コーディングは1行も進んでいません。
タイルの当たり判定をしっかりやろうとすると、様々なテストパターンが必要なわけで、抜け漏れないか確かめるなら、グラフィカルに表示できた方がわかりやすいし、何より楽しい!
というわけで、タイルと当たり判定図形(線)を描画して当たった位置をリアルタイムに表示できるものを作りたいなというところ。

アンパンマンDB(みんなのタグ)とmifumitterとキャラ倉庫とfunyak

アンパンマンDB(みんなのタグ)

トップページでも不適切タグは表示しないようにしました。
アクセス解析のタイミングで表示切替するのでタイムラグはある程度ありますが。

mifumitter

リツイート周辺表示へのリンクをちょっと調整。

キャラ倉庫

コードネーム:テツ – 美文のキャラ倉庫
昔の日記で紹介していたキャラ案、固まってはいませんが、ちょっと設定を増やしてキャラ倉庫に入れておきました。

funyak

[追加]TileGridPlateCollider · mifumi323/funyak@19f31cc
タイルの当たり判定の続き。
とりあえず、一番実装が楽な、タイルをまたがってなくて当たってないケースだけ実装しています。

ColliderBase.Shiftいらないのでは? · Issue #59 · mifumi323/funyak
さっきのソースコード中にも書いているのですが、当たり判定を移動するメソッド、いらないのでは?って思っています。
タイルだと特に、当たり判定とマップオブジェクト本体が不可分になっているので、当たり判定だけ動かすというシチュエーションがなく、マップオブジェクトの変更に当たり判定が追随しないというシチュエーションもないのです。
じゃあ他のマップオブジェクトはどうかというと、テストだけ作って実際には一つも使っていないのです。
後で使うかもと思って作ったものが後になって邪魔になるパターンですね。


この辺の書き方について、助言いただきました。ありがとうございます。

<前 次>