・前日。
0930:ミックスナッツ✕2。
1200:焼き鳥。
1730:味噌豚+ピーマン+コーヒーゼリー
1900:ミックスナッツ✕2。
2000:サンマの蒲焼。食欲に負ける形での摂取はあまり好ましくはないが、とりあえず前日とほぼ同じ状況になったので寝起きが良くなるかどうかといったところ。
電解質タブレット✕8と水分2リットル程度。
性欲:中。


・他人への興味と想像力。
どこかで見かけたことがあるが、「本を読むと世の中に色んな人が居るということがわかる」という趣旨の主張があるし、まぁそれを否定する気は特にない。が、本当に「わかる」だけというか単に知識が増えるだけなんだよな。自分の場合。
想像力が足りないわけではない。むしろそういった脳内ではなく実在世界の方向での問題というか「相手を具体的にこういう思考をする存在とみなす」みたいな構築力というか「創造」力の方が足りないというか。まぁそれも想像力の一種だとは思うが一種でしかないというか。「想像力が足りない」というのは以前にポケモン絡みでも書いた気がするが「ゼロイチではない」のと同時に「想像力にも種類があって、部分的には足りてるが部分的に足りてないことがある」という感じだな。


・予定。
抜けがないように一応確認。
日曜の予定は基本的にクリニックのみだが、キーボードと段ボールの確認を向こうでやっておきたい。キーボードのメーカーはメモしてるし、段ボール用のサイズもメモしてる。問題はないはず。


・睡眠時間6時間。
昨日ほどではないが少しだけ起きやすかったか?今後の差分をどう取っていくかはまた後で考えるか。


・外出一旦終了。
基本的な用事は終わったが、段ボールが目当てのサイズのがなかったので、帰宅して少し休んだら近所のもう一箇所に見に行く予定。ぶっ続けでいくと荷物が邪魔だしまた頭痛がしそうだし、一旦涼んでから。
クリニックは問題なくまた2週間後。
偏光サングラスを試したが、やはりこちらの方が瞑想とかはしやすそうかな。今回はちょっとランニング多めだったのであまり余裕がなかったが。
キーボードは目当てのものが触れたので買ってきた。ヨドバシの方は目当てそのもののが店頭に置いてあったり、静音赤軸のヨドバシ専用モデルがあったりしたものの、まぁ高い買い物なのでポイント的にビックカメラの方で買ってきた。
「ポイント」って実質ただの値引きだよなくらいにしか思ってなかったが、税金まわりを考えると「経費で落ちるものは普通に買ってポイントを溜め、経費にならないものをポイントで買う」とすると多少の節税になったりするのか?雀の涙みたいなものだとは思うが。
電解質タブレットも結局スポーツショップで買ってきた。とはいえ数を補充するのが難しいので、水曜あたりに届くように通販しとくか。


電解質タブレット
通販で探したらほぼ塩のみのタブレットもあるなぁ。吸収効率はさほど気にしてないので糖質は要らないんだけど、クエン酸とかはあった方が良いような気はしている。が、まずは差分を観察しないことにはといったところか。影響範囲は主にこむら返りまわりになるかと思うし、休暇中にここらへんの検証はしてしまって良さそうかな。他の差分と並行しても大丈夫だろう。
それはそれとして今までのやつも念のため補充はしておいた方が良いだろうか。
うーん。塩タブレットは塩過ぎるか。というか1錠であっても分量が多すぎるかもしれない。
というか、それならミルに入れてる岩塩とかを1粒摂取とかの形式にすれば良い気がするな。まぁそれだと大きさのバラつきが出たりするし、そもそも持ち運びはどうするかという問題も出てくるが。


・再外出終了。
結局段ボールはなかったな。一辺が50cm以上なのはあるが、二辺が50cm以上なのは普通には売ってないか。通販でそういうのがあるのは知ってるが、さすがに明日の集荷には間に合わないし、そこまでやる気もないかな。
というわけで、とりあえずPC本体を梱包材でグルグル巻きにしつつ段ボールに可能な限り詰める方向で対応するか。まぁまずは昼寝からか?


