2006年1月9日月曜日

python !?

とある人気ポッドキャストで、python の話を聞いて、そんなに良いのかなと思ったので、実際に調べてみたら確かに良さそう!



実際には全然知らなかったわけではなくて、最低限(特徴や言語仕様など)の知識はあったんだけれど、使ったことはなかったし、キチンと調べた事があったわけでもなかったんです。個人的には、いわゆるスクリプト言語として、Ruby をよく使っていて、重宝もしていたから、スクリプト言語の有効さに関しては知っているつもりだったんだけれど、調べてみたら python って結構、「ゲームコンソール向けの特徴」があったんですヨ。



で、その「ゲームコンソール向けの特徴」なのですが、あくまで制作者側からの視点なんだけれど、



  • コンパイル済みのバイトコード形式が存在する


  • 組み込み後のソースコード公開の義務がない(たぶん)




の2つなんです。この2つは、よりゲーム開発に向いている仕様なんですよね。
ある意味、普通にスクリプト言語を使うときには、ほとんど気にしないような点なんです。



まず、前者に関して言うと、もちろんCPUのネイティブコードに落ちいるわけではないので、コンパイルって言葉は誤解があるかもしれないけれど、実行エンジンが直接理解できるバイナリになっているという、広義でのコンパイル、つまり生のテキストファイルじゃなくて、バイナリイメージが作成されているというのは、実行時によけいな時間がかからないと言うことと、よけいなメモリを実行時に使用しないという点で、まさにゲームコンソールには、必須の機能といってもいいかも。パソコンでの使用を前提に作られている(とおもう)スクリプト言語で、この機能があるなんて、驚きだった。



そして、後者については、python 自身はオープンソースなんだけれど、ライセンスとして、GPLライセンスではない(GPL互換という表現がされている)ので、python を改良してゲームに組み込んだとしても、ソースコードの公開の義務がないという事みたい。これは、python を組み込む敷居をぐっとさげているとおもう。個人的には、オープンソースとかすごく賛同できるコンセプトで、過去に自分が趣味で作ったゲームのソースは積極的に配布していたりしたこともあったくらいなんだけれど、仕事ってなってくると守秘義務とかもあって、ソースコードの公開義務があるGPLがらみのモノの組み込みには慎重になってしまうからね。(って、一応、調べたつもりだけれど、違っていたらスミマセン)



で、自分は pythonをゲームのどんなところに使いたいかというと、用途として考えられるのは



  • 各種メニュー画面での GUI 制御


  • ゲーム進行、シナリオの制御


などの処理速度を必要としないけれど、チクチク改良を加えていかなくては行けない箇所だよね。これらの箇所では、すごく効果的じゃないかな。



GUI 制御とか、ウチでもC++ で直接やっているけれど、これこそ、C++ なんかでやる必要性が低い箇所だとおもえる。今、C++ でしかできないから、C++ でやっているというカンジだし。



あと、ゲーム進行、シナリオの制御とかって、すでに多くのゲーム会社が独自のスクリプト言語をすでに実装していると思うけれど(ご多分に漏れず、ウチの会社もかなり高性能なスクリプト言語がありますヨ)、より一般的なスクリプト言語が使えるようになるメリットは、それでもかなり大きいと思う。たとえば、世の中に参考に出来る資料がたくさんあるとか、安定性とか、なによりプログラマがゲーム本体のプログラムに時間をかけられると言うことが大きいと思う。



さらに、別の点でも利点が考えられて、最近のゲーム会社ではゲームで使用する各種データやテーブルを作るためにスクリプト言語を使用することって多いと思うんだけれど(ウチの場合は Ruby とか)、それらと、ゲーム用のスクリプトが同一になるのって、言語学習の時間や、よけいなミスを減らすという意味でもすごく大きいはず。





と、色々とかいてみたけれど、実際に組み込んで使ってみないと何ともいえないんですけれどね。オリジナルのスクリプト言語だって、有効な場合も多いわけで。使ってみて問題がでるとすると、実行速度より、メモリの方かなぁ。今はちょっと時間がないけれど、時間が出来たら、試してみたい。



んで、結局のところ、なにが言いたいのかというと、細かいところまでC++
でコーディングしたり、各社が独自のスクリプト言語を実装したりとかいうのは、そろそろやめてゲーム本体の開発をもっと効率的にしたいよねという事な
んですよね。その分、ゲーム本体の制作に時間を割いていきたいわけで。そういう意味では、SCE や MS が率先して実装してくれてもいい気がするけれど。あ、MS は IronPython とか .NET 用に移植しはじめているから、360 用には出るかもネ。



しかし、こんなに想像がふくらんでくるプログラム言語というのも久しぶりだったので、すこし興奮しています。



0 件のコメント: