SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

リンデンスクリプトを使ったSecond Lifeのプログラミング

Linden Scripting Languageを使ってエレベータを作成する

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (2.3 KB)

現実の世界でプログラミングを学んだ人なら、そのスキルを第二の世界、つまり「Second Life」で活かすことができます。ここではLinden Scripting Languageを使い、この大人気のシミュレーション内で制作したオブジェクトを動かします。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 Second Life(SL)は、Linden Labs社が制作した大人気の多人数同時参加型オンラインゲーム(MMOG)です。Second Lifeはゲームをはるかに超えるものだと考える人も大勢います。Second Lifeをよく知らない人は、映画『マトリックス』を思い出してください。『マトリックス』では、人々がシミュレーションの世界の中で生活し、仕事をしていました。Second Lifeもこれとそっくりで、アバターと呼ばれるコンピュータプレーヤーがSecond Lifeの3Dの世界の中で生活します。

 Second Lifeに明確な目的はありません。この世界で起きることはすべて、プレーヤーの自由な発想に任されています。しかも、Second Lifeは無料でプレーすることができます。登録する必要はありますが、土地を所有するのでなければ有料会員になる必要はありません。

 ただし『マトリックス』と違い、現在のコンピュータ技術は現実の世界を丸ごとシミュレートできるほど進歩していません。そのため、Second Lifeには2つの大きな短所があります。第一に、プレーヤーはコンピュータの画面を通してSecond Lifeの世界を目にします。最先端の3Dグラフィックスが使われているとはいえ、シミュレーションはどことなく漫画チックに見えます。それでも、Second Life内ではかなり水準の高いビジュアル表現が随所に見られます。

 第二に、Second Lifeのシミュレーションは物理的に完全なシミュレーションではありません。重要な要素、例えば重力などは存在しますが、車のような複雑なものは完全にシミュレートできないことがあります。車の内燃機関や電気部品のすべての側面をシミュレートするのはかなり難しいことだからです。最新のコンピュータであっても、このような処理にはパワーが足りません。とはいえ、これから見ていくように、Second Lifeの世界には車やその他多くの種類の乗り物が存在します。

 Second Lifeにアクセスするには、無料のクライアントを使用します。クライアントはWindows、Macintosh、UNIXなど、各種のOSに対応しています。さらに、Linden Labs社はつい先日、クライアントをオープンソースとして公開しました。これにより、サードパーティの開発者がSecond Lifeクライアントのさまざまな追加機能を作成し、機能を拡張できるようになっています。

Linden Scripting Languageについて

 Second Lifeには、単純な物理エンジンの機能の限界をフォローするために、Linden Scripting Language(以下LSL)というスクリプト型のプログラミング言語が用意されています。車のすべての側面をシミュレートする代わりに、車の動き方を指示するスクリプトをプログラマが作成します。このスクリプトでは、音を鳴らすことも、車の進路を変えることも、衝突を検出することもできます。例えば車のスクリプトを作成する場合、現実味を加えるために、運転中でなければ進路を変更できないようにすることもできます。

 本稿ではLSLの概要を紹介します。ここで説明する内容を十分に活用するには、Second Lifeにおける「制作」(building)の基礎知識があることが望ましいものの、それは本稿のコードを理解する上で必須ではありません。制作とは、3Dプリミティブ(基本形状)をSecond Lifeの世界に配置する作業です。Second Lifeで目にするものはすべて、制作者によって作成されています。

 本稿では、読者が既にSecond Lifeの制作工程にある程度精通しているという前提で話を進めます。Second Lifeで簡単なオブジェクトを制作するのはそれほど難しいことではありませんが、物を制作するにはSecond Lifeの世界のやり方を学ぶ必要があります。試しに制作してみるには、Second Lifeウィンドウの下にある[Build]ボタンをクリックします。

