バフ・デバフの実装はけっこう難しい。直感だがこの辺は関数型の考え方を取り入れたほうが簡単に記述できるのはないかと感じるが結局実装する技術がないので普通に書く。
明日から12月。今年中に見た目はともかくゲームとして普通に遊べるレベルまで作り上げたい。
明日はスプラのアプデだ。ついにマルチミサイルが弱体化した。ヴァリアブル使いにとってはまあまあ痛いが、一方でこの調整自体は望んでもいた。マルチミサイルだけ発動直後にSPゲージを溜めることができる。そういう例外があるのは強い弱い以前に分かりにくさに繋がると思うので仕様の統一という意味で良い修正だと思う。
マルチミサイル使用後のゲージが空になるまでの間は、縦振りの(塗りの)価値が少し下がったわけだ。逆にその間はトラップを置いたり、距離を詰めてキルを狙うなど塗る以外の選択肢の価値が相対的に高まった。実際はそこまで立ち回りには影響しないかもしれない。前に出るにしてもSP使ってから出ないと弱いから、SP + 前に出るを1セットとして使うというのは変わらないだろう。
魔法とかのエフェクト作るの大変だな。初めてだから時間が掛かるというのもあるが。まともな絵が描けないからパーティクルとかシェーダとか使ってそれっぽいのを作るのが最も効率的だ。絵を描けるようになるべきだろうが、それは今ではない。
リファクタリングで、きれいなソースになったときの嬉しさというか達成感が心地良い。その心地良さが報酬と考えれば定期的にやりたくなってくるのもわかる。やりすぎはよくないのでバランスは大事だが。
今はリファクタリングの道筋が見えているのでこの勢いのまま明日も続きをやろう。土日はバトルに何か付けたす要素を考える。さすがに今のままだとありきたりで単調になるし、戦略の幅がない。
RPGの楽しさを作るのに苦労中。パラメータは増やせば増やすほど複雑になる。プレイヤーが管理するものが増えると面倒臭さは上がるが、ゲーム性は増す・・・のか?
やっぱり絵の問題からは逃げられないよな。描くしかないか。ペンタブ買って練習するか。
マドリカ不動産2をプレイしている。こういう謎解きゲームは定期的にやりたくなる。普段使わない脳の部位を使っている感じで疲れるが、解けたときの満足感も大きい。自分が立体的に考えるのが苦手なのだが、それが解く時間に顕著に表れるのが面白い。
コードが少し汚いと思いつつ、まだなんとかなるだろうと機能の実装を進めている。リファクタリングしたほうがいいのだろうが、どう変えれば分かりやすいコードになるのか見通しがついていない。書き換えた結果、今よりも酷いことになることもありえる。そう考えるとなかなか修正する気になれない。
でも、5年前の自分だったら永遠にリファクタリングしつづけて機能の実装が進まなかったから、その状態よりはマシだろう。
godotのリソースファイルはセーブデータとかに使うのはセキュリティ的に危険か。スクリプト埋め込めるからなあ。セーブ用APIがあるから良いと思ったのだが、やっぱりconfigファイルの方がいいか。
色違いの画像を作るよりも、プログラム側で色を変えたほうが自分的には楽だ。できるだけプログラムでやらないと変更時に面倒だし、画像処理ツールとかの操作を覚えるのが非常に面倒くさい。
RPGの戦闘システムを考えているが、面白い案がなかなか出ない。プレイする側として考えても戦闘の面白さのハードルがかなり上がってきているから難しい。
フェスパワーが上がり幅が少なすぎて、勝率が7割近くあっても下がっていくのはきつい。
スプラのトリカラバトル初めて攻め側をやった。半分以上は勝てた。しかし、攻め側のマルチミサイルはもう一方の攻め側にもロックされる仕組みは良いのだろうか。まあそういうカオスな感じを含めて祭りなのかもしれないが。
そろそろシェーダーを書けるようにならないと。絵は描けないが、シェーダーを使えば多少は豪華になるし、絵の種類を増やすことはできる。小人数開発なら、ある程度はコンピュータに絵を出させないと量を確保できない。
スプラのフェスに草で参加。ナワバリは難しい、ヴァリアブルはデスしないことを最優先しているが、これが正解かはわからん。イカニンを付けるのかは悩ましいが付けないことにしている。ナワバリはやはり塗るのが大事だ。
ナワバリばかりはすぐ飽きるな。もう少しフェスならではの体験があっても良いと思う。
godot4でラムダが追加されたが、シグナルに接続するときにラムダで渡すと、接続先のシーンが破棄されてもコネクションが生きていてemitすると渡した関数が呼ばれてしまう。渡すのがシーンのメソッドだと接続を切ってくれる。これは仕様なのか。
外部のシーンのシグナルと接続するときはメソッドを渡すというルールにするしかないか。
リファクタリングをやる時間を確保しないとコードがどんどん汚くなる。週一とかでリファクタリングやる日を決めたほうがいいだろう。
godotでセーブデータってcfgファイルでいいんだよな。暗号化機能もあるので、jsonとかにする必要もないはず。汎用性ならjsonの方があるかもだが、今のところは問題ないからこのままいく。
godotにはsetter/getterがあるから、これを使ってデータ変更をシグナルで通知すれば、画面への反映はそれを通して行えるのではないか。基本となるデータ構造を定義してその値でゲーム状態を表す。明日試してみるか。
体調が悪い。睡眠時間は足りているが質が足りていないっぽい。寝姿勢とかに問題があるのかな。それとも単純な運動不足か。
新しい機能を追加するときに今の設計が良くないことに気づくも、どうすればいいのかわからん。今までのプログラミング経験でもこれは悪い設計だという感覚はあっても、それを直すことはほとんどできなかったからなあ。
睡眠不足で今日はあまり作業が進まなかった。20代のころならともかく、年取ると睡眠時間を削って作業しても何も得るものがないな。あきらめて早寝するか。時間当たりの生産性を高めたほうがよいだろう。
関数型は一旦保留。ちょっと調べてみたが全然分からん。
良い設計を追求し続けるとモノが完成しない。とりあえずはゲームを完成させることに注力したほうがよい。
関数型の考え方がゲームにどう活かせるか考えている。厳密な定義は知らないし、その辺はどうでもよくて使えそうなところは使うという考え方でいく。godot4で無名関数が使えるようになったわけだし、もっとうまい書き方がある気がする。まずは関数型プログラミングについて調べてみるか。
スプラ、ゾンビギアの強さが少しわかってきた。理屈上の強さ以上にメンタル的にかなり良い。デスのデメリットが少しでも減ることで前に出ようという意識が生まれやすい。デスしたときにゾンビ効果が発動すると少し得した気になるのでストレスが軽減される。こういうメンタル面の効果は想像以上に勝敗に影響すると思う。デスを恐れて前になかなか出れない自分にいい。
godotで例えばenterキーでシーン切り替えだとして、切り替え先のシーンで最初にボタンがフォーカスされているような場合、enterキー押下でシーン切り替え + ボタン押下が一度に発生してしまう。シーンの切り替えが速すぎるからか?
シーン切り替え時に0.2秒とか待ったらいけた。速すぎて同一フレーム内でシーンが切り替わっていたのか?
この辺はよくわかっていないが、問題自体は消えたのでとりあえず進めよう。
以前ならこのような時は永遠と調べ続けていたが、とりあえず作っているものに集中するという判断ができるようになった。
ゲームの面白さは実際に作ってやってみないとわからない。だから大事なのはどれだけ高速に作って捨てるループを回せるかになる。作る速度は作り続けていれば上がるだろうが。難しいのは、絵とかをある程度手抜きすることでスピードは上がるが、絵が手抜きであることが面白さを下げている場合もあるところ。それも多くのゲームを作っていけば、過去の作品の絵を使いまわせるからある程度の絵を維持したまま速度を出せるか。
スプラのフェス投票が始まった。フェス自体よりもおみくじのためにホラガイが入手できることの方が嬉しい。フェス自体はずっとナワバリだから飽きる。ナワバリだけでなく全ルールからランダムとかの方が楽しめると思うのだが。
今日はコマンド入力のキャンセルの実装をした。これ、なかなか厄介だな。クロージャとか使えばシンプルな実装になるのか?
良い案が思いつかないので、godotのシグナルを飛ばして次の操作フェーズにいったり戻ったりしている。
正直良いコードとは思えないが仕方ない。
サイトをリニューアルした。気を張ると失敗することがわかっているのでダラダラとやっていく。 デザインも凝らない。誰かが見るかもしれない環境で文章を書くことが目的だからこれでいい。