2015/12/09
■ [Angband]「Angband Releases: 4.0.0」和訳
http://rephial.org/release/4.0.0を和訳。大胆なメジャーバージョンアップはヴァニラの特権。後今回の更新履歴は色々面倒な表現が少なく簡潔で大変良いと思った(小並感)
背景
3.5.0のリリース直前にコミュニティ上でがメンテナとなったNick McConnell氏によって、コードベースの大きな書き直しの調整と、"再構築後にゲームプレイ上の大きな変化は与えない"という真言についての議論が上りました。長い期間のベータテストの後、Angband 4.0.0は2015/06/29の月曜日にリリースされました。
変更の概要
ゲームコアとユーザインターフェースの分離
- ゲームからコア部分とユーザインターフェースの分離を行い、いかなるコア上の内容もUIの如何なるものにも依存することを止めました。
改変の容易さ
- 多数のゲーム定数をコンパイル中に盛り込まれていた中からテキストファイルに移し。ユーザが差し替え易くなりました。
- テキストデータファイルはクリンアップされ、ドキュメント化されました。
- 追加された改変要素のヘルプファイルは lib/help/modifying に追加されました。
ダンジョン生成
- ダンジョンの階層群と街が保存されるようになりました。
- ダンジョン階層の生成は一つ一つ行われていきます。
- ダンジョン階層の生成アルゴリズムを一般化しました。
- モンスターの生成はより主題的な方法でコントロールされるようになりました。
- 感知付加やマッピング不可などの制限が適用される領域が実装されました。
- 各グリッドにsquares配列が含まれ、地形、ローカルな情報、罠、アイテムその上に載っているモンスターなどが置かれるようになりました。
プレイヤーの情報処理
- ダンジョン階層のcave情報配列が複製され、現実の状態と、プレイヤーが認識している状態それぞれを保持するようになりました。
アイテム
- pvalの値を(燃料の寿命や食料の栄養値などは別として)配列で保持するようになりました。
- 抵抗や免疫などをより多くの耐性値を扱えようにするためにフラグ処理から分離しました。
- アイテムのtval値及びsval値をハードコーディングから取り除き、アイテムがobject.txt近辺から安全に追加したり削除できるようになりました。
- 特別製のアイテムはartifact.txtから直接取り込むようになり、(玻璃瓶のような)しっかりとしたベースアイテムの定義されていないアイテムは新しいベースアイテムとして定義されるようになりました。
- テキストファイル中にアーティファクトの発動を込めました。
- グリッド、店、モンスターあるいはプレイヤーが所持していることを関連付けた、アイテムのリンクリストを作成し階層のワイドリストからのインデックス参照から改めました。
所持品、矢筒、装備品
- 所持品や矢筒の並び替え処理をユーザインターフェースにのみで構成するようになりました。
- Poschengband様式の装備テンプレートを用いて、装備スロット群を特定にまとめることができるようになりました。(標準のプレイヤーの体装備に伴うもので、さらに追加することはできません)
モンスターの思い出
- モンスターを思い出を別ファイルに分けて、monster.txtの複製により、全思い出を取得できるようになりました。
地形/トラップ
- 複数のゲームプレイ中判別された地形タイプをプレイ世代中にテンポラリフラグで扱うようになりました。
- フルな地形フラフシステムが地形タイプの追加と削除を用意にしました。
- トラップは異なった要素として扱われ、地形とは混合されなくなりました。
- 施錠された/つかえが入ったドアは通常の閉じたドアにトラップが入る形で表現されます。
- 地形タイプの数値的値をコード上で扱うことがなくなりました。
アイテム自動処理から無視処理へ
- 全てのアイテム自動処置参照が取り除かれ、無視処理になりました。
- エゴタイプによる無視処理を追加しました。
- 「アイテムはそこにあるままで、無視する」哲学を特に強調しました。
鑑定
- アイテムの全ての学習可能な情報は分離したフィールドを持つようになりました。
- IDENT_*フラグを取り除きました。
属性効果
- 全ての属性効果は一つの関数で扱われるようになり、定義はテキストファイルで行うようになりました。
モンスターの攻撃
- 元素呪文の効果は呪文詠唱処理から射撃処理に戻されました。
- 打撃効果は異なった処理関数に移されました。
プレイヤーの呪文
- 新しい魔法領域や職業の追加などをより容易な形に一般化しました。
- 全ての呪文はテキストデータファイルに定義されます。
射撃攻撃
- 地形、アイテム、プレイヤー、モンスターへの効果処理はそれぞれ分離した関数を持つようになりました。
- 射撃の異なるタイプを整理しました。
- コーン状のブレス範囲を適用しました。
- 多様な属性効果を実装しました(プレイヤーとモンスターが力に押される効果など)
ステータス、能力など
- 可能な限りステータスを改善、一般化しました。
- 全ての(ハッキリ言って)馬鹿げた要素を可能な限り分かりやすく、調整するよう試みました。
一般的なコード素材
- ファイル名をより細かく解明し、必要に応じて新しく作成しました。
- デバッグコマンドを現在のゲームに合うようにアップデートしました。
- データ情報をlist-*.hファイルやeditディレクトリへ適切に移しました。
- 旧いコードを除きました。
- とにもかくにもドキュメント!