・キーボード。
というわけで早速差し替え。さすがにまだ違和感はあるが、さっきのに比べたら遥かにマシかな。
しばらく使ってみたが、慣れてないのは「マウスから手を離してキーボードを操作する際の位置」かな。今回はテンキーレスのやつを買ってきたので、そのぶん移動距離が短くなるんだよな。だからそのタイミングでタッチ位置がズレてしまう。まぁこれはいずれ慣れる範疇だと思う。


・自作チョコアーモンド。
基本的には悪くないが、冷凍してるせいでチョコ固有の柔らかさは感じられず、パリっとした感じになってるのがなんとも。しかし柔らかくすると歯ごたえが減って満足感も減るっぽいし難しい。
まぁそろそろ夏が本格的に終わって短い秋が来るはずだから、そうなれば冷蔵くらいでもちょうど良いのかもしれない。あと、バニラは前日にかけておいても香りがだいぶ飛ぶので、食う前にかける方が良いかもな。


・PC梱包。
結局特に眠気を感じなかったので、しばらく休憩した後にPCの梱包を行った。
とりあえず発泡的なやつで上の収納しきれない部分をカバーしたし、それ以外の部分もこちらに送った時の梱包材で詰めたのでまぁ大丈夫だろうきっと。ダメならその時はその時だ。


・USB延長ケーブル。
ACアダプタ付きのやつは店頭で見かけなかったのでAmazonで探してみたが結構高いな。であればあまりムリはしたくないなぁ。通話に関してはSurfaceで何とかする方向で一旦見てみるか。あとはまぁデスクトップの方はカメラ位置を調整してみてって感じかな。


・通販。
とりあえず電解質タブレットなども一応込みで注文完了。というか、今週受け取らないと来週以降はいつ面談が入るか未定なので指定しづらいんだよな。そこらへんあまり考えてなかった。まぁそこも加味してある程度は注文したので大丈夫だとは思うが。


・予定。
色々と一段落はしたがもう1630か。まぁ個人開発を少し進める程度の余裕はありそうかな。
で、明日の予定は上記PCの集荷のみ。それ以外は平日通りで過ごしてみつつ、仕事の時間だったところで個人開発を進めたい感じかな。