LSLの基礎

 LSLは、一見するとCによく似ています。しかし、プログラミングはCよりもずっと簡単です。ポインタはなく、strcmpなどの関数を使わずに直接文字列を比較できます。LSLはオブジェクト指向ではありません。独自のオブジェクトを作成することはできず、3D関連のオブジェクトもわずかしか用意されていません。LSLは状態ベースです。すべてのLSLスクリプトには特定の状態があり、状態を遷移させて関数を実行します。この概念は、多くのプログラミング言語とかなり異なるものです。状態マシンは多くの言語で作成できますが、LSLでは状態マシンの概念がもともと言語に組み込まれています。

 LSLスクリプトは、Second Lifeの3Dプリミティブの中に配置されます。オブジェクトはプリミティブの集合です。例えば、Second Lifeの車は1つのオブジェクトです。しかし、車オブジェクトは、それぞれが独自のスクリプトを含む多くのプリミティブで構成されます。また、プリミティブは相互に、あるいは人間のプレーヤーと通信することができます。高度なプログラミングを使うと、プリミティブはSLの外部にあるWebページとも通信できるようになります。

 LSLはイベントドリブンでもあります。Second Lifeのほとんどのオブジェクトは、イベントをきっかけに状態を遷移しながら機能します。Second Lifeには、さまざまな種類のイベントが用意されています。その多くはユーザーがオブジェクトに触れたり座ったりしたときに発生するユーザーベースのイベントですが、ユーザーの操作が不要なタイマーイベントもサポートされています。

 これ以降は、Second Lifeでエレベータを動かす方法について説明します。

簡単なエレベータの制作

 例として、本稿ではSecond Lifeの高層ビルを上下に移動するエレベータを作成する方法を示します。図1は、このエレベータを設置する高層ビルです。

図1 Second Lifeの高層ビル。この高層ビルにエレベータを設置する
図1 Second Lifeの高層ビル。この高層ビルにエレベータを設置する

 このエレベータが実際に動作する様子は、Second LifeのX座標51、Y座標79の位置にある「Gyeonu」リージョンで確認できます。Second Lifeでは、「SLURL」と呼ばれる特殊なURLが使われます。SLクライアントが既にインストールされていれば、エレベータの場所に直接移動することができます。SLURLリンクがうまく機能しない場合は、SLクライアントの[Map]ボタンをクリックして「Gyeonu」を検索し、座標フィールドに「95」、「23」、「44」という座標を入力します(※編集部注:現在、該当する座標に高層ビルのオブジェクトは設置されていないようです)。

 このリンクをたどると、エレベータがあるエリアの上空マップを示すWebサイトが開きます。Second Lifeがインストールされている場合は、[Teleport Now]をクリックしてその場所にテレポートすることができます。エレベータを使うと、屋上を含めて、高層ビルのすべての階に移動できます。エレベータを利用するには、単にエレベータに「座る」(sit)という動作を行います。これは組み込みの動作の1つで、ゲーム内のオブジェクトを右クリックするとポップアップメニューに表示されます。エレベータのポップアップメニューでは、行き先の階を選択することができます。また、高層ビルの各階にある緑色のボタンを使うと、エレベータをその階に呼ぶことができます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
エレベータの作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Jeff Heaton(Jeff Heaton)

ライター、人工知能(AI)研究者、元大学教員。AI、仮想世界、スパイダー、ボットなどの話題を取り上げて執筆した書籍は10冊以上。Java、.Net、Silverlightを対象に、高度なニューラルネットワークおよびAIフレームワークの提供を目的とするオープンソースイニシアチブ、Encogプロジェクトを統括している。また、個人のWebサイトを管理し、人工知能とスパイダー/ボットプログラミングをはじめとする話題について情報発信を行っている。メールの宛先はjheaton@heatonresearch.com。Sun認定Javaプログラマ兼IEEEシニアメンバー。ミズーリ州セントルイスのワシントン大学情報管理修士号を持ち、セントルイス在住。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1214 2008/09/26 16:41

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング