nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

Second Lifeのソースコードを(ちょっとだけ)覗いてみた

Win32版限定で

  • VC++.NET 2003で書かれている
  • ちゃんとC++STLフル活用(ゲームにありがちなベタなCでカオスなコードになっているということはない)
  • 変数の命名規則は、メンバはm、グローバルはgをprefixにする。ハンガリアンではない。
  • 数値型は、「S32」「F64」という感じの定義にしてる。boolは大文字のほう。
  • librariesフォルダにあったもの
    • apr(Apache Portable Runtime)
    • freetype(フォント)
    • jpeglib(JPEG)
    • boost(C++汎用ライブラリ)
    • libcurl(HTTP等通信)
    • libexpatMT(XMLパーサ)
    • libOpenJPEG(JPEG)
    • llmozlib(内部ブラウザにGeckoを使ってる?)
    • ogg/vorbis(音声)
    • OpenSSL
    • xmlrpcepi(XML-RPC
    • xulXUL
    • zlib(圧縮)
  • 描画はOpenGLだけど、(Win32版は)入力にはDirectInputも使ってるっぽい?(Win32APIで入力を取得しているような部分もある)
  • たまに開けないファイルがある(というかプロジェクトには登録されているのにファイルは無い)
  • コメントは控えめ(ファイルの先頭だけ@fileとかJavaDocっぽくなってる)

それぞれのライブラリの使用見本として見るのもいいかも?全体的にしっかりしたコードなので、単体では読みやすいですが、規模が大きいので全部把握は厳しいです。
ビルドできるなら、トレースしながら実行すると面白いかもしれません。(ぼく自身はSecond Lifeのアカウント自体を持ってないのでよくわかりません)
あとオープンソース化したからと言って、チートができるような構造でもなさそうなので(そもそもゲームじゃないのにチートする必要があるのかどうかは不明)、まあBOT作りの参考にするか(BOT作って何するのかは知らない)、UIを独自にカスタマイズするか、移植するかしかない気がします。既存のクライアントでは動かないような拡張をしても意味が無い気がします。やったことないのでよくわかりません。
ビルドしてみたい人は、
https://wiki.secondlife.com/wiki/Get_source_and_compile
このへんを見ながらがんばってください。

We should soon have instructions for building the viewer using Microsoft's Visual Studio .NET 2005 Express, which at the time of writing, was freely available.

とか書いてあるので、VS.NET2003が無い人は、それまで待つといいかもしれません。暇な人はVC++2005Express用のビルド方法を書くと神になれるかもしれません。→追記:公式Wikiに追加されました。