日向、ベータ機能を使わない水しぶきと、オクルージョンカリングにチャレンジする
プレイヤーの足元に追従し、水の中に入れば飛沫を上げる、不可視の床。
めどはすでに立ってはいました。
ベータ機能をつかえばおそらく、実装できると。
かりにですがスクリプトも、切り貼りあーんど魔改造で、つくりだしはしました。
しかし、どうしても、導入にはふみきれませんでした。
理由は、生来のヒヨコ(※チキンどころじゃねえ! もはやチック(ヒヨコ)や!!)気質ゆえ。
しかし、その発動には理由があります。
大きく分けてふたつです。
ひとつめ。ベータ機能は正式リリース前の機能であり、不安定な挙動をしたり、将来的に仕様が変わる可能性があるものだということです。
そして、有効にしたらもう、戻せない(有効無効を切り替えた場合は、また別のプロジェクトとしてアップしなければならない)。
ふたつめ。日向は『グレムリン』です。比較的害のない表現をすると『人生是デバッグ』です。
つまりなにかってぇと生きてるだけでバグやら例外やらが頻発します。もはや存在そのものがバグってんじゃないか (爆)の勢いです。
それらを考えると、日向がベータ機能を導入した場合、直しようもないレベルにワールドが損壊する事態が起きる可能性も、否定はしきれません。
いまそうなったら、はたして立て直せるか。
それを考えると、やはり踏み切れませんでした。
そこでかわりに、踏んだら水しぶきを召喚する板を浅瀬に敷き詰めたのです。
それ自体はなかなかにエモいかんじで、気に入っています。
ぐっじょぶ吾輩!!
しかしいまのワールド、そもそも160M越えと、かなり重いです。
一説によると、PCじゃないと厳しいレベルだそうな。
少し調べたところ、話題のワールドのなかにもこれより大きなものはあるので、そこはまあ、いいとしても……
動作の重さの指標であるSetPassCallを見てみたところ、500を超えることがままありました。
これは、あまり、よくありません。
この状況で、水中にまんまカフェを設置することは、やめるべきというものでしょう。
考えた末、暫定処置として『タワーワールドのみずしぶきと水中カフェ入口は夏限定』『その間、雨は降らさない(=雨関連セットを入れない)』とすみわけて、セットを軽くすることにしました。
(本来なら、バラと七夕飾りもいれかえにすべきでした。
結局『さんざん苦労したバラをもうすこしだけおいておきたい』という欲に負けたためです。反省していますorz)
けれどそのていどではまだ、焼け石に水しぶきです。
というか、こんどは朝顔おくし。
そんなわけでついに、軽量化法として有名な『オクルージョンカリング』(見えないところは描画しないよ設定)を試すことを決意しました。
これは隠されるほうのもの、隠す側のもの、とぽちぽちおのおののインスペクターで設定し、最後にオクルージョンカリングウィンドウの『ベイク』ボタンポチッで計算します。
すると……
ドアを開けたら、おやつテーブルがない。なんならカーテンもない。
最悪、床や壁まで見えなくなり、必死こいてよさげな設定を探りました。
(遮蔽するものの最低大きさを3mくらい、のぞき穴になれる最低大きさを0.1くらいにしたらなんとかなりました。)
しかし、SetPassCallはほとんど減らず。
操作感も、大して変わりません。
これ、やる意味あったんだろうか……
疑問を覚えつつも、そのへんとりあえずクリアして、ワールドアップロードしてみたらハンモック島のやぶちゃんがスカッときえてしまいました。
その後、やぶちゃんはいろいろ設定を変えてもワールドでの表示は復活せず。
結局、あじさいのやぶをもとに、つくりなおしました。
(言うてもマテリアル付け直しただけ^^;)
そうしたらオクルージョンカリングをしても大丈夫! なんとか復活できました。
おそらく、なんらかのひょうしにデータが壊れたかして、そのキャッシュが悪さをしていたのでしょう。
ねえこれってワシがわるいん……?(´・ω・`)
まあ直せたからいいっちゃいいけど、この時間で桃スイーツを作ったほうがよかったんじゃなかろうかと思っちゃうのもまた人情だったり。
また、オクルージョンカリングは、色々いじったらまた、設定見直して計算ポチって、なんで正直めんどうな感じもあります。
あとなんか減らせそう、といったら……
・こずえややぶに、剥いでいたLODを復活(描画は軽くなるがデータ容量はふえるだろう)
・ハンモックのギミックとモデルを分離、できればモデルは作り直し (おひるねクッションから逆輸入)
……今の時点でやるとガチに桃スイーツ作れなくなりますね……
致し方ない、今はここまでです。
と言っていたら見つけてしまいました!
vins さん 【cluster】CICrafterとかで使いやすいスクリプト置き場
https://zenn.dev/vins/articles/21a1d94ed4b746
……の、二つ目の記載事項。公式記事『プレイヤーを追いかけるペットを作る』を、ベータ機能なしで行うスクリプトが、それです。
これで、なにができるか。プレイヤーの位置を取得することです。
それができれば、もともとやりたかった『しぶきを上げる不可視の床を、プレイヤーの足元に追従させる』ことがベータ機能なしでできるようになるのです。
(『getPlayersNear』について……
元記事では『新機能』として紹介されている=当時はベータ機能だったようですが、Cluster Creator Kit Script Referenceで調べてみると↓ココhttps://docs.cluster.mu/script/interfaces/ClusterScript.html#getPlayersNear
現在すでに『beta』の記載がない。つまり、正式のものとなっているようです(∩´∀`)∩ワーイ!!)
しかし、細かいところがまだ、しっかりとわかっていません。
・ゲットした現在座標のうち、Y座標『だけ』を条件判定の要素として扱えるのか(水面にプレイヤーが接しているかの指標。Yが一定以下だと板がしぶきを発するようにしたい)
・条件を満たした際に、しぶきをどうやって召喚するか。『子』を使うのだろうけれど、activeとかでええんか。
ぼんやーとよさげな気はするけれど、とりあえずは桃スイーツです。あと水中カフェ。
それが終わってから実際検証しましょう。
『特別なしぶきが上がる』までは確定でやれないので、実装は次回アプデ以降なのが確定ではありますが……。
vinsさんにはもう『様』つけさせていただきたいレベルですマジに……
実は滑り台を作るには? と思って調べてたら見つかったという。ふしぎすぐる。
とりあえず無事に桃パフェはできましたので、次回『チビ猫、水中カフェをオープンする!』のさいにおひろめします^^
7/15をどうぞ、お楽しみに!




