・前日。
0800:性欲処理。
0830:ミックスナッツ✕2。
1130:焼鳥。
1600:味噌豚+ピーマン+コーヒーゼリー
1730:ティラミス+食物繊維ドリンク。
1930:ミックスナッツ✕4。
電解質タブレット✕3と水分1.6リットル程度。
性欲:低~高。
筋トレ:肘膝腹筋30✕3回。


・睡眠時間5時間。
明確に起きやすかった。なんなら目覚めて5分以内に起床できた。となると、やはり「水分の摂取量を1.6リットルにする」か「20時以降の水分摂取をやめる」のどちらか、あるいは両方が影響している可能性が高い。
ひとまずは「20時以降の水分摂取をやめる」の方向で進めてみるか。水分の摂取量はわりと気を遣わないと多少前後してしまう可能性が高いし。なんなら厳密には昨日の水分摂取量は1.55リットルくらいなはずだしな。


・予定。
今日はクリニックの予定なわけだが、平日と同じタイミングでの外出となると到着して1時間前後暇になる可能性が高い。どうするか。
朝の時点でのモンハンNOWの湧きはさほど良くないので9時を過ぎてから外出するのも悪くはないんだけど、慣れを考えるといつもの時間に出発したいところではある。
でもまぁこんだけ早く起きれて再現性がありそうな感じになってきたのなら出発に慣れるのはそう難しくはないだろう。というわけで今日は9時過ぎに出発してみるか。その場合はまぁ寄り道をほどほどにしないと遅れそうな感じもするが、逆に言えば暇を潰しやすくはあるはず。


・外出終了。
というわけで予定通りモンハン寄り道しつつクリニック行って帰ってきた。タイミングはちょうど良かったかな。それなりに寄り道したが、少し早く到着した感じ。


・モチベ。
昨日のやつをそろそろやろうと思うんだけど、ブレーキ感がそれなりにあるな。想定通り「事前の情報の把握」がネックになっているのであれば、現状ですでに「仕事」「モンハンNOW」「シレン6」でだいぶメモリが圧迫されてるからな。ここにさらに「個人開発:Unity」だの「フロー2」だの「ネタ出し」だのが入ると単純にメモリが足りない感じか。それ故のブレーキ感か?あるいはドーパミン依存系の感じもあるが。
ともあれなんとか少しだけでもやってみるか。ひとまず今回は雑記形式で。ログにもなるし。


・個人開発。
というわけで暖機運転的な情報把握。
現在はある程度できている。はずなんだけど、細かいことを忘れてるな。ダメージ処理まではいけてたはずだが、死亡処理やそれのアンドゥとかまでできてたっけ?できてた気もするが。
ともあれ今やりたいのはスマホで検証できるようにすること。そのためにタッチ操作でのカーソル移動は実装済みで、これによってプレイヤーの挙動(~それによる周囲のユニットのAI挙動)が設定はできる。あとは「シミュレート開始をUI的なボタンで実行」と「エディットモードとの切替を同様にボタンで実行」できれば最低限の検証はいけるはずだが、その前に「カーソルが地形に埋まってる」ことの対処をしないとちょっと操作しづらい場面があるよね、というのが一番最後の状況だったはず。
うん、ここまで確認できたらブレーキ感は減ってきたな。まぁ実装までいけるかはまた別ではあるが。
で、実装的にネックになるのはカーソルの埋まり対応で、ここがシェーダ絡みになるのでその調査~検証がどうしても必要になるんだよな。ここは「応用」じゃないし「軌道に乗った後」じゃないので、どうしてもしんどさというかブレーキ感というかそういうのが先に立つ。
これはどうしたもんか。できるだけ最小限の作業で達成感が得られるものをどうにかひねり出して、それをひとまず実装すればモチベ発生からいけるだろうか?
であればまずは要素を分解するか。最終目標が「カーソル対応したマテリアルの生成~適応」なわけだが、これを分解していくと「地形に独自マテリアルを設定」「マテリアルにカーソルテクスチャ設定」「カーソルの描画で上書きするシェーダを作成」「シェーダにカーソル位置を外部から渡す設定」あたりになるか。そしてこの順番で実装はしていけそうだな。いきなり凝ったことをしたり完成形をいきなり目指したりはせず、この段階を踏んでモチベ改善を試みてみようか。とりあえず今日のところは最初の独自マテリアルの設定までできれば良しとしようか。すでに15時を過ぎてしまってるしな。


