見出し画像

内部のいろいろをいじる日々

どうも、Dollyです。
いろいろ手を付けようが見た目の変わらないような作業を進めています。

NoSのDiscordに限らず、新機能や新役職のご要望はいろいろな所で伺っております。(でも他所でご要望を伺うと、メモし忘れて大概忘れてます。)
頂いたご要望を思い返してみると、複数の役職で同じ能力を持つようなものをご提案くださっているものがちらほら見当たります。
一つの例はインポスター陣営にはイビル○○、クルーメイト陣営にはナイス○○がいるような要領です。

そこで、今現在の役職のプログラム上の記述とご要望を照らし合わせてみると、不都合な点が見つかりました。
ソース上では、役職の記述として各種能力について記述しています。Seer(シア)の幽霊を見たり、キルフラッシュを見たりする能力は、Seerとは何たるかを記述する部分に埋め込むようにして書いているわけです。

イビル/ナイス で複数の役職が同じ能力を持っている既存の役職にはGuesserやTrapperが挙げられます。能力の共通した部分の記述は今でも一応うまく1カ所にまとめてはいるのですが、正直ここでのやり方は気に入ってませんでした。
完全に1カ所にまとまっているかというと微妙な所がありましたし、細かいことは割愛しますが、なんか嫌だ。

Guesser には Nice / Evil Guesser, Modifier Guesser がいますが、そのつくりは気に入ってません。

とにかく、役職と能力がべったりくっついてしまった状態では、複数の役職間で同じ能力を共有させる際に面倒なことになります。
複数の役職それぞれに能力の記述をしなければならないわけですが、各役職すべてに同じような記述をぐだぐだ書かなければならなくなります。記述が長ったらしくなればまぁ面倒この上ありません。
※一般に、同じ記述を複数箇所に重複して書くのは良くないというソフトウェア開発の指針があります。ご興味あればこちらも是非。

そんなわけで、今回取り組んだのは役職の記述と能力の記述の分離作業です。役職の記述は、所持している能力の名前を書くだけでよくなる状況を目指しました。
「名前だけを書く」ことと「能力そのもの(=その能力がなんたるか)を記述する」ことは別です。名前だけを書くほうが簡潔です。

リワーク後のSeerの様子です。以前と変わってないことが大事です。

ひとまず、従来通りの記述も、分離された能力の記述もどちらも使えるようになりましたので、問題の一番重要な部分はクリアできました。
これまで作ってきたものの積み上げもあるので、分離された能力への書き換え作業の道のりは長そうですが、裏で少しずつ進めていきます。

こんな終わりの見えない(?)作業も始めてしまいましたが、頂いているご要望や個人的に追加したい要素も溢れるほどあり、いろんな作業が立ち往生しています。いただいたアイデアにお応えできる速度はなかなか遅い現状ですが、ぜひ気長にお待ちいただけたら嬉しく思います。

他にも、関連した機能をこれまでにも何個か作ってきたのですが、それらについてはまたいつかお話しできたらと思っています。
時機というものがあるんですね、こういうのは。見極められる気はしませんが。

今回の作業の結果は最新のスナップショット(24.03.10a)に既に反映済みです。見どころもなにもありませんが、ぜひフィーリングで感じ取ってください。
その他、Agentに関する新たなオプションの追加など新機能も含まれていますので、そちらも是非。詳細はDiscordからご確認ください。

最後までお読みくださりありがとうございます。それでは、よい日々を。