「はじめてのマップ作成」の編集履歴(バックアップ)一覧はこちら
「はじめてのマップ作成」(2010/07/25 (日) 19:22:45) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
The Valve Developer CommunityのAlienSwarmマップ作成基礎(英語)
http://developer.valvesoftware.com/wiki/Swarm_Mapping_basics
Alien Swarm SDK -SIMPLE MAP - tutorial part 1(英語)
※微妙に古い動画なため、外側の箱にstructure_sealとNameを設定せずに進めているので注意。
http://www.youtube.com/watch?v=iYycbPWa9do
Hammerのインストールが済んでいるとして話を進めます。
AlienSwarm -SDKを起動し、Hammer World Editorを立ち上げてください。
メニューバーのFile→Newを選択して空のマップを作成し、下のような画面になったことを確認してください。
#ref(tutorial.jpg)
中央の4つの画面のうち、グリッドで区切られているものが三次元空間を各方向から見た設計図、区切られていないものはカメラを通して見た映像です。
#ref(tutorial1-1.jpg)
各画面の左上にマウスカーソルを合わせると、top(x-y) side (x-z) front(y-z) cameraと表示されます。
これが、その画面が3次元空間をどの方向から見ているかを表しています。
top,side,front画面を選択中に、スペースバーを押しながら画面をドラッグすると水平移動、マウスホイールで拡大縮小ができます。
cameraはその名の通りカメラです。FPS画面でマップ内を見回ることができます。
カメラ画面を選択した状態で、WASDキーを押すとFPSでありがちな水平移動、
スペースバーを押しつつドラッグをするとマウスルックで辺りを見渡すことが可能です。
ここから先は文字では分かりにくいと思いますので、このページの最初で挙げた動画も併せてご覧ください。
手始めに、マップ内に直方体を作ります。左のBlock tool(白い箱の画像)をクリックしてください。
#ref(tutorial2.jpg)
top画面の適当な場所をクリックし、適当な場所にドラッグします。
すると白い破線が現れます。この破線が、作ろうとしている直方体の場所を指定しています。
#ref(tutorial3.jpg)
topから四角形の形を指定しただけでは直方体にはならないので、sideかfrontの画面から高さを指定する必要があります。
sideかfrontの画面から破線の長方形を探してください。
そして、四角形の底辺中央の下にある白い四角をドラッグし、下方向へ伸ばし好きな形にしてください。
#ref(tutorial4-1.jpg)
;
#ref(tutorial4-2.jpg)
これで直方体の形を指定することができましたが、生成する前に直方体に貼り付ける画像(テクスチャー)を指定します。
右のメニューに正方形の画像が表示されていると思います。
#ref(tutorial5.jpg)
画像の隣にあるBrowse...と書かれているボタンをクリックします。
するとテクスチャー一覧が表示されるので、適当な画像をクリックします。
ただし、物体ではない特殊なテクスチャーを選ぶと正しく動作しないことがあるので注意してください。
#ref(tutorial6.jpg)
テクスチャーを選択したら、Enterキーを押すか破線の四角形の上で右クリックしてメニューからCreate Objectで直方体を生成します。
この時、カメラ画面に下図のようなワイヤーフレームが表示される場合があります。
#ref(tutorial6-1-1.jpg)
カメラ画面左上のcameraをクリックしてメニューを開き、3D Texturedを選択するとテクスチャ付きの3D画面を見ることができます。
#ref(tutorial6-1-2.jpg)
間違ったテクスチャーを張ってしまった場合、左メニューのApply current texture(茶色の箱の画像)をクリックすれば、
選択した直方体に右メニューのテクスチャーを張ることが出来ます。
次に、エンティティ(実体)を設置します。マップ作成に馴れて居ない人はエンティティと言われてもイメージがつかみにくいと思うので、大雑把に説明すると
マップの形を構成する地面や壊れない建物(ワールド)以外で、マップ内に存在するものは全てエンティティです。
エンティティを生成するには、左のメニューの中でEntity tool(チェスのポーンのような画像)をクリックします。
#ref(tutorial7.jpg)
右のメニューのCategoriesとラベルの貼られたドロップダウンメニューの中がEntitiesになっていることを確認して、
Objectsの中がinfo_player_startになっていることを確認します。
info_player_startになっていなければ、ドロップダウンメニューの中から探してください。
#ref(tutorial8.jpg)
info_player_startとは、これから生成するエンティティ名で、マップ開始時にプレイヤーが出現する場所を指定するものです。
先ほど作成した直方体の上に生成することで、ゲーム開始時に直方体の上にプレイヤーが現れるように設定します。
top,front,side画面のいずれかをクリックすると座標を指定する緑色の十字が現れるので、先ほどと同じ要領で座標を指定して生成してもいいのですが、
カメラ画面を使うともっと楽にエンティティを生成することができます。
#ref(tutorial9.jpg)
26行目で説明したカメラ画面の操作で、作成した直方体を上から見下ろしてください。
そして、適当なポイントをクリックして人型の物体(遠目からだと直方体)が生成されれば成功です。
#ref(tutorial10.jpg)
さて、マップ完成のようの思えますが、これでは動作しません。
このままではプレイヤーが直方体から落ちると永遠に落下し続けることになります。
また、空に向けて銃を撃ったとして着弾する場所がありません。
ソースエンジンでは、このようにマップ内が閉じた空間でないものを、コンパイルしようとするとMap Leakエラーが出てコンパイルできません。
それは、天井を作らない見下ろし視点のAlienSwarmでも同じです。
この問題を解決するために、AlienSwarmのマップを作る時は、マップ全体をstructure_sealと名付けられたfunc_brushエンティティで囲うようにと決められています。
エンティティには、それ自体が位置情報を持つエンティティと、直方体(ブラシ)をエンティティにするものがあります。
info_player_startが前者で、このfunc_bruthが後者です。
作業を行うために、まず先ほど作成した直方体とinfo_player_startを囲う大きな直方体を作成します。
#ref(tutorial10-2.jpg)
テクスチャーはtoolsnolightというものを使います。
Browse...をクリックしテクスチャを選択するウィンドウが表示されたら、ウィンドウ下部にあるFilter:と書かれたドロップダウンメニューに
tools/toolsnolightと入力すると探しやすいです。
#ref(tutorial11.jpg)
大きな直方体を生成すると小さな直方体とinfo_player_startが直方体の中にめり込んだ形になっています。
これでは正常に動作しないので、Selection toolで大きな直方体を選択し、右クリックメニューから「Make Hollow」を選択し、OKボタンを押します。
Make Hollowとは、選択した直方体の中身をくりぬくツールです。
#ref(tutorial12.jpg)
これで、Map Leakエラーが起こる心配は無くなりました。ここから先はAlienSwarm特有のおまじないです。
作成した外枠(中身がくり抜かれた直方体)をSelection Toolで選択してから、右クリックメニューからTie to Entityを実行します。
すると、プロパティウィンドウ(エンティティの情報を設定するウィンドウ)が表示されます。
#ref(tutorial13.jpg)
classと書かれているドロップダウンメニューの中からfunc_brushを選択し、右下の適用ボタンをクリックします。
これで、外枠はfunc_brushというエンティティになりました。
次にstructure_sealという名前をつけてやります。
プロパティの一覧の中に「Name」というものがあるはずです。それをクリックし、右のドロップダウンメニューにstructure_sealと入力すれば完了です。
#ref(tutorial14.jpg)
最後にマップのソースファイルをコンパイルしてテストプレイします。
メニューのFileからRun Mapを選びます。特に項目は変更せずにOKを押せば自動的にコンパイル、AlienSwarmの起動まで処理をしてくれます。
#ref(tutorial15.jpg)
これで完成です。お疲れ様でした。
#ref(tutorial16.jpg)
後は色々なHammerの機能を使ってみたり、Entityを設置してプロパティを設定して遊んでみてください。
The Valve Developer CommunityのAlienSwarmマップ作成基礎(英語)
http://developer.valvesoftware.com/wiki/Swarm_Mapping_basics
Alien Swarm SDK -SIMPLE MAP - tutorial part 1(英語)
※微妙に古い動画なため、外側の箱にstructure_sealとNameを設定せずに進めているので注意。
http://www.youtube.com/watch?v=iYycbPWa9do
Hammerのインストールが済んでいるとして話を進めます。
AlienSwarm -SDKを起動し、Hammer World Editorを立ち上げてください。
メニューバーのFile→Newを選択して空のマップを作成し、下のような画面になったことを確認してください。
#ref(tutorial.jpg)
中央の4つの画面のうち、グリッドで区切られているものが三次元空間を各方向から見た設計図、区切られていないものはカメラを通して見た映像です。
#ref(tutorial1-1.jpg)
各画面の左上にマウスカーソルを合わせると、top(x-y) side (x-z) front(y-z) cameraと表示されます。
これが、その画面が3次元空間をどの方向から見ているかを表しています。
top,side,front画面を選択中に、スペースバーを押しながら画面をドラッグすると水平移動、マウスホイールで拡大縮小ができます。
cameraはその名の通りカメラです。FPS画面でマップ内を見回ることができます。
カメラ画面を選択した状態で、WASDキーを押すとFPSでありがちな水平移動、
スペースバーを押しつつドラッグをするとマウスルックで辺りを見渡すことが可能です。
ここから先は文字では分かりにくいと思いますので、このページの最初で挙げた動画も併せてご覧ください。
手始めに、マップ内に直方体を作ります。左のBlock tool(白い箱の画像)をクリックしてください。
#ref(tutorial2.jpg)
top画面の適当な場所をクリックし、適当な場所にドラッグします。
すると白い破線が現れます。この破線が、作ろうとしている直方体の場所を指定しています。
#ref(tutorial3.jpg)
topから四角形の形を指定しただけでは直方体にはならないので、sideかfrontの画面から高さを指定する必要があります。
sideかfrontの画面から破線の長方形を探してください。
そして、四角形の底辺中央の下にある白い四角をドラッグし、下方向へ伸ばし好きな形にしてください。
#ref(tutorial4-1.jpg)
;
#ref(tutorial4-2.jpg)
これで直方体の形を指定することができましたが、生成する前に直方体に貼り付ける画像(テクスチャー)を指定します。
右のメニューに正方形の画像が表示されていると思います。
#ref(tutorial5.jpg)
画像の隣にあるBrowse...と書かれているボタンをクリックします。
するとテクスチャー一覧が表示されるので、適当な画像をクリックします。
ただし、物体ではない特殊なテクスチャーを選ぶと正しく動作しないことがあるので注意してください。
#ref(tutorial6.jpg)
テクスチャーを選択したら、Enterキーを押すか破線の四角形の上で右クリックしてメニューからCreate Objectで直方体を生成します。
この時、カメラ画面に下図のようなワイヤーフレームが表示される場合があります。
#ref(tutorial6-1-1.jpg)
カメラ画面左上のcameraをクリックしてメニューを開き、3D Texturedを選択するとテクスチャ付きの3D画面を見ることができます。
#ref(tutorial6-1-2.jpg)
間違ったテクスチャーを張ってしまった場合、左メニューのApply current texture(茶色の箱の画像)をクリックすれば、
選択した直方体に右メニューのテクスチャーを張ることが出来ます。
次に、エンティティ(実体)を設置します。マップ作成に馴れて居ない人はエンティティと言われてもイメージがつかみにくいと思うので、大雑把に説明すると
マップの形を構成する地面や壊れない建物(ワールド)以外で、マップ内に存在するものは全てエンティティです。
エンティティを生成するには、左のメニューの中でEntity tool(チェスのポーンのような画像)をクリックします。
#ref(tutorial7.jpg)
右のメニューのCategoriesとラベルの貼られたドロップダウンメニューの中がEntitiesになっていることを確認して、
Objectsの中がinfo_player_startになっていることを確認します。
info_player_startになっていなければ、ドロップダウンメニューの中から探してください。
#ref(tutorial8.jpg)
info_player_startとは、これから生成するエンティティ名で、マップ開始時にプレイヤーが出現する場所を指定するものです。
先ほど作成した直方体の上に生成することで、ゲーム開始時に直方体の上にプレイヤーが現れるように設定します。
top,front,side画面のいずれかをクリックすると座標を指定する緑色の十字が現れるので、先ほどと同じ要領で座標を指定して生成してもいいのですが、
カメラ画面を使うともっと楽にエンティティを生成することができます。
#ref(tutorial9.jpg)
26行目で説明したカメラ画面の操作で、作成した直方体を上から見下ろしてください。
そして、適当なポイントをクリックして人型の物体(遠目からだと直方体)が生成されれば成功です。
#ref(tutorial10.jpg)
さて、マップ完成のようの思えますが、これでは動作しません。
このままではプレイヤーが直方体から落ちると永遠に落下し続けることになります。
また、空に向けて銃を撃ったとして着弾する場所がありません。
ソースエンジンでは、このようにマップ内が閉じた空間でないものを、コンパイルしようとするとMap Leakエラーが出てコンパイルできません。
それは、天井を作らない見下ろし視点のAlienSwarmでも同じです。
この問題を解決するために、AlienSwarmのマップを作る時は、マップ全体をstructure_sealと名付けられたfunc_brushエンティティで囲うようにと決められています。
エンティティには、それ自体が位置情報を持つエンティティと、直方体(ブラシ)をエンティティにするものがあります。
info_player_startが前者で、このfunc_bruthが後者です。
作業を行うために、まず先ほど作成した直方体とinfo_player_startを囲う大きな直方体を作成します。
#ref(tutorial10-2.jpg)
テクスチャーはtoolsnolightというものを使います。
Browse...をクリックしテクスチャを選択するウィンドウが表示されたら、ウィンドウ下部にあるFilter:と書かれたドロップダウンメニューに
tools/toolsnolightと入力すると探しやすいです。
#ref(tutorial11.jpg)
そして生成します。
#ref(tutorial11-2.jpg)
大きな直方体を生成すると小さな直方体とinfo_player_startが直方体の中にめり込んだ形になっています。
これでは正常に動作しないので、Selection toolで大きな直方体を選択し、右クリックメニューから「Make Hollow」を選択し、OKボタンを押します。
Make Hollowとは、選択した直方体の中身をくりぬくツールです。
#ref(tutorial12.jpg)
#ref(tutorial12-1.jpg)
これで、Map Leakエラーが起こる心配は無くなりました。ここから先はAlienSwarm特有のおまじないです。
作成した外枠(中身がくり抜かれた直方体)をSelection Toolで選択してから、右クリックメニューからTie to Entityを実行します。
#ref(tutorial13.jpg)
すると、プロパティウィンドウ(エンティティの情報を設定するウィンドウ)が表示されます。
#ref(tutorial13-1.jpg)
classと書かれているドロップダウンメニューの中からfunc_brushを選択し、右下の適用ボタンをクリックします。
#ref(tutorial13-2.jpg)
これで、外枠はfunc_brushというエンティティになりました。
#ref(tutorial13-3.jpg)
次にstructure_sealという名前をつけてやります。
プロパティの一覧の中に「Name」というものがあるはずです。それをクリックし、右のドロップダウンメニューにstructure_sealと入力すれば完了です。
#ref(tutorial14.jpg)
最後にマップのソースファイルをコンパイルしてテストプレイします。
メニューのFileからRun Mapを選びます。特に項目は変更せずにOKを押せば自動的にコンパイル、AlienSwarmの起動まで処理をしてくれます。
#ref(tutorial15.jpg)
#ref(tutorial16.jpg)
これで完成です。お疲れ様でした。
#ref(tutorial17.jpg)
後は色々なHammerの機能を使ってみたり、Entityを設置してプロパティを設定して遊んでみてください。