・個人開発。
というわけで進めていきたいが、そういや今回は簡単にできるところでは終わってないんだっけ?まぁまだ簡単にできるところは残ってはいるが、先に入力まわりの整理をしてしまうか。今ならいけそうだし。
入力によって変化が起こるタイミングは自前でコントロールしたい。Root側の共通処理ではなく、アプリ側である程度制御したい。なのでコールバックでは処理したくないし、なんならUnityのデフォのUpdateで自動で回したくもない。こちらの設定したフローの特定タイミングでUpdateを呼んで更新処理を回したい。
が、同時にある程度の一般化もしたい。特にUIなんかは別にアプリ固有の処理は不要というか、むしろ固有にすると毎回なんらかのバグが発生する可能性ができてしまう。ここらへんをどうするか。
まずは実際に入力で行うことの整理をするか。「UI操作」はRoot側で吸収したいもの筆頭として、「プレイヤー操作」はゲームの各種更新タイミングとの兼ね合いがあるのでゲーム側で操作したい筆頭。その間くらいに「UIを開くためのボタン」とかがあり、これとプレイヤー操作が同じフレームで発生してあれこれ起こしたくない、といった状況。
流れとしてはやはり「メニューを開くボタンが押されたら、メニューを開いてそこで入力処理は終了」「エディットモードに移るボタンが押されたら、モードを移行してそこで入力処理は終了」「入力処理がまだ続いていたらプレイヤー操作を実行」がシンプルでわかりやすいか。デザパタにもあったようなパターンで、かつ同時入力で「メニューを開きつつモードが切り替わる」ような問題が起こらないようにするフロー。コールバックでここらへんの排他制御をしようとすると難しいからなぁ。最近だとポケモンリメイクだかのボタン同時押しの問題が有名だろうか?
であれば、ここらへんを自前のフローで制御しても良いし、あるいは処理ごとにインスタンス化して優先度順でリストに詰めつつtrueを返したらそこで処理を終わるような関数をInterface経由で呼ぶパターンも考えられる。まぁリストまで使うほどではないし、そこまでいくと一般化し過ぎてコードを見ても直感的に排他制御まわりがわかりづらいかな。自前のフローでやってしまおうか。
そのうえでそのフロー自体の切替が必要。上記の例はゲーム部分のフローなので、それとは別に「メニューを開いた状態でのフロー」や「エディットモードでのフロー」などがある。こちらはリストというかスタックというかそういうのに積む形式にせざるを得ないかな。こちらは逆に全部自前でやるとわかりづらくなりそう。
となると構造そのものは今のでほぼ良さそうだな。ただ、関数名が「Update」だとちょっとわかりづらい気もするな。Execとかの方が良いか?それもなんか違う気がするなぁ。Simulateというわけでもないし。感覚的にはCallが一番近い気もするが、意味的にはむしろ遠い気もする。Flowあたりか?これ単品だと微妙だからUpdateFlowとかCallFlowとか?実際、リストに突っ込まれたフローを呼んでるわけだからCallFlowあたりが適切だろうか。まぁひとまずそれでいくか。
インターフェース含めて名称とか色々と微調整したが、とりあえず入力まわりはこんなところか。一通り整理できたと思う。
で、次はシーン管理かな。まぁぶっ続けで作業するのは体調的に微妙なので、一旦ここで休憩するか。


・休憩。
動画とか見てしまうとドーパミンとかの都合であまりよろしくないので、瞑想寄りにならざるを得ないな。
「コーヒーや紅茶を入れる」とかであればわかりやすくて良いが、土日は外出調整とかの影響もあってペットボトルのやつを飲み切るので水分まわりはほぼ終わってしまうからなぁ。それにコーヒーはコーヒーゼリーの方とも被るし。でもまぁ被って悪いわけでもないし、どっかのタイミングで試してみても良いのかもしれない。


・個人開発。
再開するにはちと微妙な時間になってしまったな。かといって残り全部余暇にするにはちと長い。まぁ最低限の作業はできてるっちゃできてるが、基礎設計くらいは今のうちにしてしまうか?してしまうか。
とりあえずシーンという名のSceneではないやつを管理したい。管理者はSceneManagerで良いとして、シーン側のインターフェース名はどうするか。ISceneでも良いっちゃ良いが、実質MonoBehaviourだからなぁ。SceneComponent的なやつにするか?それだと何かむしろSceneの一部っぽいか。まぁひとまずISceneで良いかな。
シーンの遷移方法としてはMoveとPushがある。今のシーンを破棄して次のシーンに遷移するMove。そして今のシーンから一時的に遷移して後から戻る処理としてPush。それぞれMoveSceneとPushSceneでインターフェースを引数に取れば良いだろう。
問題なのは「Pushした状態でMoveする」場合。Push前のやつを破棄するかどうか。まぁ基本的には破棄で問題ないとは思うが、引数でそこらへんも制御できるようにしておけば安泰かな。で、Push前後を含めて一括で破棄する場合、Pushされた側から順にFinalizeを呼んでいけば良いかと思う。Finalizeの引数に「普通にPopで戻ったのか、あるいはMoveで強制破棄されるのか」の引数を渡す方が良いか?というより、戻る際のコールバックが必要なのか。で、そこに上記の引数を渡す?あるいは一括破棄ならそもそもコールバックは呼ばなくて良いのか。果たしてその想定でシーン設計は上手くいくのか。
たとえば「エティットモード→ゲームモード」でシーンがPopで戻った際、ゲームモードではエディットモードでの変更をもとにしたステージの再生成を行う必要がある可能性がある(エディットモードのFinalizeでやるかもしれないが)。で、例えばエディットモードからタイトルに直接戻るような遷移などがあった場合にどうするか。まぁ再生成とかは不要だよなぁ。どちらかというとコールバックを分けた方が良いか。「Popで戻る場合」と「外部遷移で消える場合」。要素の引き渡しが必要な場合を考えると、PushSceneでコールバックを渡せるようにした方が良い?いや、そもそもコールバックの種類が上記の2種類で十分とは限らないし、シーンによって色々と変わる可能性もある。であれば、PushSceneにインスタンス自体を渡すにせよEnumを渡すにせよ、その直後あたりにシーンのインスタンスを取得してコールバックをセットできるようにする形式が汎用性は高いか。
まぁざっとこんなところか?どこまでを共通処理にするかとかの調整がまだあるが、今日のところはあとはこれをToDoリスト的なやつに整理して突っ込めば完了で良いか。
あー。汎用化するとなるとコールバックの引数の数だの返り値の型だのがネックになってくるか。C言語ならただのポインタで良いけど、C#ともなると型は決まってないとなぁ。じゃあまぁコールバックのセットはシーンごとに決める感じになるか。保存ぐらいは汎用化したいが、そちらも型の問題が出るからムリそう。コピペ対応しかなさげかな。


