Dimension 3

Introduction of the open source 3D FPS engine for OS X (manual and text translation to Japanese)  

dim3 の紹介

dim3(Dimension 3 )は 海外製のオープンソース の3D FPS系エンジンです。パッケージはエンジン 、アニメーター 、マップエディタ の3つから構成されています。
三次元空間に配置されたオブジェクトにそれぞれ関連づけられた複数のスクリプト(javascript)が実行可能です。

2012年7月時点の状況。
現在 v0016、MacOSX版と、Windows版がまだ開発中で、マップエディタのインターフェースのほか、アニメーションエディタのインターフェースも変化している、仕様も昔とは全く別のものとなっている。
ツールのインターフェースは、3Dオブジェクト一覧が選びやすくなってたり、プロパティが見られるようになっている。

一番大きな変化はttf フォントによる文字描画で、Chooserやオプション設定画面はきれいな文字で描画されている。
また、サンプルを見ると、3Dオブジェクトとダイアログを表示させたり、オブジェクトの上にフローティングテキストを表示できるよようになっている
しかし日本語フォントは未対応、ためしにInterface.xml のフォントタグに日本語フォントを指定したところ、英語以外の文字はグリフが見つかららず四角に×印の文字化けとなってしまった。


2011年11月時点の状況。
  • ver3でβ番号が大きくなりすぎたため、バージョンナンバーの付け方を変更し、 v0001 をスタートになりました(現在v0006)。
  • 将来的にApp Storeを想定して開発中らしい。現在MacOSX(おそらく10.5以降) とWindows版の両方が存在します。
  • dim3 Setup.app が追加されて、開発者がXML編集する際の負担がいくらか軽減されました。
  • MacOSX 10.5で、EditorとAnimatorが起動しないバグがdim3 v0006 でやっと直りました。
  • まだまだβ版で、アップデート仕様変更が頻繁なので、仕様が安定するまで様子見るか、短時間で思い切って作りきるか迷う所です。
  • 最新版に対応した日本語マニュアルは、まだありません。

    ちなみに、オライリーの「Unityによる3Dゲーム開発入門」(第14章 p388)によると、Unityではv3.4現在、Win/Mac両対応のゲームを作成できますが、 ネットワークマルチプレイヤー対応のゲームを作る場合は、Pro版(有料)を購入しなければいけません。アセットストア等間口の広さやUIのわかりやすさは、Unityのほうに軍配があがります。

  • 以下古い記事。
    現在 v3.0が開発中です。ベータ版なので、仕様が変わる事があります。

  • エディタとアニメータは MacOSX版のみ提供(Universal Binary 対応)
  • Windows版はサーバ、エンジンを含むランタイムがあります。 /Linux版はエンジン(ソースコード)のみ提供とのこと。(v2.0)

    入手と配布元

  • Klink!Software dim3の配布元 (英語)
  • SVNリポジトリに、入手可能なソースコードが公開されているようです。(コード閲覧やダウンロードにはSVNクライアントが必要です。)


    正式リリース時では、バイナリ版も用意されますが。それ以外に開発途上版のソースコードを入手する方法もあります(プログラマ向け)。
    Mac OSX 10.5.8 環境で、Xcode 3.0 等のdeveloper Toolをインストールしていた場合、
    以下のコマンドをターミナルから打ち込めば、SVN経由でチェックアウト(ダウンロード)することでソースコードを取得できます。
    次の例ではデスクトップフォルダに作ったdimsvnという名前のフォルダ内に取得したソースが保存されます)。
    cd ~/desktop
    mkdir dimsvn
    cd dimsvn
    svn checkout http://dim3.googlecode.com/svn/ dimsvn
    WinBuild, UnixBuild フォルダもあります、興味ある人は覗いてみよう。

    (v2.x 時点の動作環境)
    /EditorAnimatorServerEngine動作環境
    MacOSX OKOKOKOKOS X 10.3.9以降、256MB RAM, G4 500MHz(Intel/PPC)以降,QuickTime6.4以降, 32MB OpenGL対応グラフィックカード
    WindowsXP--------OKOKWindowsXP, 512MB RAM , 500MHz , 32MB OpenGL対応グラフィックカード
    Linux ---- ----(Source)(Source) ???
    (Windows版は VS C++ 6.0環境 でビルド可能らしい。 使用ライブラリは SDL、OpenGL, OpenAL, libpng, SpiderMonkey,GLEW,X11など)

    dim3 を使用した作品

  • Awnee: xRacing : カートを使った3D レーシングゲーム。
  • Blood_rush : 自機が白血球の、シンプルなシューティングゲーム。体内の血管トンネル内を進み、ビームで対応する色のウイルスを殲滅していきます。マウスホイールを回すか、E キーで、3色のビームを切り替え戦います。
  • ラズの羊番 : 羊番の少女ラズが活躍するTPS( 3rd Person Shooting)。 数種類のゲームに挑戦することができます。難易度は高めで、練習用マップも用意されています。コスチュームによって使える能力が変化します。システム面でも興味深くペットを使ったオブジェクトの誘導。風車小屋防衛戦、コスチューム変化、 RTSは複数のペットへの命令と、シングルプレイのゲームながらも、3D TPS系MMORPGにも見られる要素もいくつか実装してます。

  • 操作キーは制作者側で自由にカスタマイズ可能ですが、実際の作品をみると基本的な移動はasdw、マウス移動で視点変更、数字キーやマウスホイールで武器切替えするものが多いです。

    dim3 Editor のソースから派生したもの
  • dim3 Inspire
  • ソースコードをもとに派生したアプリケーション。いくつかの機能が追加されている。この派生版は、開発が停止してから(2006年)かなりたっているので、出力したdim3形式データに互換性がない場合があります。

    長所と短所

  • オープンソースで開発されています、ただし市販ソフト(UnityやTorque)のように高機能というわけではありません。
  • フルスクリーン画面のみ対応Editorからテスト実行する場合はウインドウモードで起動する。v2.xから可能に
  • データはXML、スクリプトはJavaScriptを使っているのでとっつきやすい?
  • 日本語入力/表示は全く対応していない。画像化したフォントがアルファベット大文字小文字と数字、記号のみあります。
  • エディタ、アニメータはOSX版のみ付属
  • マップエディタの3D表示モードでは、真横、真上からは編集できないので正確な移動が難しい。 v3.0から可能に
  • ロック機能がないので、間違って他のセグメントを触ってしまうことがある。 v3.0 から、エディタにテクスチャや位置のロック機能が付きましたが、思うように選択できないこともある。
  • SDLを利用しているので、他OSへ移植しようと思えばできる!?
  • 対応するGLSLのシェーダは開発途上(チュートリアルが無い)。
  • 公式以外のドキュメントやチュートリアルが少ない (英語) Wikiとかある。
  • リソースデータが丸見え。ただしOSX環境ならアプリケーション内の .App/Contents/Data にリソースをすっきり収めることもできるそうです。

  • ドキュメント日本語訳

    アプリケーション本体の日本語ローカライズはしてません。(Japanese localizing is not yet)
    v3.0はベータ版なので、ころころ仕様が変わる事があります。

    ■dim3 v3.0 開発進行版の EditorとAnimator のインターフェース
  • Editor v3.0 のインターフェース(※PDF形式)

    3.0 Beta14から、エディタでのView>WireFrame 4分割の右下、View>Forward Only モードでの視点操作が変化 ■dim3 v3.0b13ドキュメント日本語訳 (bはベータ版の意)
  • ダウンロード
     
    前バージョンのシステム概略。シェーダ、スクリプトのリファレンスは役立つかもしれない。
  • dim3 v2.3b8 ドキュメント日本語訳+αダウンロード
  • dim3 v1.6 ドキュメントと、チュートアリアルダウンロード(2.4MB, ONLY dim3 Tutorial& Documentation for Japanese!!)

    日本語訳の公開にあたり 、マニュアルに使われているスクリーンショット等の画像の使用について dim3作者の Brian氏 に許可を頂きました。 快諾して下さったBrian氏に感謝いたします。
  • dim3 v2.2 チュートリアル

    英文ドキュメントだけでは足りない部分を補足する形で作った文書。ただし対応バージョンが古いです。
  • チュートリアルダウンロード
  • dim3v3.0用メモ

    未整理分
  • エディタ関連
  • その他の情報


    screenshot

    3D モデルの読込み

    3Dモデルは、モデラー(Lightwave や maya, Wings3D, ArtofIlusion など)で作成しておきます。 それを dim3アニメーターで読込ませ、Animator上でボーンやアニメーションを作成すると、自作の3Dモデルをゲームのキャラクターとして登場させることができます。 アニメーターで読込可能な 3Dモデルの形式はMeshwork( .mesh )形式と LightWave(OBJ)形式です。Cinema4DのXML形式も読込めるらしい。 (読込みするには、 obj , mtl , png の各ファイルがそろっている必要があります。)

    読込んだキャラクターやオブジェクトに、ボーンやポーズ、アニメーションパターンを追加できます。 カメラは、プレイヤー追尾、一人称視点、固定カメラなど、複雑なカメラワークも作成できます。 また、MAP上に、スイッチや、リフト、自動ドアなどの仕掛けを盛り込むことも可能です。 これらはdim3に組み込まれたスクリプトと XMLによって制御可能です。

    注意

    ※dim3のデモ用ゲームで使われている画像、音楽、3Dモデル(JoeFoe(ガイコツ敵キャラ)やプレイヤー、武器、木など)、これらのデータは作者が存在します。これらはdim3デモのために提供されたものなので、自作ゲームを作る場合には素材の流用はしないで下さい。(dim3の文書より) デモに収録されているスクリプトに関しては、自由に改変してもらって構わないとのことです。

    dim3のテクスチャはPNG形式のみ使えます、もし他形式の場合は モデルを作成後に、 テクスチャ画像をpng形式で保存し直して、dim3アニメータでテクスチャを読込む際にそのpngファイルを選択して下さい。

    スクリプトについて

  • dim3 v3.0系 では、JavaScriptエンジンが、Safariでも使われている Nitro に変更になったようです。
  • dim3 v2.0系 ではゲームの制御にJavaScript1.6を使っています。(スクリプトエンジンはSpiderMonkeyを採用しています。)
  • JavaScript基本機能が使える他、dim3専用の定数、関数(ウェイト・タイマー処理 , GUI 、カメラ、モデル操作関数 )が用意されています。
  • スクリプトは、デモという形で動くサンプルがあり、それを元にカスタマイズしていきます。
  • dim3専用の定数、関数についてはリファレンス(英語)を参照下さい。
  • その他

    メモやファイル置き場 (主に v2.x 時代のものです)
    HeightMap, スクリプトの構造、座標軸の基準、EditMapScriptでテキストエディタを関連づける方法など。

    メモ

    dim3サーバを終了する場合は、デフォルトでは http://127.0.0.1:11801/ で ログインします(ローカルサーバの起動)。詳しくはドキュメント参照。

    新規作成メモ

    全部まっさらにして、一から作り始める場合。

    例えば「MyFPS」というフォルダを作って、その中に
    ・アプリケーション:Editor, Animator, Engine , Server.app
    ・データフォルダ:    Data
    を入れる。

    これをひな形として、データの編集を行うと簡単です。
  • Data ……フォルダ内には、dim3Engineが使用するリソースデータ(プロジェクト)が入っています。

    配布時には、Animator と Editorは必要ありません。またネットワークプレイに対応しない場合は Serverも必要ありません。

    ファイル構成

    dim3Engineが使用するリソースデータは、.app パッケージ内部のContents/Data フォルダ(OSXのみ)、または外部フォルダ Data(デフォルト), Data2 に置く事ができるそうです。
    これらのフォルダはオーバーライド可能で、.app/Contents/Data/bitmap/texture/foo.png があって、Data/bitmap/texture/foo.png がある場合、元のファイルを損なわずに外部フォルダのfoo.pngが適用することができるらしい。
  • Dataフォルダ内のデータ構成
    (自作のFPSを作るには、これらのファイルをカスタマイズする。)
  • Bitmaps 主に画像が入っている。
     
    Data/Bitmap/Interface/ …… (ゲーム画面のインターフェイスに使う画像。png形式)
    武器選択アイコン、表示要素、体力ゲージ。

    Data/Bitmaps/Font/ …… ( ビットマップフォント)
    Data/Bitmaps/Crosshairs/ …… ( 照準)
    Data/Bitmaps/Textures/ …… ( MAP Editor で使用する 床や壁のテクスチャを入れます。png形式)
    Data/Bitmap/UI_Elements/ …… (メニュー画面のインターフェイスに使う画像。png形式)
     main.png  ……(タイトル画面 背景)
     cursor.png  ……(カーソル)
     button_〜.png …… (ボタン関係)

    Data/Bitmap/Titles/Example …… Title.png(タイトル?)

  • Chooser …… (MAP選択用のメニュー(Chooser)に使う画像が入っている。png形式)

  • Settings …… (設定ファイル XML形式)
    Interface.xml …… (メニュー画面や、ゲーム画面のインターフェイスの定義
    ゲームのMainMenu, MAP選択用メニュー項目 ,タイトル画面のボタン位置や文字)

  • Scripts …… (ゲーム用のスクリプトがある。 JavaScript )
    Data/Scripts/Courses ……  各マップの定義(コーススクリプト)
    Data/Scripts/Game …… システム定義
     Game.js …… メニュー構成(ゲーム全般)
     Host.js  …… ネットワーク関係(ホスト用)
     Client.js …… ネットワーク関係(クライアント用)

    Data/Scripts/Objects …… オブジェクトの定義(プレイヤー、乗り物、木、敵、光源)
    Data/Scripts/Projectiles  ……投射物の定義(打撃、飛び道具、光線、ダメージ)
    Data/Scripts/Weapons  ……武器の定義(ハンマー、マスケット銃、ランチャー、マイン)

  • Maps  ……(マップデータそのもの。XML形式)これは、MAP Editor で編集するデータです。
  • Models  ……(3Dモデルとテクスチャ。XML形式、png形式)これは、Animater で編集するデータです。

  • Movies …… (ストーリー用の ムービー .mov形式)
  • Story  ……(ストーリー用の紙芝居画像、連番のpng形式)
  • Music  ……(BGM, wav形式)
  • Sounds …… (SE 効果音, wav形式)
  • Shaders …… (シェーダー)

  • Saved Games ……(セーブデータ)
  • ScreenShots ……(スクリーンショット保存)
  • インターフェイスに関するリソース。
    dim3v1.6/Data/Bitmaps/Interface ---移動画面用(武器選択アイコン)
    dim3v1.6/Data/Bitmaps/UI_Elements ---ホストメニュー(システム側)/クライアントメニュー(プレイヤー側)ボタン画像
    dim3v1.6/Data/Chooser ---MAP Chooser(MAP選択メニュー)画像

    dim3v1.6/Data/Settings/Interface.xml ---レイアウト情報とボタン名称の設定
    移動画面、ホストメニュー、クライアントメニュー 、MAP Chooser に関連するレイアウト
    Interface.xml の構造
    Bitmaps ---移動画面の武器選択
    Texts --- デモ用のメッセージ(改行含む)、 Civil Warのスコア
    Bars --- HPゲージの配置
    Menus --- クライアントメニューの項目名(プレイヤー側)
    Choosers --- MAP Chooser レイアウト
    Buttons --- システムメニューの選択ボタン配置
    Sound --- 効果音
    Music ---音楽
    要素の詳細
    Texts --- Item : ID と メニューを構成する項目名
    Choosers --- Item : ID と ファイル名、位置情報。
    Buttons : 内包するタグ名そのものがフラグに。位置情報。

  • インターフェイスを制御するスクリプト。
    dim3v1.6/Data/Scripts/Game/Game.js
    Interface.xml で定義したマップやメニュー項目の ID を、変数と関連づけている。
    var CHOOSER_ITEM_INDOOR_MAP=100;
    function gameMenuSelect(id){ } ホストメニュー(システム側)を扱う関数
    function gameChooserSelect(id){ } MAP Chooser(MAP選択メニュー)を扱う関数。ここでマップのロードを行なう。
    function gameMapChange(game,subEvent) Interface.xml で定義したメッセージの表示

    dim3v1.6/Data/Scripts/Game/Client.js クライアントメニューに関する関数がある。

  • イベント
    DIM3_EVENT_MAP ------------------- イベント
      DIM3_EVENT_MAP_OPEN ----- サブイベント
      DIM3_EVENT_MAP_CLOSE ----- サブイベント

    メニュー構成(デモ用のもの)



    Last modified 2011/11/05 最近の状況を追加
    Last modified 2009/08/31 一部の情報を追加
    Last modified 2009/07/31 文書の v3.0beta11 への対応
    Last modified 2009/05/10 v3.0beta10 の 差分を追加
    Last modified 2008/12/30 v3.0beta のインターフェースガイドを追加。
    Last modified 2007/08/24 サイズが大きくなったので分割。

    Tsukubado