Info from Valve Only やインタビュー記事の日本語訳 2
Emails from Valveから
HL2に関するゲーム系のサイトのインタビューなども一段落してます。ちょっとでも新しい情報はないかとHalf-Life関連サイトのフォーラムを覗いてみると Valveとのメールのやり取り内容が引用されているものがいくつかありました。情報の信頼性という意味では少し落ちますが、ご紹介します。
halflife2.nethttp://www.halflife2.net/ )のフォーラム:General Discussion"Emails from Valve"のスレッドから。EVIL氏が、Gabe Newellとのメールのやり取りを紹介
Q:
E3のデモで使われたデルのマシンでは、ATI Radeon9800 Proの256MBバージョンが使われていたというウワサがあります。これは本当でしょうか?
またHL2は、VRAM 128MB搭載のカードに対して、256MBのカードは何らかのアドバンテージを発揮するようになっていますか?
Gabe:
Sourceエンジンは、ハードメーカーが新たに出荷するハードの機能を利用するようマテリアルをアップデートできるようにデザインされている(アップデートは、たぶんSteamを通してリリースされるだろう)。
だから、もしメモリを512MB搭載するとか、ピクセルシェーダ、バーテックスシェーダに倍の数の命令が使えるといったカードが出されたとするとカードを持つユーザは、それらの機能を有効活用するようにアップデートできるということさ。
あなたからの質問にストレートに答えておくと、E3のデモマシンのカードはメモリ128MBだったと思う。エンジン自体は256MBの恩恵を蒙るように作られているんだけどね。記憶が正しければ、ATIから256MBのカードが送られてくる前に、デモ用のハードウェア構成は凍結したんだ。
Q:
HL2では、Soldier of Fortune 2のようなダメージシステムが使われていますか?(これは、人体に対するダメージ表現の細かさ(残虐さ)のことを指しているらしい)
Gabe:
HL2は、SOF2のようなダメージシステムは使われていないよ。
"Emails from Valve"のスレッドから、Apos氏がGabeとは別のValve社員とのやり取りを紹介
Q:
物理的な相互作用はパーフェクトに思えますが、いくつかのシーンにはちょっと妙なところがありました。E3のビデオを1フレームづつ分析していって明らかになったこと。物体が実際に(視覚的に)ぶつかり合う前に相互作用が発生しています。
・箱が水に落ちる前に水しぶきが上がっている・バールが当たる前に板が壊れている・鉄骨が当たる前に兵士が吹っ飛んでいる
A:
指摘された部分は、デモのプレイバックで生じた誤差なんだ。物理エンジンの働きによるものではないんだよ。じっさいにプレイする際は、この誤差は出ない。
手持ちのビデオカメラで撮影したようなE3デモの映像が、フレーム単位に分析されるなんてことは、まったく想定していなかった。プレイバック機能は、ピクセル、フレームといった単位ではまったく正確ではないものなんだ。
そこまでの正確さを求めるならムービーにするしかないのだけど、ゲーム製作作業の中でムービー作成のための時間を捻出するのは本当に苦しかった(それにムービーにした場合、圧縮によるピクセルや動きの誤差も出るしね)。
今のプレイバック機能でも、われわれの用途には十分なんだ。
Q:
・火花がモノを透けて見えてしまう(技術デモの樽のシーン、飛行物体がバリケードの車を撃つシーン) また、すぐに火花が飛びすぎるように思える。ゆっくり動く樽同士がぶつかっても火花は飛ばないのでは。
・死ぬ際のモンスターの倒れ方が急すぎる。操り人形の紐を切ったようだ。ヘッドクラブのようなモンスターについては、動きが止まるだけなので死んだかどうかの判別がつきにくい。前作のように痙攣したり、肢を縮こまらせたり、裏返ったりして死んだことがプレイヤーに伝わるようになっていない。
A:
指摘されたポイントは、両方ともこれからの作業リストに載せているよ。Thanks for the mail.
An interview with Gabe Newell
HL2Centralhttp://www.hl2central.net )のAn interview with Gabe Newellより抜粋してご紹介:
HL2C:
乗り物に3軸の移動がサポートされているかどうか、つまり飛行機が作成可能なのか、ということがコミュニティでは話題なのですが?
Gabe:
飛行機は作れるよ。でもHL2のゲームの中には出てこない。これは技術的な制限によるものではなく、ゲームデザイン的にそうしたということ。
HL2C:
E3のデモには、前作で手に入ったホーネットガンやスナークのようなエイリアン武器が出てきません。HL2でも、エイリアンのテクノロジーによる武器を手に入れられますか?
Gabe:
手に入るよ。
HL2C:
HL2には、ゲーム中にMP3を再生する機能が入りますか?
Gabe:
その機能は入れないだろう。じっさいにはMP3を再生する機能は含まれるのだけど、プレイヤーが再生する音楽を選べるようにはしない(つまりプレイリストを設定する画面など)。MODで作るのは簡単だろうけどね。
HL2C:
HL2には、Softimage Ixsiの簡易版が含まれますか?
Gabe:
含まれる。
HL2C:
アメリカに来れない人達のために、ヨーロッパでMOD Expoを開催したりしませんか?
Gabe:
するかもね。まだスケジュールには入れてないけど。
HL2C:
銃の弾丸について、リアリスティックな弾道計算が適用されますか?射程距離、跳弾、距離/風による弾道変化など。(arc of fire, ricochets, range/wind affects trajectory, etc?)
Gabe:
プロトタイプは作ってみたけど、ゲームデザインにはフィットしなかったんだ。HL2とは別のゲームでは、そういった要素も有効かもしれないね。
Emails from Valve-jheroさんのGabeのやりとり
以前にもご紹介したhalflife2.nethttp://www.halflife2.net/ )のフォーラムGeneral Discussionの"Emails from Valve"のスレッド。さっき見ていると、jheroさんのGabeとのe-mailのやり取りにこんな部分が:
posted : 2003/06/28 AM 04:25
Q:
E3のデモが(ビデオなどの形で)直接リリースされるという話を耳にしました。このことについて、少しでも情報がいただけないでしょうか?それともこれは単なる憶測なのでしょうか?
A:
うん、数日の間にSteamを通してビデオをリリースするよ。(Yes, we will be releasing the videos over steam in the next few days.)
スレッドでは、この後でSteamに関してのやり取りがありました。じっさい自分のマシンにSteamをインストールしてみたところ、 Steamインストールディレクトリ/resource/games のフォルダに、icon_hl.tga、icon_opfor.tga、icon_tfc.tgaなどと並んでicon_hl2_media.tga というファイルがあることが確認できました。数日の間にこのアイコンがアクティブになって、ビデオが落とせる?ということで、スレッドはちょっとした祭り状態でした。
Emails from Valve-Lemuresさんのメール
halflife2.nethttp://www.halflife2.net/ )のフォーラム:General Discussionの"Emails from Valve"のスレッドより。今度はLemuresさんのメールを、Gabeが編集して答を記入して返信したもの。
Lemures
posted: 2003/06/28 AM 01:02
1.
このようなメールを、1日何通くらい受け取りますか?
Gabe:
たくさん
2.
Sourceエンジンはスケーラビリティがあるということですが、動作がギクシャクするようであれば、自動的にポリゴン数を落とすといったようにダイナミックに動作を変化させるのでしょうか?それともゲームを開始する際の設定で決まるといった静的なもの?
Gabe:
ダイナミックに変化するよ。
3.
SDKはいつリリースされますか?
Gabe:
何段階かに分けたリリースになる。もう手にしている人達もいるんだ。(訳に自信なし: it will be staged; some people have it already)
4.
HL1エンジン用のマップやモデルをHL2用にコンバートすることはできますか?
Gabe:
できるだけコンバートが簡単に行えるようにはしたよ。
5.
鳥以外に、環境描写に使われる生物はいますか?ストライダーから逃げるシマリスなどがいると、ウケるのですが。
Gabe:
heh
6.
バールについて。あれは単純に目標にダメージを与えているだけなのでしょうか?それともバットのようにスイングされ、当たった角度によって何か違いがでるようになっているとか?
Gabe:
物理的にシミュレートされるよ。空を切ってスイングされる棒としてね。
7.
「インバース・キネマティックス」とか、大きな声で口にすると気持ち良いです。と、これは質問でも何でもないですね。
Gabe:
「デフォーメーション・メッシュ」も、声に出すと楽しいぞ。
8.
HL2を、僕に先出ししてもらえませんか?
Gabe:
換わりに何をもらえるかによるな。
thanks!
あなたの熱心なファンより(このような署名を目にされたのは何度目でしょう?)
自分がメールを出してから、約10分ほどでGabeはこの返答をくれました。そこで、さらにもうひとつ質問を出しました:
lol... デフォーメーション・メッシュ...まさかこんなに早く返事をいただけるとは思わなかったです!
もうひとつ質問です。
E3 のデモにおいて、適当なシェーダをかませたりすれば、水から人を形づくることもできるとおっしゃっていました。もしそうやって人間を作ったとしたら、それを銃で撃ったらどのようになるのでしょうか?血を流すのでしょうか?それとも水が飛び散るのでしょうか?溶けたりなんかすると面白いと思うのですが、さすがにそれは無いでしょうね。そんな水飛沫(splashing)のような現象は、簡単にプログラムに組み込めますか?(スプライトと音をうまく使えば...)
Gabe:
そうだね、水を飛び散らせることになると思うよ。マテリアルを揃えさえすれば簡単に再現できるだろう。じっさいには、水飛沫はスプライトによる表現にはならないけど。
"Emails from Valve"のスレッドですが、益体も無い質問にもフランクに答えるGabeの姿に、「あんまりつまんないメール出すなよ。Gabeたん、あきれちゃうよ」みたいな意見が出てきてて、おかしいです。
それにしても、やっぱり向こうでもGabeはSaint(聖人)扱いですね。
Info from Valve ONLY -McFace?さんのメールのやり取り
halflife2.nethttp://www.halflife2.net/ )のフォーラムから"Emails from Valve"のスレッドに引用されたメール内容を紹介してきましたが、Planet HLにも載っていたように新たに"Info from Valve ONLY (no discussion)":
http://www.halflife2.net/forums/showthread.php?s=&threadid=1298というさらに情報密度の濃いスレッドができました。
そこから、McFace?さんのメールのやり取りをご紹介:
McFace?:
Half -Life2は、CPUのハイパー・スレッディング機能をサポートしますか?理論的にいえば、システム負荷が大幅に軽減するのでは?たとえば、1つ目のプロセッサが物理計算を一手に引き受け、2つ目がAIなどの違うタスクを行い、3つ目はサウンドといったかんじで。どうでしょうか?
Gabe:
CPU のハイパー・スレッディング機能を使うと、スレッド単位でのパラレル処理による最適化が試みられる。伝統的なパイプライン構造のCPUでは命令単位でのパラレル処理に留まるのとは対照的だ。パフォーマンス的な観点からみると、ハイパー・スレッディングは予測不能な結果を生む可能性があり、場合によっては通常より遅くなるケースも考えられる。
Sourceエンジンを根本的なレベルでマルチスレッドに対応させる(すなわちレンダラーのマルチスレッド化を行う)と、実装するのもメンテナンスしていくのも、とても大変になる。こういう改造バージョン(つまり、物理計算用スレッドを作ったり、異なるスレッド間でクライアント/サーバ機能を走らせたりといったこと)を実現できるかどうかは、出荷までにどれだけのマンパワーが取れるかに掛かっている。今のところ、他の最適化に重点を置いているのが実態だ。最適化が必要なポイントが残り少なくなってくれば、事態が変わることもありうるけど。
対照的に64bit対応については、一度の改造の手間で、ストレートに効果が出る。特にツール類に関しては、ひとつの命令あたりの処理量が増えるだけでなく、現在の(アドレッシングの?)メモリ制限を越えることができるのが大きなメリット。いま、ツールはこの問題にぶち当たっているんだよ。
分散コンピューティングは、ハイパー・スレッディングより実現が困難だけど、大幅な性能向上のポテンシャルを秘めている:
ハイパースレッディング:30%の性能向上
分散コンピューティング:8倍の性能向上(我々のツールにおいて)
ツールについては、すべて分散コンピューティングの手法を採用していく予定だ。
整理すると、以下のようになる:
アルゴリズムの最適化 (一般的に良い結果をもたらす)
DirectX9向けの最適化 (大幅な性能向上、将来を見すえた方向性)
64bit (それほど困難ではなく、性能向上に加えメモリ問題の解決にもなる)
ハイパースレッディング (最初の実装が困難で、ソースを保守していくコストも高い。限定的で結果予測の難しい性能向上。マルチCPU環境でも効果を発揮)
分散コンピューティング (最も実装が困難。性能向上のポテンシャルも最高。ツールには最適で、サーバにも使えそう。クライアントへの適用法は不明確)
これで意味が通じることを願うよ。Jay、どこか直すところある?
さらに"Info from Valve ONLY (no discussion)"のスレッドから、rootbinさんがChris Evansさんのメールのやり取りを引用した部分:
Chris Evans:
hey, Gabe。HL2 SDKに関して、メールで触れられていた点に関して:「何段階かに分けたリリースになる。もう手にしている人達もいるんだ。(訳に自信なし: it will be staged; some people have it already) 」
Valveでは、SDKを先出しする相手をどのように決定したのでしょうか?個人的な話をさせていただくと、自分はMODチームのプログラマーであり、早くスタートが切りたくて堪らないのです。いまSDKを手に入れるには、どのようにすればよいか教えてください。
Gabe Newell:
"Lord of SDK Distribution"であるChris Bokitchと話してみてくれ。
Chris Bokitch:
Hi Chris。現時点でどのMODチームがSDKを手にしているかは、自分にもはっきりとは分からないが、ごく一部のチームに限られた話だ。Day of Defeatのチームが持っているのは確かだな。現在、一般公開バージョンを「できるだけ早く」リリースできるよう作業中だ。まだSDKに何を含めるかを検討中の段階なんだ。もう少し詳しい情報をすぐにも公開する。情報公開の際には、メジャーなゲーム/Half-Lifeのニュースサイトには送るし、 Collectivehttp://collective.valve-erc.com/ )には、真っ先に掲載するよ。
Info from Valve ONLY -Aposさんのメールのやり取り
halflife2.netのフォーラムスレッド:Info from Valve ONLY (no discussion)より、Aposさんのメールのやり取りをご紹介:
posted: 2003/07/01 PM 06:38
Apos:
デモにおいて、特に風に対する動きが素晴らしかったケーブル/ワイヤーについて質問です。この効果を出すには、マップ作成やモデルデザインにおいて何を考慮しなければいけませんか?
(エイリアン・ガンシップのような)モデルは、あたり一帯に風を巻き起こすというような特別なフラグを与えられているのでしょうか?あるいは、この効果を出すにはC++言語での固有なスクリプティングが必要でしょうか?また、ケーブル/ワイヤー以外のオブジェクトについても「風」に反応するように設定することはできますか?それとも、オブジェクトの重量に応じてオートマティックに反応が得られる?
Gabe Newell:
mike?
Mike Dussault:
現時点では、ガンシップの周りで揺れるロープなどについては、効果を要求するエンティティに特有のコードを必要とするんだ。ロープ状ではないオブジェクトにグローバルに影響を及ぼす風力を生み出すエンティティもあるよ。そのエンティティは風速、風向き、音といったパラメータを持っている。
Apos:
Wow, thanks。これまでに先出しされた映像の中でも、ロープはさまざまなシーンに特別な華を添える存在だったと思います。マップにさらなるリアリズムを与え、表現される世界に臨場感をもたらしていました。もしあの効果が無ければ、ドックのシーンと市街戦のシーンはこれほど印象的にはならなかったでしょう。ロープ状のオブジェクトが、単にに柔らかくたわむだけでなく、跳ね回ってねじれる様子(bounce and twist)は、ほんとうに驚異的です。あのオブジェクトを作るのは、どれほどの手間が掛かりますか?両端を定義して、長さとたるみを設定するだけ?
そうだね。じっさいにロープはそのように定義されるんだ。以前記した、じゃっかん詳細に触れた文を紹介しよう:
ロープは、両端の間にわたされた一群の(普通は5~10個の)スプリングの集合としてシミュレートされる。つまり内部的には以下のように表現される:
*-----*-----*-----*-----*
"*"はエンジンで制御されるノードを現していている。エンジンがノードの動きをシミュレートし、それからノードの間のカーブが描かれてロープが表現されるんだ。
ノードは重力と風に反応して動く。エンティティはロープを揺らすよう力(force)を及ぼせるようになっている。ガンシップは常にこの力を発揮しているし、ストライダーはステップを踏み出す際に出力するというわけ。
MODを作る際、(グラップリング・フックのように)モノの間にロープを張るのは簡単だ。関数を呼び出して、以下を指定する:・両端にどんなエンティティを結びつけるか・ロープの長さ・ロープの材質マップデザイナーは、両端にエンティティを置けるようになっているよ。
Info from Valve Only-EVILさんの投稿内容
halflife2.netのInfo from Valve ONLY (no discussion)より、EVILさんの投稿内容をご紹介:
posted: 2003/07/02 PM 04:41
EVIL:
Half -Life2がDoom3のようにダイナミック・シャドウをサポートしているかどうか、というちょっとした論争に巻き込まれています。自分はサポートしていると思っています。というのも、オランダのゲーム雑誌にそう書いてあったし、デモ映像の中でコードにぶら下がった電球を押して揺らすと、動きに応じて部屋の中のオブジェクトにダイナミック・シャドウを投影していたシーンがあったからなんですが。
Gabe:
そうだね。ダイナミック・シャドウをサポートしているよ。Doom3とは違ったアプローチを取っているけど。
SidewinderXさんの投稿内容をまとめて3つご紹介:
Subject: HL2 Physics and Multiplayer
posted: 2003/07/01 PM 08:47
SidewinderX:
ひとつ質問です。E3ビデオでのHL2の物理演算は驚異的でした。マルチプレイヤー環境において、物理演算がどのように働くか教えてください。物理演算はクライアント側で行われて、結果を目にするのはそのプレイヤーだけ、ということなのでしょうか?あるいはサーバ側で行われて、たとえば机を押して動かしてドアをブロックした場合、他のプレイヤー達も同じ環境になるということでしょうか?もしサーバ側で処理されるとしたら、マップ中のインタラクティブなオブジェクトの数が多いと、ラグを生みませんか?オブジェクトに関する情報をサーバに送るとすると、かなりラグが発生するように思います。それとも、そんな心配は不要なくらい優れたネットコードになっているのでしょうか?
Gabe:
ネットコードについては、YahnとMikeがかなり手を入れたよ。MODでの拡張がとてもやりやすいものになったし、パフォーマンスも向上したよ。
ゲームのコーディングにおいて、それぞれの物理演算をクライアント、サーバのどちらで行うかを選択するようになっている。たとえば破片の飛び散り演算に関しては、ほぼ間違いなくクライアント側で行っても問題無い。すべてのプレイヤーが破片が飛ぶのを目にするが、同じ飛び散り方ではない、というだけのことだからだ。しかし机を動かす件に関しては、机の正確な位置がすべてのプレイヤーに対して意味を持つため、サーバ側で処理せざるをえないだろう。
Subject: Physics and the HL2 Netcode
posted: 2003/07/01 PM 09:08
SidewinderX:
Hi! Half-Life2のネットコードが改善されているのは分かりました。そこで、また質問があります。ネットコードは、マップの内容に影響を与える可能性のあるオブジェクト(ドアをふさぐことができる机、重ねて階段替りに使える箱、破壊可能な木で作られたモノなど)を大量に含めても大丈夫なようになってますか?それとも、ひどいラグが発生してしまうのでしょうか?
Yahn Bernier:
ラグの要因となるパケットサイズは、メッセージ毎にいくつのオブジェクトの変更ステータスを送るかに影響される。また物理システムは、シミュレートしている(動いている)オブジェクトの数に応じてパフォーマンスを調整する機能を持っている。挙げられた机、箱などの例では、まったく問題とはならないと思う。一度に100個のオブジェクトを動かすということであれば、話が違うかもしれないが。それは試してみないと分からないな。
Subject: Physics and the HL2 Netcode: Part II
posted: 2003/07/02 PM 04:37
SidewinderX:
わずらわせてすみません。ネットコードに関して質問があります。マルチプレイヤーにおいては、(銃火などの?)光はダイナミック・シャドウなどの処理を要求するので、ひどいラグの原因になると思うのですが?
Yahn Bernier:
光の処理については、完全にクライアント側のパフォーマンスの問題だから、ラグにはつながらないよ。
SidewinderX:
ネットコードは、同時に32人を越すプレイヤー(64人までを希望)がいても問題が出ないくらい改善されているのでしょうか?サーバ性能に大きく依存する問題だということは分かっています。では、もし「完璧な」サーバを使ったと仮定した場合、先ほど挙げたような大人数の同時プレイでは、ネットコードによる問題は出るでしょうか?Yahn Bernier:エンジンに、32人を超すマルチプレイをサポートさせるかどうかは、まだ最終決定されていないんだ。
SidewinderX:
では、最後の質問です。答えていただけるかどうかは分かりませんが。ネットコードの力によって、HL2でのマップチェンジはHL1や他のゲームに比べてスムースで早くなっていると考えてよいですか?
Yahn Bernier:
マップチェンジの性能について、HL1と比較して分析したことは無いから、正確な差は分からない。匹敵する早さにはなっていると思うよ。ただ、今回は扱うデータ量も増えているからね。
Info from Valve ONLY (no discussion)より、短いのを2つ。
posted: 2003/07/03 PM 07:13
BaNDiT:
Hey Gabe,
木の板が水の上に浮かんでいるとします。その上にプレイヤーが跳び乗ると、ゆっくりと沈んでいくのでしょうか?
Gabe:
yes
posted: 2003/07/04 AM 03:16
PoopStewart?:
Amazon.comでは、HL2は「2003/12/15 発売」とリストされています。Gabeと連絡を取って、真偽を確認してみました。これが彼の返答:
Gabe:
その発売日じたい、どこを出所としたものか分からないな。何も変更はないよ。
今のところ2003/09/30発売予定は変わらない、と考えてよさそう。
Info from Vlave Only - Foggyさんのメールをご紹介
Info from Valve ONLY (no discussion)より、Foggyさんのメールをご紹介(長文):
posted: 2003/07/03 PM 01:46
Foggy:
私たちのチームは、スパイダーマンのコンセプトを元に作業を進めています。とうぜん、ウェブ(蜘蛛の糸、網)の能力を実現させたいと考えています。
・ウェブを壁に発射して、それを使ってビルの間を移動。
・オブジェクトに向かってウェブを発射し、カタパルトのように飛ばして敵にぶつける
・通路に大きなウェブを張って敵の進路を妨害
ソースエンジンを使って、このようなシーンを再現できるでしょうか?
Brian:
うん。ソースエンジンで実現可能だね。挙げられた例の表現方法の案を示すよ。
・ウェブを壁に発射して、それを使ってビルの間を移動。
ウェブの発射は、プレイヤーからマップに対しての単純なトレースラインで表現できる。命中した部分には、ウェブのデカールを貼る。接触点を示すためにね。そしてmeshbuilderというツールを使って、プレイヤーと接触点の間にウェブを描画するんだ。もっとカッコよくしたければ、エンジンの持つケーブルシミュレータの機能を使うといい。ウェブを物理シミュレートして、ロープのような動きをさせるんだ。そうすれば、新しいウェブを発射した後、捨てられた前のウェブが壁や地面にバウンドする様子もシミュレートできる。HL2では、プレイヤーの動きに手を加えるのは(HL1に比べてすっと)簡単になっているんだ。それによって、ウェブに引っ張られる動きをシミュレートできるだろう。
・オブジェクトに向かってウェブを発射し、 カタパルトのように飛ばして敵にぶつける
これを再現するためには、物理オブジェクトを使うことになるだろう。ウェブのレイキャストが物理オブジェクトに命中した際に、vphysicsに力を適用してそれがマップの中を飛んでいくようにするんだ。エンティティが高速に移動する物理オブジェクトと衝突した際には、自動的にダメージが適用されるシステムを持っているんだ。(オブジェクトが何で出来ているか(material)も考慮に入れた上で、ダメージが計算されるようになっている。たとえば木より鉄でできた物にぶつかった時の方が大きなダメージを受けるということ)
・通路に大きなウェブを張って敵の進路を妨害
これを実現するためには、ウェブをマップに固定するポイントとして、複数のレイキャストを使う必要がある。ウェブの描画自体には、meshbuilderを適用するだけでいい。ウェブを障害物としてふるまわせるには、他のエンティティが接触した際に、トリガーが引かれるように設定する。トリガーが引かれると、接触したエンティティの動きを遅くしたり、あるいは完全に止めるようにするんだ。
あと、ウェブのエンティティには衝突モデルを設定する必要がある。いちばんシンプルなのは、ウェブを取り囲むように境界線を配置することだろう。ちょっと正確性には欠けるが、とてもコーディングは簡単だ。もっと正確な衝突モデルを採用することもできるけど、その場合は特別な衝突関数を実装する必要がある。ゲームの中にも、そういう特別な衝突関数を持つエンティティの例は出てくるよ。
Foggyさんのメールの続き:
Foggy:
一般的な「武器」は使わず、ウェブ能力とまわりの環境を利用して進んでいく、というのがゲームの核となるアイデアなんです。プレイヤーが、2、3人の敵に追われながら通路を逃げているシーンを思い浮かべてください。通路にある箱を、ウェブでひっぱって敵に向かって飛ばす。それから、通路にウェブを張って敵を足止めし(ウェブの材料が残りわずか)、壁に発射して上に登ってから、敵の背後に着地。そして敵をウェブでくるんで一網打尽。スパイダーの勝利。面白そうだと思いませんか?
ウェブの粘り気を再現することはできるでしょうか?
貴重な時間を割いてくれてありがとう。HL2の完成に向けてがんばってください。これから何年かのスパンで見ても、最高のヒット作になることを確信しています。当然でしょ? それに値するものを作っているんですから。
Brian:
面白そうなアイデアだね。実現がとても楽しみだよ!
うん、ウェブの粘り気も再現可能だよ。プレイヤーの動きを制御する部分のコーディングは、ほんとうに変更が容易なんだ。プレイヤーの動作を鈍くして、ウェブの粘着性をシミュレートさせる。ウェブに接触したプレイヤーにフラグを立ててね(これはwebエンティティのTouchメソッドで行うことになるかな)。
Foggy:
ソースエンジンでは、いろいろなことが出来るのですね。
もちろん「スパイダー」に対する敵役も用意します。「キャッチャー」です。以下に書くことは可能でしょうか? 無理ではないかと思うのですが..
キャッチャーのもっとも大きな特徴は、「背後から」でないとスパイダーを捕獲できないということ。これはとても困難なアクションなので、キャッチャーには背後の風景に溶け込む能力を持たせたいと思っているのです。たとえば、背中を壁に押し当てていると壁のテクスチャが写るとか、鉄壁に向かって立っていると、鉄のテクスチャに変わるとかね。この要素で、ゲームはとてもエキサイティングになるよ。スパイダーたちは、密集して周りの壁をスキャンしながら進むしかなくなるからね。
実現可能でしょうか?
Brian:
背景への溶け込み。これは、どのレベルのグラフィックハードをサポートするつもりかで、実装方法が変わってくるな。E3のデモにも出てきたrefractive(屈折)シェーダを使うという方法がある。ただ、これは DirectX8以上のハードウェア(たとえばGeForce3以上、Radeonなど)でなければ動作しない。もっと低レベルのハードウェア (DirectX6、7)でも走らせたいということであれば、単純な透過処理を採用せざるおえないだろう。
Foggy:
では、テクスチャの変化を「lean(寄りかかり)」のアクションにバインドする、といったことは可能ですか?
Brian:
ああ。スキン切り替えの機能(skinning feature)があるからね。寄りかかりの状態に応じてスキンを替えればいい。それにゲームのステータスをシェーダにプラグする機能もあるんだ。これを使えば、寄りかかっている時間に応じて、プレイヤーの透明度を変更したりといったことも可能だよ。
Info From Valve Only から 3つご紹介
halflife2.nethttp://www.halflife2.net/ )のGeneral DiscussionフォーラムのInfo from Valve ONLY (no discussion)より、3つをご紹介。まずはSidewinderXさんが、Piantaさんのメールを投稿したもの。
Subject: International Version
posted 2003/07/07 PM 08:12
Maurizio Pianta:
Hi Gabeわたしはイタリア人です。HL2のイタリア語音声入りのローカライズ版について質問させてください。こういったバージョンは発売されますか?もし出るなら、それはUSA版と同じ時期(on the same time frame)に出るのでしょうか?
Gabe:
Yes, and yes.
djroboさんのメール:
Subject: Obligatory HL2 question #958334
posted: 2003/07/08 AM 02:52
djrobo:
手榴弾で箱を吹き飛ばしたとすると、とうぜん小さな破片となって飛び散ります。その破片は、他のオブジェクトとインタラクティブな存在としてマップに残るのでしょうか?それとも蒸発するように消えてしまう?
Gabe:
レベルデザイナーが、どう設定するかによるな(振る舞い方を選択可能ということ)。
djrobo:
シーソーのような装置を作ることは可能でしょうか?プレイヤーが板の片方でジャンプすると、もう片方が上に持ち上がるような?
Gabe:
できるね。プレイヤーも物理シミュレートされているから。
djrobo:
これは質問というより提案です。プレイヤーのインベントリーに制限を設けないでください。全部の銃やスイッチを、好きなように持ち運びたいのです。
Gabe:
自分もそういう方が好みだ。
Pimp Midgeさんのメール:
2003/07/01 PM 09:01
PimpMidget?:
Hey gabe. I can't wait.Alright. Here we go.セクシャルなご褒美のかわりに、ゲームを先出ししてもらうことはできませんか?
Gabe:
誰からのご褒美かによるな。キャメロン・ディアスで、許してくれるようワイフを説得できるなら、先出しに応じよう。
PimpMidget?:
了解。ここからがホントの質問です。デモの記録などは、HL1より簡単になりますか?
Gabe:
簡単になるよ。Yahnが色々とかんばったんだ。ゲーム内にデモ・エディターも付けた。カメラのトラック、被写体のトラックの設定や、パスの補間などなど。マシニマを念頭に置いた機能なんだ。
PimpMidget?:
デモの内容を画像にコンバートする機能も含まれるのですか?(Geek Playのように)
Gabe:
その機能もある。E3デモのビデオもそれを使って作成中だよ。Garyは、エンジンから映像を自動的にBinkファイルに出力する機能について作業中だ。
Pimp Midgeさんのメールの続き:
PimpMidget?:
ゲームが保存する画像ファイル形式は、相変わらずbmpですか?jpeg形式はサポートされるのでしょうか?
Gabe:
bmpだね。画像ファイルの管理やフォーマット変換は、ユーザが各々のツールでやればいい、という考えだ。
PimpMidget?:
分かりました。では、最後にひとつ。あなたはHL2のプロモーション担当者ですか?何がいいたいのかというと、カスのようなメールが山ほど届くはずですが、どうやって全てに対応しているのでしょう?
Gabe:
不眠と超速のタイピングによってね。
ここで出てくる「マシニマ」について。「ゲーム用エンジンで低予算のアニメ映画製作が可能に」:
http://www.hotwired.co.jp/news/news/Culture/story/3869.html「マシニマ」の本家サイトhttp://www.machinima.com/ )でも、このメール内容が紹介されてました。 Info from Valve ONLY marksmanHL2 さんのメール意訳
halflife2.nethttp://www.halflife2.net/ )のGeneral DiscussionフォーラムのInfo from Valve ONLY (no discussion)より、marksmanHL2 さんのメールをご紹介します。
回答しているのは、CollectiveのChris Bokitchさんだと思われます。
posted: 2003/07/11 AM 08:38
Mark:
プレイヤーとモデルを縮小したサイズで作ることによって、結果的に「広い」マップを持つMODを作ることはできるでしょうか?それとも物理演算に影響が出てしまうでしょうか?これは、コミュニティで出された疑問についてクリアにしたくて、尋ねさせてもらいました。個人的には無理ではないかと思っています。たとえそうでも、現状でも十分に広いので問題は無いと感じますが。
Chris:
挙げられた手法を取ることは可能だろう。だけどその場合、全ての物理演算をサイズに応じて調整する必要が出てくる。こういった手法はHalf-Life RallyのようなMODには有効だろう(じっさいHL Rallyは、HL1エンジンでこの縮小手法を採用して作られている)。
Mark:
プレイヤーが視線を下に向けると、自分の足や脚が見えますか?それとも何も見えないのでしょうか?
Chris:
何も見えないね。だけどこれも、デザイン的にそうしているということであって、技術的な制限ではないんだよ。
Mark:
E3デモに出てきた建物は、全てプレイヤーが中に入れますか? それとも一部だけ?
Chris:
一部だけ入場可能だ。デモの流れでそうする必要があったものだけね。
Mark:
準備が整いしだい、E3のビデオがリリースされるという状況であることを、誰か公式な立場の方に確認していただくことはできませんか?
Chris:
うん。準備ができしだい、Steamでムービーをリリースするよ。
Mark:
パーティクル効果のツール、バンプマッピング、スペキュラーマッピングなどを適用するツールは、SDKに含まれますか?
Chris:
SDKの構成については、まだ完全には決まっていないんだ。だけどMOD作成のために必要なツールやリソースは、すべての領域にわたってリリースする予定だ。
Mark:
ソースエンジンで、カメレオンのような効果を出すことはできますか?新しいテクスチャマッピングやその他の技術を使って?これは、面白くなりそうなMODを作ろうとしている友達からの質問です。
Chris:
キャラクターをガラスのような素材で作ることが可能だ。あるいは他の効果を使って、背後が透けて見えるようにすることもできる。動的にキャラクターに周囲のテクスチャを被せられるかどうかは、はっきりとは分からない。
(cc:に入っている)Jay Stelly なら、もう少し情報を出せるかもしれないな。
For more information on Half-Life 2 modding,check out the Half-Life 2 / Source Mod FAQhttp://collective.valve-erc.com/index.php?go=source_mod_faq
HL2に関するゲーム系のサイトのインタビューなども一段落してます。ちょっとでも新しい情報はないかとHalf-Life関連サイトのフォーラムを覗いてみると Valveとのメールのやり取り内容が引用されているものがいくつかありました。情報の信頼性という意味では少し落ちますが、ご紹介します。
halflife2.nethttp://www.halflife2.net/ )のフォーラム:General Discussion"Emails from Valve"のスレッドから。EVIL氏が、Gabe Newellとのメールのやり取りを紹介
Q:
E3のデモで使われたデルのマシンでは、ATI Radeon9800 Proの256MBバージョンが使われていたというウワサがあります。これは本当でしょうか?
またHL2は、VRAM 128MB搭載のカードに対して、256MBのカードは何らかのアドバンテージを発揮するようになっていますか?
Gabe:
Sourceエンジンは、ハードメーカーが新たに出荷するハードの機能を利用するようマテリアルをアップデートできるようにデザインされている(アップデートは、たぶんSteamを通してリリースされるだろう)。
だから、もしメモリを512MB搭載するとか、ピクセルシェーダ、バーテックスシェーダに倍の数の命令が使えるといったカードが出されたとするとカードを持つユーザは、それらの機能を有効活用するようにアップデートできるということさ。
あなたからの質問にストレートに答えておくと、E3のデモマシンのカードはメモリ128MBだったと思う。エンジン自体は256MBの恩恵を蒙るように作られているんだけどね。記憶が正しければ、ATIから256MBのカードが送られてくる前に、デモ用のハードウェア構成は凍結したんだ。
Q:
HL2では、Soldier of Fortune 2のようなダメージシステムが使われていますか?(これは、人体に対するダメージ表現の細かさ(残虐さ)のことを指しているらしい)
Gabe:
HL2は、SOF2のようなダメージシステムは使われていないよ。
"Emails from Valve"のスレッドから、Apos氏がGabeとは別のValve社員とのやり取りを紹介
Q:
物理的な相互作用はパーフェクトに思えますが、いくつかのシーンにはちょっと妙なところがありました。E3のビデオを1フレームづつ分析していって明らかになったこと。物体が実際に(視覚的に)ぶつかり合う前に相互作用が発生しています。
・箱が水に落ちる前に水しぶきが上がっている・バールが当たる前に板が壊れている・鉄骨が当たる前に兵士が吹っ飛んでいる
A:
指摘された部分は、デモのプレイバックで生じた誤差なんだ。物理エンジンの働きによるものではないんだよ。じっさいにプレイする際は、この誤差は出ない。
手持ちのビデオカメラで撮影したようなE3デモの映像が、フレーム単位に分析されるなんてことは、まったく想定していなかった。プレイバック機能は、ピクセル、フレームといった単位ではまったく正確ではないものなんだ。
そこまでの正確さを求めるならムービーにするしかないのだけど、ゲーム製作作業の中でムービー作成のための時間を捻出するのは本当に苦しかった(それにムービーにした場合、圧縮によるピクセルや動きの誤差も出るしね)。
今のプレイバック機能でも、われわれの用途には十分なんだ。
Q:
・火花がモノを透けて見えてしまう(技術デモの樽のシーン、飛行物体がバリケードの車を撃つシーン) また、すぐに火花が飛びすぎるように思える。ゆっくり動く樽同士がぶつかっても火花は飛ばないのでは。
・死ぬ際のモンスターの倒れ方が急すぎる。操り人形の紐を切ったようだ。ヘッドクラブのようなモンスターについては、動きが止まるだけなので死んだかどうかの判別がつきにくい。前作のように痙攣したり、肢を縮こまらせたり、裏返ったりして死んだことがプレイヤーに伝わるようになっていない。
A:
指摘されたポイントは、両方ともこれからの作業リストに載せているよ。Thanks for the mail.
An interview with Gabe Newell
HL2Centralhttp://www.hl2central.net )のAn interview with Gabe Newellより抜粋してご紹介:
HL2C:
乗り物に3軸の移動がサポートされているかどうか、つまり飛行機が作成可能なのか、ということがコミュニティでは話題なのですが?
Gabe:
飛行機は作れるよ。でもHL2のゲームの中には出てこない。これは技術的な制限によるものではなく、ゲームデザイン的にそうしたということ。
HL2C:
E3のデモには、前作で手に入ったホーネットガンやスナークのようなエイリアン武器が出てきません。HL2でも、エイリアンのテクノロジーによる武器を手に入れられますか?
Gabe:
手に入るよ。
HL2C:
HL2には、ゲーム中にMP3を再生する機能が入りますか?
Gabe:
その機能は入れないだろう。じっさいにはMP3を再生する機能は含まれるのだけど、プレイヤーが再生する音楽を選べるようにはしない(つまりプレイリストを設定する画面など)。MODで作るのは簡単だろうけどね。
HL2C:
HL2には、Softimage Ixsiの簡易版が含まれますか?
Gabe:
含まれる。
HL2C:
アメリカに来れない人達のために、ヨーロッパでMOD Expoを開催したりしませんか?
Gabe:
するかもね。まだスケジュールには入れてないけど。
HL2C:
銃の弾丸について、リアリスティックな弾道計算が適用されますか?射程距離、跳弾、距離/風による弾道変化など。(arc of fire, ricochets, range/wind affects trajectory, etc?)
Gabe:
プロトタイプは作ってみたけど、ゲームデザインにはフィットしなかったんだ。HL2とは別のゲームでは、そういった要素も有効かもしれないね。
Emails from Valve-jheroさんのGabeのやりとり
以前にもご紹介したhalflife2.nethttp://www.halflife2.net/ )のフォーラムGeneral Discussionの"Emails from Valve"のスレッド。さっき見ていると、jheroさんのGabeとのe-mailのやり取りにこんな部分が:
posted : 2003/06/28 AM 04:25
Q:
E3のデモが(ビデオなどの形で)直接リリースされるという話を耳にしました。このことについて、少しでも情報がいただけないでしょうか?それともこれは単なる憶測なのでしょうか?
A:
うん、数日の間にSteamを通してビデオをリリースするよ。(Yes, we will be releasing the videos over steam in the next few days.)
スレッドでは、この後でSteamに関してのやり取りがありました。じっさい自分のマシンにSteamをインストールしてみたところ、 Steamインストールディレクトリ/resource/games のフォルダに、icon_hl.tga、icon_opfor.tga、icon_tfc.tgaなどと並んでicon_hl2_media.tga というファイルがあることが確認できました。数日の間にこのアイコンがアクティブになって、ビデオが落とせる?ということで、スレッドはちょっとした祭り状態でした。
Emails from Valve-Lemuresさんのメール
halflife2.nethttp://www.halflife2.net/ )のフォーラム:General Discussionの"Emails from Valve"のスレッドより。今度はLemuresさんのメールを、Gabeが編集して答を記入して返信したもの。
Lemures
posted: 2003/06/28 AM 01:02
1.
このようなメールを、1日何通くらい受け取りますか?
Gabe:
たくさん
2.
Sourceエンジンはスケーラビリティがあるということですが、動作がギクシャクするようであれば、自動的にポリゴン数を落とすといったようにダイナミックに動作を変化させるのでしょうか?それともゲームを開始する際の設定で決まるといった静的なもの?
Gabe:
ダイナミックに変化するよ。
3.
SDKはいつリリースされますか?
Gabe:
何段階かに分けたリリースになる。もう手にしている人達もいるんだ。(訳に自信なし: it will be staged; some people have it already)
4.
HL1エンジン用のマップやモデルをHL2用にコンバートすることはできますか?
Gabe:
できるだけコンバートが簡単に行えるようにはしたよ。
5.
鳥以外に、環境描写に使われる生物はいますか?ストライダーから逃げるシマリスなどがいると、ウケるのですが。
Gabe:
heh
6.
バールについて。あれは単純に目標にダメージを与えているだけなのでしょうか?それともバットのようにスイングされ、当たった角度によって何か違いがでるようになっているとか?
Gabe:
物理的にシミュレートされるよ。空を切ってスイングされる棒としてね。
7.
「インバース・キネマティックス」とか、大きな声で口にすると気持ち良いです。と、これは質問でも何でもないですね。
Gabe:
「デフォーメーション・メッシュ」も、声に出すと楽しいぞ。
8.
HL2を、僕に先出ししてもらえませんか?
Gabe:
換わりに何をもらえるかによるな。
thanks!
あなたの熱心なファンより(このような署名を目にされたのは何度目でしょう?)
自分がメールを出してから、約10分ほどでGabeはこの返答をくれました。そこで、さらにもうひとつ質問を出しました:
lol... デフォーメーション・メッシュ...まさかこんなに早く返事をいただけるとは思わなかったです!
もうひとつ質問です。
E3 のデモにおいて、適当なシェーダをかませたりすれば、水から人を形づくることもできるとおっしゃっていました。もしそうやって人間を作ったとしたら、それを銃で撃ったらどのようになるのでしょうか?血を流すのでしょうか?それとも水が飛び散るのでしょうか?溶けたりなんかすると面白いと思うのですが、さすがにそれは無いでしょうね。そんな水飛沫(splashing)のような現象は、簡単にプログラムに組み込めますか?(スプライトと音をうまく使えば...)
Gabe:
そうだね、水を飛び散らせることになると思うよ。マテリアルを揃えさえすれば簡単に再現できるだろう。じっさいには、水飛沫はスプライトによる表現にはならないけど。
"Emails from Valve"のスレッドですが、益体も無い質問にもフランクに答えるGabeの姿に、「あんまりつまんないメール出すなよ。Gabeたん、あきれちゃうよ」みたいな意見が出てきてて、おかしいです。
それにしても、やっぱり向こうでもGabeはSaint(聖人)扱いですね。
Info from Valve ONLY -McFace?さんのメールのやり取り
halflife2.nethttp://www.halflife2.net/ )のフォーラムから"Emails from Valve"のスレッドに引用されたメール内容を紹介してきましたが、Planet HLにも載っていたように新たに"Info from Valve ONLY (no discussion)":
http://www.halflife2.net/forums/showthread.php?s=&threadid=1298というさらに情報密度の濃いスレッドができました。
そこから、McFace?さんのメールのやり取りをご紹介:
McFace?:
Half -Life2は、CPUのハイパー・スレッディング機能をサポートしますか?理論的にいえば、システム負荷が大幅に軽減するのでは?たとえば、1つ目のプロセッサが物理計算を一手に引き受け、2つ目がAIなどの違うタスクを行い、3つ目はサウンドといったかんじで。どうでしょうか?
Gabe:
CPU のハイパー・スレッディング機能を使うと、スレッド単位でのパラレル処理による最適化が試みられる。伝統的なパイプライン構造のCPUでは命令単位でのパラレル処理に留まるのとは対照的だ。パフォーマンス的な観点からみると、ハイパー・スレッディングは予測不能な結果を生む可能性があり、場合によっては通常より遅くなるケースも考えられる。
Sourceエンジンを根本的なレベルでマルチスレッドに対応させる(すなわちレンダラーのマルチスレッド化を行う)と、実装するのもメンテナンスしていくのも、とても大変になる。こういう改造バージョン(つまり、物理計算用スレッドを作ったり、異なるスレッド間でクライアント/サーバ機能を走らせたりといったこと)を実現できるかどうかは、出荷までにどれだけのマンパワーが取れるかに掛かっている。今のところ、他の最適化に重点を置いているのが実態だ。最適化が必要なポイントが残り少なくなってくれば、事態が変わることもありうるけど。
対照的に64bit対応については、一度の改造の手間で、ストレートに効果が出る。特にツール類に関しては、ひとつの命令あたりの処理量が増えるだけでなく、現在の(アドレッシングの?)メモリ制限を越えることができるのが大きなメリット。いま、ツールはこの問題にぶち当たっているんだよ。
分散コンピューティングは、ハイパー・スレッディングより実現が困難だけど、大幅な性能向上のポテンシャルを秘めている:
ハイパースレッディング:30%の性能向上
分散コンピューティング:8倍の性能向上(我々のツールにおいて)
ツールについては、すべて分散コンピューティングの手法を採用していく予定だ。
整理すると、以下のようになる:
アルゴリズムの最適化 (一般的に良い結果をもたらす)
DirectX9向けの最適化 (大幅な性能向上、将来を見すえた方向性)
64bit (それほど困難ではなく、性能向上に加えメモリ問題の解決にもなる)
ハイパースレッディング (最初の実装が困難で、ソースを保守していくコストも高い。限定的で結果予測の難しい性能向上。マルチCPU環境でも効果を発揮)
分散コンピューティング (最も実装が困難。性能向上のポテンシャルも最高。ツールには最適で、サーバにも使えそう。クライアントへの適用法は不明確)
これで意味が通じることを願うよ。Jay、どこか直すところある?
さらに"Info from Valve ONLY (no discussion)"のスレッドから、rootbinさんがChris Evansさんのメールのやり取りを引用した部分:
Chris Evans:
hey, Gabe。HL2 SDKに関して、メールで触れられていた点に関して:「何段階かに分けたリリースになる。もう手にしている人達もいるんだ。(訳に自信なし: it will be staged; some people have it already) 」
Valveでは、SDKを先出しする相手をどのように決定したのでしょうか?個人的な話をさせていただくと、自分はMODチームのプログラマーであり、早くスタートが切りたくて堪らないのです。いまSDKを手に入れるには、どのようにすればよいか教えてください。
Gabe Newell:
"Lord of SDK Distribution"であるChris Bokitchと話してみてくれ。
Chris Bokitch:
Hi Chris。現時点でどのMODチームがSDKを手にしているかは、自分にもはっきりとは分からないが、ごく一部のチームに限られた話だ。Day of Defeatのチームが持っているのは確かだな。現在、一般公開バージョンを「できるだけ早く」リリースできるよう作業中だ。まだSDKに何を含めるかを検討中の段階なんだ。もう少し詳しい情報をすぐにも公開する。情報公開の際には、メジャーなゲーム/Half-Lifeのニュースサイトには送るし、 Collectivehttp://collective.valve-erc.com/ )には、真っ先に掲載するよ。
Info from Valve ONLY -Aposさんのメールのやり取り
halflife2.netのフォーラムスレッド:Info from Valve ONLY (no discussion)より、Aposさんのメールのやり取りをご紹介:
posted: 2003/07/01 PM 06:38
Apos:
デモにおいて、特に風に対する動きが素晴らしかったケーブル/ワイヤーについて質問です。この効果を出すには、マップ作成やモデルデザインにおいて何を考慮しなければいけませんか?
(エイリアン・ガンシップのような)モデルは、あたり一帯に風を巻き起こすというような特別なフラグを与えられているのでしょうか?あるいは、この効果を出すにはC++言語での固有なスクリプティングが必要でしょうか?また、ケーブル/ワイヤー以外のオブジェクトについても「風」に反応するように設定することはできますか?それとも、オブジェクトの重量に応じてオートマティックに反応が得られる?
Gabe Newell:
mike?
Mike Dussault:
現時点では、ガンシップの周りで揺れるロープなどについては、効果を要求するエンティティに特有のコードを必要とするんだ。ロープ状ではないオブジェクトにグローバルに影響を及ぼす風力を生み出すエンティティもあるよ。そのエンティティは風速、風向き、音といったパラメータを持っている。
Apos:
Wow, thanks。これまでに先出しされた映像の中でも、ロープはさまざまなシーンに特別な華を添える存在だったと思います。マップにさらなるリアリズムを与え、表現される世界に臨場感をもたらしていました。もしあの効果が無ければ、ドックのシーンと市街戦のシーンはこれほど印象的にはならなかったでしょう。ロープ状のオブジェクトが、単にに柔らかくたわむだけでなく、跳ね回ってねじれる様子(bounce and twist)は、ほんとうに驚異的です。あのオブジェクトを作るのは、どれほどの手間が掛かりますか?両端を定義して、長さとたるみを設定するだけ?
そうだね。じっさいにロープはそのように定義されるんだ。以前記した、じゃっかん詳細に触れた文を紹介しよう:
ロープは、両端の間にわたされた一群の(普通は5~10個の)スプリングの集合としてシミュレートされる。つまり内部的には以下のように表現される:
*-----*-----*-----*-----*
"*"はエンジンで制御されるノードを現していている。エンジンがノードの動きをシミュレートし、それからノードの間のカーブが描かれてロープが表現されるんだ。
ノードは重力と風に反応して動く。エンティティはロープを揺らすよう力(force)を及ぼせるようになっている。ガンシップは常にこの力を発揮しているし、ストライダーはステップを踏み出す際に出力するというわけ。
MODを作る際、(グラップリング・フックのように)モノの間にロープを張るのは簡単だ。関数を呼び出して、以下を指定する:・両端にどんなエンティティを結びつけるか・ロープの長さ・ロープの材質マップデザイナーは、両端にエンティティを置けるようになっているよ。
Info from Valve Only-EVILさんの投稿内容
halflife2.netのInfo from Valve ONLY (no discussion)より、EVILさんの投稿内容をご紹介:
posted: 2003/07/02 PM 04:41
EVIL:
Half -Life2がDoom3のようにダイナミック・シャドウをサポートしているかどうか、というちょっとした論争に巻き込まれています。自分はサポートしていると思っています。というのも、オランダのゲーム雑誌にそう書いてあったし、デモ映像の中でコードにぶら下がった電球を押して揺らすと、動きに応じて部屋の中のオブジェクトにダイナミック・シャドウを投影していたシーンがあったからなんですが。
Gabe:
そうだね。ダイナミック・シャドウをサポートしているよ。Doom3とは違ったアプローチを取っているけど。
SidewinderXさんの投稿内容をまとめて3つご紹介:
Subject: HL2 Physics and Multiplayer
posted: 2003/07/01 PM 08:47
SidewinderX:
ひとつ質問です。E3ビデオでのHL2の物理演算は驚異的でした。マルチプレイヤー環境において、物理演算がどのように働くか教えてください。物理演算はクライアント側で行われて、結果を目にするのはそのプレイヤーだけ、ということなのでしょうか?あるいはサーバ側で行われて、たとえば机を押して動かしてドアをブロックした場合、他のプレイヤー達も同じ環境になるということでしょうか?もしサーバ側で処理されるとしたら、マップ中のインタラクティブなオブジェクトの数が多いと、ラグを生みませんか?オブジェクトに関する情報をサーバに送るとすると、かなりラグが発生するように思います。それとも、そんな心配は不要なくらい優れたネットコードになっているのでしょうか?
Gabe:
ネットコードについては、YahnとMikeがかなり手を入れたよ。MODでの拡張がとてもやりやすいものになったし、パフォーマンスも向上したよ。
ゲームのコーディングにおいて、それぞれの物理演算をクライアント、サーバのどちらで行うかを選択するようになっている。たとえば破片の飛び散り演算に関しては、ほぼ間違いなくクライアント側で行っても問題無い。すべてのプレイヤーが破片が飛ぶのを目にするが、同じ飛び散り方ではない、というだけのことだからだ。しかし机を動かす件に関しては、机の正確な位置がすべてのプレイヤーに対して意味を持つため、サーバ側で処理せざるをえないだろう。
Subject: Physics and the HL2 Netcode
posted: 2003/07/01 PM 09:08
SidewinderX:
Hi! Half-Life2のネットコードが改善されているのは分かりました。そこで、また質問があります。ネットコードは、マップの内容に影響を与える可能性のあるオブジェクト(ドアをふさぐことができる机、重ねて階段替りに使える箱、破壊可能な木で作られたモノなど)を大量に含めても大丈夫なようになってますか?それとも、ひどいラグが発生してしまうのでしょうか?
Yahn Bernier:
ラグの要因となるパケットサイズは、メッセージ毎にいくつのオブジェクトの変更ステータスを送るかに影響される。また物理システムは、シミュレートしている(動いている)オブジェクトの数に応じてパフォーマンスを調整する機能を持っている。挙げられた机、箱などの例では、まったく問題とはならないと思う。一度に100個のオブジェクトを動かすということであれば、話が違うかもしれないが。それは試してみないと分からないな。
Subject: Physics and the HL2 Netcode: Part II
posted: 2003/07/02 PM 04:37
SidewinderX:
わずらわせてすみません。ネットコードに関して質問があります。マルチプレイヤーにおいては、(銃火などの?)光はダイナミック・シャドウなどの処理を要求するので、ひどいラグの原因になると思うのですが?
Yahn Bernier:
光の処理については、完全にクライアント側のパフォーマンスの問題だから、ラグにはつながらないよ。
SidewinderX:
ネットコードは、同時に32人を越すプレイヤー(64人までを希望)がいても問題が出ないくらい改善されているのでしょうか?サーバ性能に大きく依存する問題だということは分かっています。では、もし「完璧な」サーバを使ったと仮定した場合、先ほど挙げたような大人数の同時プレイでは、ネットコードによる問題は出るでしょうか?Yahn Bernier:エンジンに、32人を超すマルチプレイをサポートさせるかどうかは、まだ最終決定されていないんだ。
SidewinderX:
では、最後の質問です。答えていただけるかどうかは分かりませんが。ネットコードの力によって、HL2でのマップチェンジはHL1や他のゲームに比べてスムースで早くなっていると考えてよいですか?
Yahn Bernier:
マップチェンジの性能について、HL1と比較して分析したことは無いから、正確な差は分からない。匹敵する早さにはなっていると思うよ。ただ、今回は扱うデータ量も増えているからね。
Info from Valve ONLY (no discussion)より、短いのを2つ。
posted: 2003/07/03 PM 07:13
BaNDiT:
Hey Gabe,
木の板が水の上に浮かんでいるとします。その上にプレイヤーが跳び乗ると、ゆっくりと沈んでいくのでしょうか?
Gabe:
yes
posted: 2003/07/04 AM 03:16
PoopStewart?:
Amazon.comでは、HL2は「2003/12/15 発売」とリストされています。Gabeと連絡を取って、真偽を確認してみました。これが彼の返答:
Gabe:
その発売日じたい、どこを出所としたものか分からないな。何も変更はないよ。
今のところ2003/09/30発売予定は変わらない、と考えてよさそう。
Info from Vlave Only - Foggyさんのメールをご紹介
Info from Valve ONLY (no discussion)より、Foggyさんのメールをご紹介(長文):
posted: 2003/07/03 PM 01:46
Foggy:
私たちのチームは、スパイダーマンのコンセプトを元に作業を進めています。とうぜん、ウェブ(蜘蛛の糸、網)の能力を実現させたいと考えています。
・ウェブを壁に発射して、それを使ってビルの間を移動。
・オブジェクトに向かってウェブを発射し、カタパルトのように飛ばして敵にぶつける
・通路に大きなウェブを張って敵の進路を妨害
ソースエンジンを使って、このようなシーンを再現できるでしょうか?
Brian:
うん。ソースエンジンで実現可能だね。挙げられた例の表現方法の案を示すよ。
・ウェブを壁に発射して、それを使ってビルの間を移動。
ウェブの発射は、プレイヤーからマップに対しての単純なトレースラインで表現できる。命中した部分には、ウェブのデカールを貼る。接触点を示すためにね。そしてmeshbuilderというツールを使って、プレイヤーと接触点の間にウェブを描画するんだ。もっとカッコよくしたければ、エンジンの持つケーブルシミュレータの機能を使うといい。ウェブを物理シミュレートして、ロープのような動きをさせるんだ。そうすれば、新しいウェブを発射した後、捨てられた前のウェブが壁や地面にバウンドする様子もシミュレートできる。HL2では、プレイヤーの動きに手を加えるのは(HL1に比べてすっと)簡単になっているんだ。それによって、ウェブに引っ張られる動きをシミュレートできるだろう。
・オブジェクトに向かってウェブを発射し、 カタパルトのように飛ばして敵にぶつける
これを再現するためには、物理オブジェクトを使うことになるだろう。ウェブのレイキャストが物理オブジェクトに命中した際に、vphysicsに力を適用してそれがマップの中を飛んでいくようにするんだ。エンティティが高速に移動する物理オブジェクトと衝突した際には、自動的にダメージが適用されるシステムを持っているんだ。(オブジェクトが何で出来ているか(material)も考慮に入れた上で、ダメージが計算されるようになっている。たとえば木より鉄でできた物にぶつかった時の方が大きなダメージを受けるということ)
・通路に大きなウェブを張って敵の進路を妨害
これを実現するためには、ウェブをマップに固定するポイントとして、複数のレイキャストを使う必要がある。ウェブの描画自体には、meshbuilderを適用するだけでいい。ウェブを障害物としてふるまわせるには、他のエンティティが接触した際に、トリガーが引かれるように設定する。トリガーが引かれると、接触したエンティティの動きを遅くしたり、あるいは完全に止めるようにするんだ。
あと、ウェブのエンティティには衝突モデルを設定する必要がある。いちばんシンプルなのは、ウェブを取り囲むように境界線を配置することだろう。ちょっと正確性には欠けるが、とてもコーディングは簡単だ。もっと正確な衝突モデルを採用することもできるけど、その場合は特別な衝突関数を実装する必要がある。ゲームの中にも、そういう特別な衝突関数を持つエンティティの例は出てくるよ。
Foggyさんのメールの続き:
Foggy:
一般的な「武器」は使わず、ウェブ能力とまわりの環境を利用して進んでいく、というのがゲームの核となるアイデアなんです。プレイヤーが、2、3人の敵に追われながら通路を逃げているシーンを思い浮かべてください。通路にある箱を、ウェブでひっぱって敵に向かって飛ばす。それから、通路にウェブを張って敵を足止めし(ウェブの材料が残りわずか)、壁に発射して上に登ってから、敵の背後に着地。そして敵をウェブでくるんで一網打尽。スパイダーの勝利。面白そうだと思いませんか?
ウェブの粘り気を再現することはできるでしょうか?
貴重な時間を割いてくれてありがとう。HL2の完成に向けてがんばってください。これから何年かのスパンで見ても、最高のヒット作になることを確信しています。当然でしょ? それに値するものを作っているんですから。
Brian:
面白そうなアイデアだね。実現がとても楽しみだよ!
うん、ウェブの粘り気も再現可能だよ。プレイヤーの動きを制御する部分のコーディングは、ほんとうに変更が容易なんだ。プレイヤーの動作を鈍くして、ウェブの粘着性をシミュレートさせる。ウェブに接触したプレイヤーにフラグを立ててね(これはwebエンティティのTouchメソッドで行うことになるかな)。
Foggy:
ソースエンジンでは、いろいろなことが出来るのですね。
もちろん「スパイダー」に対する敵役も用意します。「キャッチャー」です。以下に書くことは可能でしょうか? 無理ではないかと思うのですが..
キャッチャーのもっとも大きな特徴は、「背後から」でないとスパイダーを捕獲できないということ。これはとても困難なアクションなので、キャッチャーには背後の風景に溶け込む能力を持たせたいと思っているのです。たとえば、背中を壁に押し当てていると壁のテクスチャが写るとか、鉄壁に向かって立っていると、鉄のテクスチャに変わるとかね。この要素で、ゲームはとてもエキサイティングになるよ。スパイダーたちは、密集して周りの壁をスキャンしながら進むしかなくなるからね。
実現可能でしょうか?
Brian:
背景への溶け込み。これは、どのレベルのグラフィックハードをサポートするつもりかで、実装方法が変わってくるな。E3のデモにも出てきたrefractive(屈折)シェーダを使うという方法がある。ただ、これは DirectX8以上のハードウェア(たとえばGeForce3以上、Radeonなど)でなければ動作しない。もっと低レベルのハードウェア (DirectX6、7)でも走らせたいということであれば、単純な透過処理を採用せざるおえないだろう。
Foggy:
では、テクスチャの変化を「lean(寄りかかり)」のアクションにバインドする、といったことは可能ですか?
Brian:
ああ。スキン切り替えの機能(skinning feature)があるからね。寄りかかりの状態に応じてスキンを替えればいい。それにゲームのステータスをシェーダにプラグする機能もあるんだ。これを使えば、寄りかかっている時間に応じて、プレイヤーの透明度を変更したりといったことも可能だよ。
Info From Valve Only から 3つご紹介
halflife2.nethttp://www.halflife2.net/ )のGeneral DiscussionフォーラムのInfo from Valve ONLY (no discussion)より、3つをご紹介。まずはSidewinderXさんが、Piantaさんのメールを投稿したもの。
Subject: International Version
posted 2003/07/07 PM 08:12
Maurizio Pianta:
Hi Gabeわたしはイタリア人です。HL2のイタリア語音声入りのローカライズ版について質問させてください。こういったバージョンは発売されますか?もし出るなら、それはUSA版と同じ時期(on the same time frame)に出るのでしょうか?
Gabe:
Yes, and yes.
djroboさんのメール:
Subject: Obligatory HL2 question #958334
posted: 2003/07/08 AM 02:52
djrobo:
手榴弾で箱を吹き飛ばしたとすると、とうぜん小さな破片となって飛び散ります。その破片は、他のオブジェクトとインタラクティブな存在としてマップに残るのでしょうか?それとも蒸発するように消えてしまう?
Gabe:
レベルデザイナーが、どう設定するかによるな(振る舞い方を選択可能ということ)。
djrobo:
シーソーのような装置を作ることは可能でしょうか?プレイヤーが板の片方でジャンプすると、もう片方が上に持ち上がるような?
Gabe:
できるね。プレイヤーも物理シミュレートされているから。
djrobo:
これは質問というより提案です。プレイヤーのインベントリーに制限を設けないでください。全部の銃やスイッチを、好きなように持ち運びたいのです。
Gabe:
自分もそういう方が好みだ。
Pimp Midgeさんのメール:
2003/07/01 PM 09:01
PimpMidget?:
Hey gabe. I can't wait.Alright. Here we go.セクシャルなご褒美のかわりに、ゲームを先出ししてもらうことはできませんか?
Gabe:
誰からのご褒美かによるな。キャメロン・ディアスで、許してくれるようワイフを説得できるなら、先出しに応じよう。
PimpMidget?:
了解。ここからがホントの質問です。デモの記録などは、HL1より簡単になりますか?
Gabe:
簡単になるよ。Yahnが色々とかんばったんだ。ゲーム内にデモ・エディターも付けた。カメラのトラック、被写体のトラックの設定や、パスの補間などなど。マシニマを念頭に置いた機能なんだ。
PimpMidget?:
デモの内容を画像にコンバートする機能も含まれるのですか?(Geek Playのように)
Gabe:
その機能もある。E3デモのビデオもそれを使って作成中だよ。Garyは、エンジンから映像を自動的にBinkファイルに出力する機能について作業中だ。
Pimp Midgeさんのメールの続き:
PimpMidget?:
ゲームが保存する画像ファイル形式は、相変わらずbmpですか?jpeg形式はサポートされるのでしょうか?
Gabe:
bmpだね。画像ファイルの管理やフォーマット変換は、ユーザが各々のツールでやればいい、という考えだ。
PimpMidget?:
分かりました。では、最後にひとつ。あなたはHL2のプロモーション担当者ですか?何がいいたいのかというと、カスのようなメールが山ほど届くはずですが、どうやって全てに対応しているのでしょう?
Gabe:
不眠と超速のタイピングによってね。
ここで出てくる「マシニマ」について。「ゲーム用エンジンで低予算のアニメ映画製作が可能に」:
http://www.hotwired.co.jp/news/news/Culture/story/3869.html「マシニマ」の本家サイトhttp://www.machinima.com/ )でも、このメール内容が紹介されてました。 Info from Valve ONLY marksmanHL2 さんのメール意訳
halflife2.nethttp://www.halflife2.net/ )のGeneral DiscussionフォーラムのInfo from Valve ONLY (no discussion)より、marksmanHL2 さんのメールをご紹介します。
回答しているのは、CollectiveのChris Bokitchさんだと思われます。
posted: 2003/07/11 AM 08:38
Mark:
プレイヤーとモデルを縮小したサイズで作ることによって、結果的に「広い」マップを持つMODを作ることはできるでしょうか?それとも物理演算に影響が出てしまうでしょうか?これは、コミュニティで出された疑問についてクリアにしたくて、尋ねさせてもらいました。個人的には無理ではないかと思っています。たとえそうでも、現状でも十分に広いので問題は無いと感じますが。
Chris:
挙げられた手法を取ることは可能だろう。だけどその場合、全ての物理演算をサイズに応じて調整する必要が出てくる。こういった手法はHalf-Life RallyのようなMODには有効だろう(じっさいHL Rallyは、HL1エンジンでこの縮小手法を採用して作られている)。
Mark:
プレイヤーが視線を下に向けると、自分の足や脚が見えますか?それとも何も見えないのでしょうか?
Chris:
何も見えないね。だけどこれも、デザイン的にそうしているということであって、技術的な制限ではないんだよ。
Mark:
E3デモに出てきた建物は、全てプレイヤーが中に入れますか? それとも一部だけ?
Chris:
一部だけ入場可能だ。デモの流れでそうする必要があったものだけね。
Mark:
準備が整いしだい、E3のビデオがリリースされるという状況であることを、誰か公式な立場の方に確認していただくことはできませんか?
Chris:
うん。準備ができしだい、Steamでムービーをリリースするよ。
Mark:
パーティクル効果のツール、バンプマッピング、スペキュラーマッピングなどを適用するツールは、SDKに含まれますか?
Chris:
SDKの構成については、まだ完全には決まっていないんだ。だけどMOD作成のために必要なツールやリソースは、すべての領域にわたってリリースする予定だ。
Mark:
ソースエンジンで、カメレオンのような効果を出すことはできますか?新しいテクスチャマッピングやその他の技術を使って?これは、面白くなりそうなMODを作ろうとしている友達からの質問です。
Chris:
キャラクターをガラスのような素材で作ることが可能だ。あるいは他の効果を使って、背後が透けて見えるようにすることもできる。動的にキャラクターに周囲のテクスチャを被せられるかどうかは、はっきりとは分からない。
(cc:に入っている)Jay Stelly なら、もう少し情報を出せるかもしれないな。
For more information on Half-Life 2 modding,check out the Half-Life 2 / Source Mod FAQhttp://collective.valve-erc.com/index.php?go=source_mod_faq
Comments
Add Comments
TrackBack
Trackback URL :


