コトバノウタカタ

よしなしごとをつらつらとつづるばしょ。

ハーフライフ2 - マップを作る日々

年末になって日記の更新が滞っている。忙しいというわけではないし、書くことがないわけではないが、なんとなく書く意気が出ない。面倒くさいとかそういうのとはまた微妙に違う。

では何をやっているのかというと、どうでも良いことをやっている。「ハーフライフ2」に「HAMMER」というSDK*1がリリースされていて、それを使ってカスタムマップを作っている。以前にも書いたが、ハーフライフ2はユーザが自由にマップを作ったりゲームをカスタマイズできたりするのだが、このSDKはそのカスタムマップを簡単に作成できてしまう便利なアプリケーションなのだ。しかもハーフライフ2を購入していれば無料で使うことができる。なんとも太っ腹なことだ。

SDKを無料で配布するのには、ハーフライフ2を作ったVALVEなりの策がある。前作もそうだったが、ハーフライフというのはカスタムマップやMODが使える、作れるということで商品価値を高めている。ゲームがカスタマイズできるということがひとつの価値であり、またそうやってユーザが作ったマップやMODの出来がよければハーフライフ2本体の価値もまた上がる。前作が世界的に売れまくったのも、このカスタマイズの効果があってのことだということは疑う余地はない。それゆえ、無料でもSDKを配布し、より多くのカスタムマップやMODの獲得を期待しているのだろう。

しかしこのSDK、なかなか良くできている。3Dの基本的な知識などは必要だし、開発環境なのでとっつきにくいものではあるが、少しわかってくればそれほど複雑ではない操作でマップを作ることができる。CADっぽい操作で壁や床などを作っていき、キャラクタや光源、物体などを配置してしまえば、それだけでもうゲームのマップができてしまうのだ。加えて、今作から導入された物理エンジンを使ったエフェクトも利用できる。物体はそれぞれ密度や重さ、壊れやすさの属性を持っており、それに対して物理的な力や振る舞いを定義してやれば、勝手に動いてくれるのだ。ロープで吊るした物や、加速度をつけて回転していく物体などがちょっとした操作で作れてしまうし、物体間の関係や影響も自動的に処理してくれる。

例えば、木の床の上に沢山の物理的な物体を乗せておく。その木の床をタイマーによって破壊し、上に乗っている物を下に落として通路を塞ぎたい、などの場合、以前であれば上に乗っている物体はただ垂直に落下するか、あるいは落下した後にどう動くかをスクリプトで記述してやらねばならなかった。しかし物理エンジンがあれば、上に乗っている物体が落下したときに互いに干渉し、勝手にぶつかりあって散らばる。別の例をあげれば、ドミノ倒しが、「板を並べて立てる」だけで実現できるのだ。ちょっとマップを触ってみて、物理エンジンの導入はユーザだけでなく、むしろ開発者にとって画期的な革命を起こしているのだと実感した。

このように、現在提供されている基本的なマップ作成SDKは、1から作るのではなく、どちらかというと箱庭造りのように、準備されたオブジェクトを配置していくという感じだ。ゆえに複雑なモデリングも、物理的な属性を考慮して割り振る必要もほとんどない。それらはあらかじめ準備されているのだ。もちろん、自分でもキャラクタや物体を作ることはできるが、それにはさらに上のスキルが必要となる。私にはまだそこまでの知識や能力はないので、ともかく箱庭を楽しんでいるということろだ。

けっきょくのところゲーム本編よりもマップ作りの方に熱中してしまっている自分がいる。とはいえまだまだまともなものは作れないので、ただいま鋭意勉強中というところなのだが。この熱中感は、一時期ブログを書きまくっていたのに近い。こういうところに努力を惜しまない姿勢が仕事にも現れればきっといい仕事ができるようになると思うのだが・・・。というのは考えるだけ無駄か。

*1:Software Development Kitの略。開発環境のこと。