やっぱりLLFontって、壊れてるなぁ。
いや、それだけ。
« 2008年8月 | トップページ | 2008年10月 »
いや、それだけ。
1. Pythonを覚える。
Second Lifeはゲームではありませんが、主として3Dネットワークゲームの技術を使ってつくられています。3Dゲーム業界で主流のスクリプト言語はPythonです。PerlでもRubyでもJavaScriptでもありません。
Second Lifeの開発に参加すると、いたるところでPythonスクリプトを目にすることになります。私は最初のころ「なぜ、これをPythonで書くのか?」と頻繁に思っていましたが、それは間違いでした。彼らは、「Python以外のスクリプト言語を使う特別な理由」があるときを除いて、普通はPythonを使うのです。
私はSecond Life以前はPythonってまったく知りませんでした。それ以前にPythonに関して持っていた知識は、ブロック構造をソースのインデントの深さで表現するのが特徴ということくらい。また、PoserやShadeがPythonインターフェースを持っていることも知っていましたが、Pythonじゃぁなぁ、と思って無視していました。
その後、Second Lifeのビューアーをいじり始めてから、Pythonを知らないために痛い目に会い、しかたなくて一通り勉強しました。
Python使えないと、つまらないところでひっかかります。Python覚えましょう。
2. Linuxを覚える。
Second Lifeの一般的な感じだと、圧倒的に多数の人がWindowsユーザーだと思います。公式ビューアーはWindows/MacOS/Linuxがあるわけですが、特にLinuxは添え物扱い。
でも、開発コミュニティではLinuxの比率が非常に高い。とくにメーリングリストで声の大きい人は、たいていLinuxの達人のような気がします。Second Lifeも、サーバーはLinux (だけ) ですし、リンデンの開発者もLinux使っている人が多そうです。
最近は、Windows でも MacOS でも Linux 動かせますから、Linux を覚えておくと、コミュニティで話がしやすいと思います。とくに相手の言うことが理解しやすい。ただ、残念なことに、VM配下のLinuxだとSecond Life動かないんですよね。VM環境で使う仮想XサーバはOpenGLがちゃんとしてないので。なので、ブート切り替えでネイティブにLinuxを動かさないといけないのが難点。そう思うと、AMD790とかGeForce8200とかでLinux専用機を一台調達するのが無難かもしれません。多分5万円くらいですみます。(インテルチップセットの統合グラフィックスは避けましょう。)
また、開発環境なんかも、Linux基本で作ったものを他のプラットフォームに適用しているような感触もあります。最近ビルド環境の移行 (cmake) をやっているのですが、最初にまともにビルドできるようになったのはLinuxでした。まぁ、そんな感じ。
3. 3DとOpenGLの基礎を覚える。
ビューアーの開発のかかわろうと思った動機はいろいろあるでしょう。3D関連の部分に興味があるなら、3DとOpenGLの基礎なんて、わざわざ言うまでもないでしょう。
でも、Second Lifeには他の要素もあります。たとえば私はテキスト処理とか各国語処理という、あまり主流でない部分を専門にしているわけですが、それでも3DとOpenGLは必要です。他にネットワーク関連も大きな話題ですが、SLの通信プロトコルは3D関連の情報を効率よく伝えることに主眼が置かれていることもあり、やはり3Dの基礎は必須らしいです。
結局のところSecond Lifeというのは3Dバーチャルワールドなので、かなり隅々まで、3D臭さがしみついているのですね。
入門書をざっと読むくらいでなんとかなってますが、私は。あと、わからない部分をSL内で教えてもらったりしてね。
4. 英語を覚える。
まぁ、Second Lifeに限りませんけど、結局は意思疎通の基礎は言葉で、世界中の人と話そうと思ったらやっぱり英語ですよ。Second Lifeの開発コミュニティも英語だけです。私が知る限り、英語以外の言葉を基本とするコミュニティは、現状では立ち上がっていません。日本語のSL開発コミュニティもありません。
最後は、ありきたりの教訓になってしまいました。オチがなくてごめん。
もう一年近く前にしばらくやっていたpangoですが、こっそり開発を再開しています。
あのときはPangoLayoutベース、つまり「上位レイヤインターフェース」で作っていたのですが、今回はその一段下のレイヤである、PangoItem、PangoGlyphString などのインターフェースを使っています。
この理由は、ノートカードの「埋め込みオブジェクト」の扱いが、PangoLayoutだと、どうにもならないと判断したためです。現在作っているコードでは、itemizeしてshapeしたあと、PangoLogAttrを参照しながら自力で行の折りたたみを行うようにしており、そのときオブジェクトのアイコンを混ぜる、という作戦にしています。
このレイヤのインターフェースの使い方を解説した文書を探したのですが発見できませんでした。基本はわかっていると思うのですが、細部がはっきりせずに困っています。どこかに、ありませんかね?
最近のコメント