・スプラ。
こっちももうちょっと進展させたいところだが、土日は梱包とか色々とあったし仕方ないかな。連携ツールを進めないと確認しづらい部分もあるし。
それでも軽くは考えるか。特に相手に長射程が居る場合をざっくり考えたい。まぁ雑に項目を列挙していく感じで。
長射程側としては「相手が射程端をうろちょろしてくれる状態」が一番良い。射程外で交戦されるとフォローができないし、近づかれると自分がやられるリスクが他アクなる。
長射程が複数の場合、射程で抑えつけられれば相手は返しづらいが、一度崩れると長射程側が返しづらい。
というか長射程同士の連携がだいぶ難しいんだよな。同じ位置に居てもあまり強くはないし一気にやられる可能性が高まるが、別々の位置に居るからといってそれだけで連携が発生するわけでもないし、互いにカバーし合えるとも限らない。
そうなると自分としてはまず「相手の前衛を相手長射程の射程外で潰す」のが理想か。その後は数の有利を使いつつ相手の長射程を自分が潰したり味方に潰しに行かせるムーブができると良い。
相手の長射程が複数の場合、連携の穴をつく、あるいは穴を作るのが良さげ。なのだが、具体的にどうやりゃ良いんだろうな。
基本はやはり「別の相手長射程の射程外で戦う」にはなるが、それだけだと味方の短射程と相手の長射程の差は埋まらない。味方の短射程がタゲを取ってる間に自分が獲るかその逆をやらないといけない。
もっと単純に「遮蔽を使う」ってのもあるが、場合によっては「遮蔽を使わされてる」という形になって相手の前衛にそこを突かれる可能性もある。その意味では「相手の前衛にそういう仕事をさせない」ってのも重要になってくるのかもしれない。
「カウンター」が有効そうかな。長射程が複数側の基本戦術もカウンターになるわけだが、それを相手にする側もカウンターが有効そう。相手の前衛を誘い出してキルして数の有利を作ったうえで押し込む。長射程は迂闊には前に行けない場面も多いから、フォローができない・間に合わない場面が出てくるはずだし。ただ、ちゃんとフォローに入られてしまうと相手が前に出たうえで同数になってしまい、抑えは長射程側が有利なので「相手の長射程がフォローに入りづらい状況」とかも意識しないといけないか。
スプラ前に考えられそうなのは一旦ここまでかな。とりあえず「長射程が複数の編成の場合、敵側だろうが味方側だろうがカウンターを意識」という感じでいこう。