この記事はRoguelike Advent Calendar 2023 の16日目の記事です
https://adventar.org/calendars/9031

こんにちは、Hourierです
技術編と銘打っておきながら年末進行の都合でそんなに細かく書けない状態です
備忘録的な設計はGitHub のWiki にまとめているので、併せてご参照下さい

この1年何やってたかというと大半がリファクタリングです
まぁそれは3年前から何も変わっていないのですが、逆に言えば「3年経ってもまだまだ作業中」ということを意味します
3年あればどうにでもなるだろうというのは素朴に考えれば大抵合っていますが、残念ながら変愚蛮怒の泥沼は想像以上に深かった、ということです
単純に、ボランティアベースの活動であるが故に全員の作業スピードが不安定であることも問題の長期化に拍車をかけてしまっています

では今年のテーマは何だったのかというとズバリ「モデル化」です
この辺がその第一歩だったように思いますが、「フィールド変数がpublicなせいでどこでもget/setできる」という、非オブジェクト指向言語の欠陥を見事に踏み抜きまくっていました
「同一処理が何箇所もコピペされていて見通しが悪すぎる」という問題が起こり、その結果「何をやっているのか分からないので保守できない」に発展していました
「何十ファイルも同時に追跡しないとアイテム強化ルーチンを把握できない」とか
(これはC時代に分割しまくった名残でもありますが、当時は「ファイルが長すぎて誰一人読む気が起きないし誰も修正したがらない」というもっと重篤な問題が起きていました)

変愚蛮怒の前身であるZangband が更新停止した理由もこういう問題が遠因だっただろうという話は一度ならずDiscord でも出てきました
この辺りにようやくメスを入れ、「フィールド変数を外から引っ張り出してあれこれする」から「クラス内でできることはクラス内でやる」という、まともなカプセル化の道を歩み始めました
しかしあまりにも道が半ばで先は全く見通せません

多少でもコーディング能力がある方はぜひ開発チームにいらして下さい
むしろなくても1から教えます
去年の今頃に比べれば見違えるような綺麗さのコードにはなりました
それどころか「半年前のコードはもう見たくない」というレベルでモダナイズを続けているプロダクトでもあります
先進技術に触れてみたいという方も大歓迎です
Discord にてお話頂ければ誰かしら案内をするはずですので、ぜひ覗いてみて下さい