Quantcast
Channel: boreal-kiss.com » ActionScript
Viewing all articles
Browse latest Browse all 10

[ActionScript] モンハンでAbstract Factory

$
0
0

剣士装備・ガンナー装備

モンスターハンターの武器は大きくわけて二種類に分類できる。それは大剣やハンマーといった近接武器(剣士専用)と弓やボウガンなどの遠距離武器(ガンナー専用)である。面白いのは防具にも剣士専用のものとガンナー専用のものがあるところで、武器と防具の関係に以下のような制約が付けられているのが他のRPG(例えばドラクエ)と大きく異なる点であろう。

  • 剣士専用武器を装備している時は剣士専用防具しか装備できない。
  • ガンナー専用武器を装備している時はガンナー専用防具しか装備できない。

剣士・ガンナー武器の違いは予想できるとして、剣士・ガンナー防具の違いは何だろう。答えは防御力だ。ガンナー専用防具の防御力は剣士専用防具のそれに比べて著しく低い。これは妥当な設定だ。崖の上でスコープを構えて銃撃するハンターよりも、モンスターの足下すれすれで剣を振り回しているハンターの方がモンスターからダメージを受ける可能性が高いからであろう。ダメージを受ける頻度が異なる者同士をより平等に扱うためには防御力による差別化をはかったという風に考えれば、上記のような剣士・ガンナー防具の制約はとてもリーズナブルだ。

裸のハンター

さて剣士・ガンナー防具の制約、面白い仕組みなのだが、少しだけストレスになることがある。着替えをする時だ。モンハンをやったことがある人なら経験があると思うが、今例えば剣士専用装備(近接武器+近接武器用防具)をしているとしよう。この状態で武器をガンナー専用であるボウガンに替えたとするとどうなるか。答えは防具が全部外れて裸になる、である。なぜならボウガンを装備した時点でガンナー武器を装備していることになり、上記の剣士・ガンナー防具の制約から剣士防具が装備できなくなるからである。ボウガンだけを装備した裸のハンターはガンナー専用防具をイチから装備し直さないといけないのだ。そしてこの問題は剣士・ガンナー間の装備変更にはいつもつきまとうことになる。

便利な機能

そこでゲーム内に用意されているのが着替えを一括で行うマクロ機能だ。自分のお気に入りの武器と防具の組み合わせをあらかじめ登録しておくことで、次回からボタン一つで全身の装備コーディネートができてしまう。もちろん登録時の装備は自分が今現在装備しているものから選ばれているため、剣士・ガンナー防具の制約も必ず満たすことになる。登録スロットも20もあり(MHP2Gの場合)、好きなときに好きなスロットの装備にボタン一つで変身できるようになる。

本題

前置きが長くなったが、このモンハンの装備一括変更のマクロ機能、デザインパターンで言うところの何に相当するのか、ということで少し考えた。いくつか候補があったものの結局これに落ち着いた。Abstract Factoryパターンである。全く同じ操作でユーザーを煩わせることなく機能する、というところに重点を置いた結果である。Abstract Factoryパターンの解説は以下リンク先へどうぞ。簡単なActionScriptコード付き。

» Abstract Factory


Viewing all articles
Browse latest Browse all 10