チュートリアル / プラグインを作ってみよう!ゲーム開発のためのツール製作講座
第1回:Softimage編 SDK全般の話
- ゲーム
- コラム
- スクリプト・API
- チュートリアル
- 上級者
- 中級者
今月からコラムを担当させていただくことになりました。セガのプログラマで、立福と申します。私のコラムではSoftimageとMayaのSDKに関する話題を扱っていく予定です。私の主な業務がDCCツールから実機までのコンテンツパイプラインの構築なので、DCCツール上で動作するエクスポーター作成の話を中心に、SDKの使い方や、ゲーム業界でありがちな話などを盛り込んでいければと思っています。
最初はSoftimageのSDKの話から始めます。こちらはCEDEC2010での私の発表内容をベースに、補足情報や余談などを加えていくつもりです。
"Autodesk Game Day Vol. 2: Softimage SDK講座 COLLADAエクスポーターを作ってみよう"
http://cedil.cesa.or.jp/session/detail/317
CEDECでの発表のときはSoftimage2010ベースでしたが、こちらのコラムではSoftimage2011ベースで進める予定です。またSoftimageの話が一通り終わったら、MayaのSDKの話題に移ろうと思っています。
Softimageでプラグインを作成する方法
さて、第一回目はSoftimageのSDKについて全般的な話をしてみます。Softimageでプラグインを作成する方法は4つあります。
・スクリプト
・C++
・C#
・オブジェクトモデル
この中で私がよく使うのはスクリプトとC++です。C#も便利そうなのですが、私が使ったことがないのでこちらのコラムでは取り上げません。
こちらの図はSoftimageのSDKの全体構造で、SDKのヘルプに載っている図と同じものです。大まかにこんな感じ、というイメージを持ってもらえれば十分だと思います。
スクリプトではJavaScript, Pythonなどの好きな言語を使うことができます。私はSoftimageとMaya上で動作するプラグインを書くことが多いので、両方で動くPythonを使っています。社内のテクニカルアーティストがPythonを使っているので、困った時に教えてもらえる、という理由も大きいです。どの言語を使うかは自分の好みと、周りの環境などで決めるといいと思います。どのスクリプトを使っても、基本となるのはSoftimageのオブジェクトモデルなので、大きくは違わないはずです。
使用するスクリプト言語はScriptEditorの「ファイル」→「設定」から、「スクリプト言語」の項目で選択できます。
Softimage2010まではPythonを別途インストールする必要がありましたが、Softimage2011以降は標準で使えるようになりました。これは大変便利ですね。おかげでプラグインを配布するアーティストのマシンにPythonを個別にインストールしなくてもよくなりました。
スクリプトは編集が容易な上、大抵の作業を行うことができますが、大量のデータを扱う場合に実行時間が問題になってきます。このような場合はスクリプトではなく、C++を使ってdll形式のプラグインを作成します。ゲーム制作の現場では、アーティストの作業を補助するツールはテクニカルアーティストがスクリプトで作成し、高速に動作させたいエクスポーターなどはプログラマがC++で作成することが多いと思います。
最後のオブジェクトモデルは、要するにCOMのインターフェースになるのですが、こちらは非常に使いにくいのでお薦めしません。昔はCOM経由でないとアクセスできない部分があったのですが、今はC++だけでも全然問題ありません。こちらのコラムではスクリプトとC++の2つのAPIを扱っていきます。
Softimageの疑問点の調べ方
APIの紹介が終わったところで、実際にプラグインを作成する話をしようと思っていたのですが、その前に大変重要な話を思い出しました。SDKを使ってSoftimageのプラグインの開発を進めていくと様々な疑問点が出てきます。さて、どうやって調べればよいでしょうか?
まずはドキュメントから調べるのがセオリーですが、SoftimageはSDKの設計上、ドキュメントからすべての情報を調べるのが難しくなっています。この辺は今後の説明で触れる予定ですが、Softimageのデータ構造やそのパラメータの名前を知らないと、内部構造をたどっていくことが難しいのです。
次にサンプルはどうでしょうか? SoftimageのSDKには各言語を使ったサンプルが用意されていますが、必要な情報がすべて見つけられるわけではありません。サンプルの全体の数はかなり多いのですが、C++,C#,JavaScriptなど、いろいろな言語で書かれているので、必要に応じて他の言語で置き換えて解釈する必要があります。慣れてくれば他の言語で書かれたサンプルも利用できるのですが、最初のうちは難しいと思います。
となるとSDKのパッケージ以外から調べるしかありません。ある程度規模の大きな会社なら、社内の詳しい人に教えてもらうことができますね。実際、私もよく教えてもらっています。しかし、大きなところ以外ではプラグインの担当者が自分一人だけ、ということが普通にあります。SoftimageのSDKというのはやはりニッチな分野なので、常に担当者が少ないのです。
もちろんインターネットで検索することもできますが、Softimageのスクリプトは引っ掛かっても、C++APIの情報はほとんど見つからないと思います。C++APIを触っているユーザーがいても、なかなか外部に情報が出てこないようです。
結局どうするのが一番かと言うと「代理店のテクニカルサポートを受けましょう!」これに尽きます。Softimageを販売している日本の代理店ならば、有償のテクニカルサポートが受けられますので、SDKの質問などはそちらに投げましょう。担当の方に対応してもらえます。
代理店の担当者が答えられない場合は、開発元に問い合わせてもらえるので、ほとんどの疑問は解決するはずです。
大手ゲーム会社では当たり前の話ですが、一人でプラグインの開発をしているとテクニカルサポートの存在に気づかなくて、試行錯誤を延々と繰り返す、ということもあるようです。有料のサービスではありますが、作業が滞るぐらいならサポートを受けたほうが、トータルでお安くなるのではないでしょうか。
今回は最初のプラグイン作成まで進むつもりでしたが、文字数の都合で今回はここまでとさせて頂きます。APIやプログラムの説明となると、この文字数ではきつそうですね。一応、オーバーする分には大丈夫らしいのですが……
次回は開発環境のセットアップとデバッグ方法、Hello Worldプラグインの話の予定です。