格ゲーを開発していた頃、処理を共通化して整理していたら、開発終盤のバランス調整で特殊仕様が次々と追加され、共通関数の中が条件分岐の地獄になっていました。
「このキャラだけ投げ処理が特殊」「この技だけ硬直が違う」など、例外判定の連続です。
RPG開発でも、戦闘ロジックを一本化しすぎて、「攻撃や魔法に新しい属性」を追加した瞬間、相性によるダメージ処理の条件分岐が増えすぎて、とても複雑な構造になってしまいました。
「どこまで抽象化するか」の粒度の判断は、経験を積むとかなり慎重になります。特に昔は、マスターアップ直前までバランス調整を行うことが多かったため、多少の冗長性を残しておくほうが、後々の調整や拡張がしやすいことを痛感しました。
今では、有名RPGのナンバリングタイトルやアクションゲームのシリーズ作品などは、抽象化の粒度をうまく調整し、個性と汎用性、自由度と開発速度を両立していると聞きます。当該タイトルのテクニカルディレクターやリードプログラマーの設計思想の高さを、つくづく感じます。
#ゲームプログラマー #抽象化