ローグライク攻略&開発雑記

コンシューマー/PCに限らず、適当に綴っていくブログ 無駄にあれこれ遊んだので要らん知識だけは豊富

2021年04月

変愚蛮怒3.0.0 進捗状況 その36

おしらせ
本記事は非公開のまま何故か数ヶ月ほったらかされたものです
時系列は当時に準じます

こんにちは、Hourierです
今回は変愚蛮怒史上最大のリファクタリングを実現できました!
2つあります、早速見ていきましょう

1つはここです
神構造体と(悪)名高いplayer_typeさんですが、こいつをplayer-status.h からplayer-type-definition.h に分離しました
変更ファイル数が1200個もあったのが、影響範囲の広さを物語っています
player_type構造体はplayer-statusとは本来無関係で、何となくplayerだからって理由で入っていたものです
もっと昔、v2.2.1当時はtypes.h というところへ雑多に何でもかんでも格納されていました
この作業で何がいいかって、今後player_type構造体を拡張する時にplayer-status.h を触らなくても良くなったことです
2つ目のリファクタリングにも大いに関係してきますが、player-status.h は別に(ゲーム内ではなく)ゲーム外、コンパイル環境としてのC/C++ に必要なヘッダではありません
必要なのは、system/h-*.h に代表される、「OSごとの面倒な違いを吸収するヘッダ」です
去年の内に随分削りましたが、まだOSX/Linux/BSDでは動作するように作ってあります

これは昔作ったインクルード構造ですが、ものの見事に循環してます
特に下から2番目のgeometryはクソヘッダオブザイヤー受賞級の発狂ヘッダでした
今回のリファクタリングで完全に解体され、今のgeometry.h は数あるヘッダの内の1つに過ぎません
angband_header_dependency


2つのリファクタリングは別々のブランチで行いました
これはOSDN時代 (バカでかい単一の修正ブランチを、担当者の作業に誤りがない前提でエイヤとマージしていた)とGitHub時代 (小さな複数の修正ブランチをレビューしながらマージする)でやり方が異なります
いわゆるステップ・バイ・ステップですね
GitHub方式の方が好みです

2つ目はここです
とうとうplayer-status.h をangband.h から掃き出すことに成功しました
これで変愚蛮怒は、今まで「OSごとの違いを吸収する処理」と「プレーヤーが吟遊詩人だった場合の歌関係処理」が設計上の根幹だったのが、前者だけが根幹設計に修正されました
明らかに後者は根幹じゃなかったので分離は感慨深いものです
長かった……

結果、player-status.h をインクルードしているファイル数が、04/29 21時現在で約750個から86個まで減りました!!
更に一部のフィールド値をクラス化してアクセス範囲を閉じ込めたので、player_typeの使いやすさも激増です
この調子でどんどんC++の機能をふんだんに使ったゲームに仕上げていきたいですね!

長くなりましたが今日はここまで
次回もお楽しみに♪

変愚蛮怒3.0.0 進捗状況 その35

原稿しろ

こんにちは、Hourierです
最近アクセス爆上がりなんですがようやく変愚蛮怒v3.0.0が認知されてきたということでしょうか!
(なおここで言う最近とは1~2ヶ月前の模様)

ということで長らくお待たせしておりました、Alpha版リリース直前くらいのタイミングでリクエスト頂いたモンスター群を一通り実装しました!
Alpha版リリース以後、r_infoのフラグ名が大幅に変わったため修正だけで七転八倒 (自業自得)でしたが、何とかなりました
可能な限りハードコード部分で拡張可能な箇所は実現させたので、それなりにフレーバーも豊富だと思います
問題はハードコードを何とか*.txtに出したいのと、光と闇を両方そなえた結果本人を超える厨二FTが出来上がったことです 私じゃねぇ中沢のせいだ
が、まぁほっときましょう

次はアイテムの実装ですがAlpha21で実装する見込みです
こっちもこっちで色々あるんですが、何とかなると思います(何とかなるとは言ってない)

そんなこんなでしばらくぶりですが、私は元気です
Twitterでも元気に廃人してるので遊びに来てね♪

今日は短いですがこの辺で
次回もお楽しみに!
ギャラリー
  • 開発者になろう GitHub編
  • 開発者になろう GitHub編
  • 変愚蛮怒3.0.0 進捗状況 その36
  • 変愚蛮怒 3.0.0 進捗状況 特別編 その3 C#への可能性
  • 開発者になろう
  • 開発者になろう
  • 変愚蛮怒2.2.2 進捗状況 その21
  • 変愚蛮怒(2.2.2 開発中版) ハイエルフレンジャー その5
  • 変愚蛮怒(2.2.2 開発中版) ハイエルフレンジャー その3