top of page

すべてのブロックは固い ― そうでないときを除いて

執筆者の写真: Marcel Dütscher
Marcel Dütscher
6月22日
読了時間: 2分

私たちのクライアントのメッシャーには、鉄の掟があります。空気ではないブロックは、すべて描画され、当たり判定を持つ。以上です。この単純化のおかげでメッシュ化は速く、コードもシンプルです。ところが、まさにこのルールを破りたがる機能が現れました。


エネルギーゲート。エネルギーフェンスに、ゲートがほしくなりました。プレイヤーと味方のNPCはそのまま通り抜けられるけれど、野生の動物は通れない、きらめく膜です。つまり、見えているのに、一部の相手にとっては壁にならないブロックです。私たちの設計には、まったく想定されていないものでした。


解決策は二つの半分でできています。クライアント側では、メッシャーに初めて意図的な例外ができました。ゲートのブロックは描画されますが、当たり判定のメッシュからは除外されるので、プレイヤーはそのまま通り抜けられます。サーバー側では、本当のロジックが動きます。生き物の移動システムが一歩ごとに、エネルギーの壁が行く手にあるかどうかを確認するのです。野生の動物と敵は引き返し、仲間とプレイヤーは通れます。このチェックは、野生動物、仲間、惑星の敵という三つの移動システムすべてに入れる必要がありました。そうしないと、ある種類の生き物だけがゲートの存在を「知らない」ことになってしまいます。


正直な補足:飛ぶ生き物は、フェンスの上をすーっと越えていきます。これはバグではなく、記録に残した制限です。フェンスは、飛ぶものを止められないのです。こうした意図的な抜け穴は、隠すより書き留めておきたいと思っています。


残る教訓は、「空気以外はすべて固い」のような設計ルールは、シンプルだからこそ価値があるということです。ただし、たった一つの例外がどこにあって、なぜそこにあるのかは、知っておかなければなりません。

最新記事

すべて表示
新しいバージョンが2026.7.19で、0.9.2ではない理由 🗓️

今日アップデートする人は、バージョン0.9.1から2026.7.19にジャンプします。打ち間違いに見えますが、意図した決定です。バージョンの付け方を、「セマンティック」から日付ベースのバージョン(年.月.カウンター)に変えました。その理由をお話しします。 古い方式は、だれも聞かない質問に答えていました。 セマンティックバージョニング(0.9.1、1.2.3…)は、ソフトウェアライブラリの世界から来

 
 
おそうじ完了:GitHubのキャッシュをようやくちゃんと使えるようになりました 🧹

前回の技術記事では、ビルドとチェックのパイプラインに本当は何がかかっているのかを測りました。わかったのは、お金ではなく、待ち時間と保存容量だということでした。その記事は「おそうじの作業は計画してあるけれど、まだ終わっていない」で締めくくっていました。ところが、思ったより早く進みました。今日のお昼の時点で、メインブランチに入っています。数字をご紹介します。 まず結果から。 リポジトリのキャッシュ使用

 
 
月に1000回のビルド実行、そのどれにもお金はかかっていません ⚙️

まず訂正です。この記事の最初のバージョンでは、GitHubのビルド時間を使い切ってしまい、そのせいでProアカウントにアップグレードせざるをえなかった、と書いていました。それは間違いでした。ドキュメントを一目見ればわかったことです。公開リポジトリでは、GitHubのビルド時間は無料です。アーティファクトもキャッシュもです。うちのリポジトリは5月末から公開されているので、1分もお金を払ったことはあり

 
 

コメント


この投稿へのコメントは利用できなくなりました。詳細はサイト所有者にお問い合わせください。
bottom of page