ゲーム製品ファミリについて考えてみる:ニーアゲシュタルトとレプリカントを例に
箱○版とPS3版で、なぜか名前の違うニーアゲシュタルトとレプリカントは、どうも主人公以外中身は一緒らしい。
ニーアゲシュタルトとレプリカントの違いは主人公だけらしい
なんでも、
・ニーアゲシュタルト(日本の箱○版)=Nier(海外の箱○版とPS3版)=主人公おっさん
・ニーアレプリカント(日本のPS3版)=主人公イケメン
という感じで、レプリカントは日本のPS3用に作られたイケメンバージョンなんだとか。
実際に、主人公だけの違いなのかはさておき、これをネタに少し考えてみたい。
おっさんって表現されているけど、正確には父親。イケメンは兄。
『電撃ゲームス』によると、もともとは、兄バージョンで作ってたんだけど、それだと海外でうけが悪いかもしれないということで、父親バージョンにすることになったらしい。
ここで考えていきたいのは、以下の図で示しているように、顧客の(ユーザ)好みに合わせて、共通な部分はあるが一部が異なる二つの製品(ゲーム)を出すことになっていること。
○で図示しているのは、ゲームの構成要素の集合だと思ってほしい。ニーアゲシュタルトとニーアレプリカントの違いは、主人公に関わる部分(主にグラフィック?)になる。その他の構成要素は共通となる。
下記の図は、少し違う観点からニーアという製品群(or 製品ファミリ)を示している。
最初に示した図では、「共通部分」と、異なる部分として「父が主人公」「兄が主人公」の2つ、計3つがあることを示した。この図の上部には、これら「共通部分」「父が主人公」「兄が主人公」がパーツ群を成すとして示している。
図の下部では、ニーアゲシュタルトとニーアレプリカントという各製品は、これら「共通部分」「父が主人公」「兄が主人公」の3つの部分の特定の組み合わせによるものだとして示している。
また図では、これらニーアゲシュタルトとニーアレプリカントから成る製品群を、ゲーム製品ファミリとして示している。ニーアゲシュタルトやニーアレプリカントは、ファミリのメンバーである。ファミリの各メンバーは、ファミリ内で共通の部分と特化した部分を持つ。
続いて以下の図では、フィーチャダイアグラムという表記法を用いて、このようなゲーム製品ファミリを定義している*1。
「共通部分」というパーツは、必ず選択しなければいけないものであるとして示している。つまり、全てのメンバーが持つパーツである。一方で、「父が主人公」と「兄が主人公」はどちらか一つを選択しなければならないという関係で表されている。したがって、この定義からは、以下の二つのメンバーが存在することになる。
ここまでは、ニーアの場合を例に考えてきた。ニーアの場合は「海外」と「日本」という地域レベル好みの違いに合わせて、Xbox360とPS3というプラットフォームレベルで、「主人公」と言うゲームの一部分を異なるようにしている。だけど、理論的には、この考えを一般化できる。つまり、特定の地域、プラットフォーム、異なる部分の数に限る必要はない。大雑把な開発の手順を示すなら以下のようになる。
- (1) ユーザ(顧客)の好みの多様性を分析し、
- (2) 分析にもとづいてゲームの共通部分と可変な部分を定義し、
- (3) 定義にもとづいてゲーム製品ファミリを開発・提供する
もちろん、技術的・販売的(?)な課題は沢山あると思う。だけど、ダウンロード販売が主流になってくるとしたら、このようなアプローチが行われるようになるかもしれない。次回のエントリでは、具体的にどのような課題があるのかを考えていきたい。
追記
続きはこちら。
参考
フィーチャダイアグラムに関しては以下の本を参考にした。
ジェネレーティブプログラミング (IT Architects’Archive CLASSIC MODER)
- 作者: クシシュトフ・チャルネッキ,ウールリシュ・W・アイセンアッカ,津田義史,今関剛,朝比奈勲
- 出版社/メーカー: 翔泳社
- 発売日: 2008/04/23
- メディア: 大型本
- 購入: 7人 クリック: 399回
- この商品を含むブログ (45件) を見る
- David Lorge Parnas, Multi-Dimensional Software Families: Document Defined Partitions of a Set of Products, the 12th International Software Product Line Conference (SPLC08) , Keynote (pdf)
- Jan Bosch, On Software Product Lines, Customer-Configured Products and Ecosystems, the Brazilian Symposium on Software Quality (SBQS 2009), Keynote (pdf)
*1:通常は、各ノードはパーツではなくフィーチャと呼ばれる