【Day 27】物理エンジンの沼に沈んだ日。自作で挑んだ『マシュマロ・チャレンジ』の敗北記録 #30日アプリチャレンジ

30日間毎日アプリを作るチャレンジ、27日目。 残り数日というところで、私は大きな過ちを犯しました。

**「物理エンジンの沼」**に手を出してしまったのです。 しかも、ライブラリに頼らず自前で実装するという無謀な挑戦に。

結果から言います。失敗作です。 思っていたようには動かず、時間切れ。泣きたい気分ですが、「失敗しても必ず公開する」というマイルールに従い、今日の「敗北の記録」をアップします。

📱 Day 27:マシュマロ・チャレンジ(未完成)

乾燥パスタ20本を使ってタワーを作り、最後にマシュマロを乗せて高さを競う、あの有名なチームビルディング・ゲームをブラウザ上で再現しようとしました。

👉 崩壊するタワーを見る(デモサイト) https://kotodamablog.sakura.ne.jp/30days_antigravity/27Day/index.html

📉 なぜ失敗したのか?「自作物理演算」の壁

昨日のアプリ(消しゴムのカス)では、既存の物理エンジンライブラリ(Matter.js)を使い、その凄さを実感しました。 しかし今日は、あえてライブラリを外し、「パスタの強度」「荷重」「重心のバランス」を自前の計算式で再現しようとしたのです。

AI(Antigravity)と協力して、複雑なロジックを組み込みました。

1. 荷重と強度の計算 パスタの長さと角度から「どれだけの重さに耐えられるか」を計算する処理(judge()関数内)。ここまでは良かったのです。

2. 重心バランスの計算 構造物全体の重心(Center of Mass)を計算し、支持基底面(地面に接している範囲)から外れたら倒れる……という処理を書きました。

3. そして崩壊(バグ)へ いざマシュマロを乗せると、想定外の崩れ方をします。 パスタがすり抜けたり、空中で静止したり、逆に何もしていないのに爆発四散したり。 線分同士の衝突判定(intersect()関数)や落下アニメーション(tickFall())の調整が、1日では到底間に合いませんでした。

🏳️ 物理世界の難しさを知る

「現実世界では当たり前に起きていること(物が落ちる、ぶつかる、支える)」をプログラミングで再現するのが、どれほど狂気的な計算の上に成り立っているのか。 今日1日で、その難しさを骨の髄まで理解しました。

物理エンジンを作っている世界中のエンジニアの方々、本当に尊敬します。

🍵 27日目を終えて

30日チャレンジの中で、一番の挫折感を味わっています。 でも、これが個人開発のリアルです。「毎日作る」という制約の中で、時には自分の実力以上のものに手を出して火傷することもあります。

残り3日。 今日の悔しさをバネに……というよりは、明日は確実に見栄えがして「ちゃんと動く」ものを作って、メンタルを回復させたいと思います(笑)。


#Antigravity #アプリ開発 #物理エンジン #アルゴリズム #失敗談 #マシュマロチャレンジ #30日間チャレンジ #Day27 #個人開発

コメントを残す