サーバープログラマーが語る「TERA」のノンターゲット戦闘とその難しさ
NHN NEXTのグ・スンモ教授へのインタビューがinvenに掲載されているが、その中でも興味深いのがMMORPG「TERA」のノンターゲッティング戦闘に関する回答だ。
ターゲット方式のMMORPGやノンターゲット方式のMORPGの戦闘とノンターゲット方式のMMORPGではいったいなにが違うのだろうか。また、そこにはどのような苦労があるのか。
Q. TERAのノンターゲッティングシステムの作業をされたことがあるそうですが、シームレスワールドで行われるノンターゲッティング戦闘をプログラミングするのは困難が多いかと思います。どのような原理で実現しているのでしょうか?
A. MMOゲームでのノンターゲッティング戦闘システムはMOゲームのノンターゲッティングシステムや既存のMMOのターゲットシステムとは根本的に異なります。
MOでは同時プレイヤー数が多くないため、クライアント側で全部直接処理すれば良く、ターゲット方式のMMOの場合でもプレイヤーが指定した特定の対象に対する打撃判定だけ行えばよいのですが、MMOでのノンターゲッティング戦闘はこれらよりもはるかに複雑になります。
例えば、特定のエリアに向かって剣を振り回す攻撃をした時を考えてみてください。
その範囲内にある対象が、もし友好的なユニットであれば攻撃判定なしにそのまま通りすぎて、敵対的なユニットであればダメージを与える計算が行われます。
さらに、片方からもう片方へ振り回す攻撃の場合には、先にヒットしたオブジェクトの次にヒットしたオブジェクトの間の時間差判定も考慮しなければなりません。
スキルによっては当たり判定が10回以上必要な場合もあります。
ですので、クライアントの物理エンジンで可能な判定を、サーバーでもある程度シミュレーションするべきでしょう。
このようなノンターゲッティング戦闘をゾーン方式で処理する場合は、特定のゾーンに対して分割して処理すればよいですが、シームレスの場合はワールド全体にこのような処理をする必要があります。
TERAのライブサーバーの場合は今この瞬間にも数千、数万件のノンターゲッティング判定がなされています。そのため、スループット(処理量)自体がターゲット方式のMMOGに比べてはるかに多いです。
ノンターゲッティング戦闘システムはサーバープログラマーはもちろん、企画者、アーティストなどすべての分野で非常に難しいことです。
アニメーションを一つ一つ個別に作成しなければならず、モンスターの大きさに応じた部分打撃判定もいちいち作成する必要がありますので、できればお勧めできません(笑)
ノンターゲッティング戦闘システムの原理については、Game Developer Magazineと、ゲーム開発の話を扱う海外の雑誌に掲載されたこともあります。
invenより引用
実際にインタビューの回答以上に複雑な処理が行われている。Game Developer Magazineに掲載された記事に詳しく載っているので興味のある方はこちらからどうぞ
ターゲット方式のMMORPGやノンターゲット方式のMORPGの戦闘とノンターゲット方式のMMORPGではいったいなにが違うのだろうか。また、そこにはどのような苦労があるのか。
ターゲッティング方式とノンターゲッティング方式の比較
ターゲッティング方式
―比較的簡単な操作
・対象を選択してスキルをクリックするればよい
―カメラ操作の自由度
・選択したターゲット以外の周囲も簡単に見ることができる
―状況判断が簡単で戦いに集中することができる
・大規模な戦闘にも適している
ノンターゲッティング方式
―現実的でダイナミックな戦闘
・敵の状態を正確に把握する必要があり、キャラクターの動きや位置が重要
―操作感覚が重要
・素早い判断力と行動
―華やかで直感的
・第3者が見たときに何が起こっているのかわかりやすい
Q. TERAのノンターゲッティングシステムの作業をされたことがあるそうですが、シームレスワールドで行われるノンターゲッティング戦闘をプログラミングするのは困難が多いかと思います。どのような原理で実現しているのでしょうか?
A. MMOゲームでのノンターゲッティング戦闘システムはMOゲームのノンターゲッティングシステムや既存のMMOのターゲットシステムとは根本的に異なります。
MOでは同時プレイヤー数が多くないため、クライアント側で全部直接処理すれば良く、ターゲット方式のMMOの場合でもプレイヤーが指定した特定の対象に対する打撃判定だけ行えばよいのですが、MMOでのノンターゲッティング戦闘はこれらよりもはるかに複雑になります。
例えば、特定のエリアに向かって剣を振り回す攻撃をした時を考えてみてください。
その範囲内にある対象が、もし友好的なユニットであれば攻撃判定なしにそのまま通りすぎて、敵対的なユニットであればダメージを与える計算が行われます。
さらに、片方からもう片方へ振り回す攻撃の場合には、先にヒットしたオブジェクトの次にヒットしたオブジェクトの間の時間差判定も考慮しなければなりません。
スキルによっては当たり判定が10回以上必要な場合もあります。
ですので、クライアントの物理エンジンで可能な判定を、サーバーでもある程度シミュレーションするべきでしょう。
このようなノンターゲッティング戦闘をゾーン方式で処理する場合は、特定のゾーンに対して分割して処理すればよいですが、シームレスの場合はワールド全体にこのような処理をする必要があります。
TERAのライブサーバーの場合は今この瞬間にも数千、数万件のノンターゲッティング判定がなされています。そのため、スループット(処理量)自体がターゲット方式のMMOGに比べてはるかに多いです。
ノンターゲッティング戦闘システムはサーバープログラマーはもちろん、企画者、アーティストなどすべての分野で非常に難しいことです。
アニメーションを一つ一つ個別に作成しなければならず、モンスターの大きさに応じた部分打撃判定もいちいち作成する必要がありますので、できればお勧めできません(笑)
ノンターゲッティング戦闘システムの原理については、Game Developer Magazineと、ゲーム開発の話を扱う海外の雑誌に掲載されたこともあります。
invenより引用
実際にインタビューの回答以上に複雑な処理が行われている。Game Developer Magazineに掲載された記事に詳しく載っているので興味のある方はこちらからどうぞ