・Unity。
うん、できた。10分もかからなかったな。これならまぁ次のステップまでいこうか。ていうかテクスチャ設定まで済んでたわ。だから次は「カーソル位置は適当扱いにしつつ、その位置をもとに正式なカーソル描画」になるかな。しかしこれは結構長くなるから、これもさらに細かく分割してみるか。
まず、テクスチャのUV座標が頂点データ上で設定されたUV座標ではなく、頂点データの位置座標の方をもとに計算している。ひとまず雑になんかその設定で書いてみるか。
というわけで単純にIN.uv_MainTex→IN.worldPos.xzで置き換えてみた。これだけですてにそれっぽいかな。あとはここにカーソル位置の反映を行えばもうそれで完成にはなるか。
やっぱり壁(ブロック)だけじゃなくて地面もないとわからんなぁということで、同じシェーダで別マテリアル~別プレハブを作成。なんかマテリアルは同じにしてパラメータだけ変える方法があった気もするが、将来的に壁と地面が同じマテリアルになるかも微妙なので別々のままで。
うーん。地面の方が上手く表示できてないな。スケーリングしているとはいえ、PixelShaderに渡ってくるワールド座標は変わらないはずだし。
うーん?スケーリングを切るとちゃんと動いてるっぽいか。そして軽く2倍にしてみただけで消え失せてる。
あー。Planeと言えどY軸をスケーリングしてしまうとなんか表示がおかしくなるんだな。
うん、まぁ後はカーソル位置を外部から設定するだけってところまではできた。が、カーソルにも影がかかってしまうのは良し悪しだな。それをどうにかするとしたらカーソルをPostEffect的な感じで描かないとダメか?まぁ今回の意図はあくまでスマホでの操作がしづらくなることの解消だったので、ひとまずはこれで良いか。
で、カーソル位置を渡すのは今日中にやってしまうか?いま17時。夕飯はすでに食い終わったので、またデザートを買ってくるのもナシじゃないなと思いつつモンハンNOW的にもどうしようかといったところ。18時過ぎて湧きが良かったりデザートがどうしても欲しかったら外出してみるか。となると、あと1時間あるからカーソル位置を外部から渡すところまでしてみるかな。
しかしまぁ当初のブレーキ感が信じられないくらいあっという間に作業できてるな。まぁ本来難しい作業ではないからな。あくまで心理的に難しかっただけで。
で、ここで問題になってくるのが上で出てきた「マテリアルを分けた」部分。そしてsharedMaterialを直接いじってしまうとたぶんアセットの方まで変更が波及してしまいそうな部分。たぶんそうだったよな?なのでまぁ将来的にさらに「ユニットの上にもカーソルを重ねたい」とかになってくるとマテリアルまわりをちゃんと管理する必要が、、、そこまでやるなら影と同様にPostEffect的に管理すべきでは?まぁいいや。ともあれマテリアルのManager的なものをちゃんと作っておいた方が良さそう。
今回はなんだかんだでManager的なものを使わずにいたけど、やっぱりゲーム系だとSingletonのManager的なものがあった方が安定しそうだな。というわけでマテリアルに関してはSingletonでやってみるか。
あー。影の処理も受ける側がどうこうするわけだから、影の計算部分を云々できるならそこにテクスチャのαを考慮させれば影の影響を受けない描画もできそうかな?まぁそこはまたいずれ。
ともあれ、マテリアルは明らかにプラットフォーム依存なのでViewで管理。プレハブに対応マテリアルを配列として突っ込んでいけたら後からマテリアルを増やした場合も対処はしやすいかな。
MaterialじゃなくてShaderの値を直接いじるやつもあるのか。だったらこっちが良さそうかな。Globalなのは良し悪しではあるが。
とりあえずできた。やはり地形にキャストされるタイプの表示だと楽しげではあるな。ただ、スマホで操作するとなるとカーソル位置が指で隠れてしまうので十字状にラインを表示して位置がわかるようにした方が良いか。まぁさすがにそこらへんはまた今度かな。
というあたりで1740付近。今日の作業はここまでで良いか。まさか今日中に終わるとは思ってなかった。単純にモチベの試行錯誤だけで終わる予想だったんだけどな。なんだかんだで色々とモチベまわりの手法を知っているのが活きた形か。これならまぁ来週末も、なんなら平日も何かしらできるかもしれない。まぁ仕事が立て込んではいるのでムリしない程度で。
とりあえずコミットまではしてしまうか。十字表示はやるかどうかの検討から必要だし。