Urho3Dの基本

HabréにはUrho3Dのようなすばらしいエンジンに関する情報がないことに驚いた。 したがって、私はこの迷惑な省略を修正するために急いでいます。 この入門記事では、すぐに初心者に役立つものに焦点を当てようとしますが、同時に、多くの情報を過負荷にしないために、深いジャングルには入りません。



画像



これはどんな獣ですか?



Urho3Dの機能はUnity3Dに匹敵すると言っても過言ではありません。Unity3Dでの作業も同様に簡単です。 さらに、予約なしで無料で(MITライセンス)、多くのプラットフォーム(Windows、Linux、Mac OS X、Android、iOS、Raspberry Pi、HTML5)で使用でき、非常に高速で軽量です。 AngelScript(C#に似た構文)、LUA、C ++でゲームを書くことができます。 興味があれば、猫へようこそ。



入手先



Urho3D公式ウェブサイト: http ://urho3d.github.io ただし、エンジンは活発に開発されており、現在のバージョンはサイトに投稿されたリリースよりもはるかに進んでいます。 したがって、リポジトリからエンジンをダウンロードすることを強くお勧めします: https : //github.com/urho3d/Urho3D



set "PATH=C:\Programs\Git\bin" git clone https://github.com/urho3d/Urho3D.git
      
      





エンジンを構築するには、CMakeが必要です。 含めることをお勧めするパラメーター:



画像





コンソールコマンド(Visual Studio 2015の場合):



 set "PATH=C:\Programs\Cmake\bin" call Urho3D/cmake_vs2015.bat Build -DURHO3D_OPENGL=ON -DURHO3D_SAMPLES=ON -DURHO3D_STATIC_RUNTIME=ON
      
      





通常、Windows上のコンソールCMakeの要件は、エンジンへのパスにスペースがないことです。



その他のパラメーターは、 http//urho3d.github.io/documentation/HEAD/_building.html#Build_Optionsにあります。



プロジェクトが生成された後、それらをコンパイルする必要があります。 繰り返しますが、VSの例では、Build / Urho3D.slnを開き、ALL_BUILDプロジェクト(例付きのエンジン)またはUrho3Dプロジェクト(エンジンのみ)をコンパイルします。 C ++でゲームを作成する場合は、2つの構成(デバッグとリリース)でコンパイルすることをお勧めします。 スクリプトのみを使用する場合は、リリースで十分です。



コンソールからコンパイルする(Visual Studio 2015の場合):



 set "PATH=D:\Programs\Microsoft Visual Studio 14.0\Common7\Tools\;C:\Windows\System32" call vsvars32.bat devenv Build/ALL_BUILD.vcxproj /build Release
      
      





コンパイルが完了したら、CoreDataおよびDataフォルダーをUrho3D / binからBuild / binにコピーします。



アクションで見る



サンプルのコンパイル済みバージョンは、Build / binフォルダーにあります(現在41個あります)。 彼らが実証するエンジン機能:2Dおよび3Dアプリケーションの作成、骨格アニメーション、物理(BulletおよびBox2D)、ネットワークの操作、サウンドの再生、ゲーム内インターフェイス、ローカリゼーションなど。 これらの例のソースコードは、Urho3D / Source / Samplesフォルダーにあります。



C ++以外のすべての例は、言語AngelScript(Data / Scriptsフォルダーにあります)およびLua(Data / LuaScripts)で複製されています。 Launcher Build / bin / Urho3DPlayer.exeは、それらを実行するように設計されています。



800x600ウィンドウで例を実行します。



 Urho3DPlayer.exe Data/Scripts/23_Water.as -x 800 -y 600 -w
      
      





画像



パラメータなしでランチャーを実行すると、Data / CommandLine.txtファイルの内容がコマンドラインの引数として使用されます。 ランチャーのすべてのパラメーターは、 http//urho3d.github.io/documentation/HEAD/_running.htmlで表示できます。



こんにちは世界!



簡単なAngelScriptアプリケーションを作成しましょう。 いくつかの準備手順:



  1. 空のフォルダーにurho3DPlayer.exeランチャーをコピーします。
  2. ランチャーの名前を変更して、ユーザーが起動する必要があるものを正確に理解できるようにします(たとえば、Game.exeで)。
  3. ここにCoreDataフォルダーをコピーします。 このフォルダーには、エンジンが機能するために必要なデータ(シェーダーなど)が含まれています。
  4. Dataフォルダーを作成します。 ゲームのリソースが含まれます。
  5. Dataフォルダーで、スクリプト(たとえばScripts)のフォルダーと、その中にMain.asファイルを作成します。このファイルにはゲームロジックが記述されます。
  6. Dataフォルダーで、「Scripts / Main.as」の内容(引用符なし)を含むCommandLine.txtファイルを作成して、ランチャーが実行する必要があるものを正確に把握できるようにします。


プログラムへのエントリポイントは、起動されたスクリプトのStart()関数です。 Main.asファイルに以下を追加します。



 void Start() { }
      
      





Game.exeを実行します。 すべてを正しく行った場合、黒い画面が表示されます。 Alt + F4で「ゲーム」を閉じます。



次に、Urho3Dの主なアイデアについて少しお話ししたいと思います。 エンジンのシーンは、ノード/ノードで構成される階層ツリーです。 各ノードには、空間内の位置、回転角度、スケールなどのパラメーターがあります。 いわゆるコンポーネントは、3Dモデル、スプライト、スクリプト、サウンド、ライトなどのノード、およびすべての変換を継承する子ノードに任意のノードにアタッチできます。



シーンとカメラを作成します。



 Scene@ scene_; //    void Start() { //   . scene_ = Scene(); //           //   .  Octree () // ,      , //    . scene_.CreateComponent("Octree"); //          MyCamera. //      ,     . Node@ cameraNode = scene_.CreateChild("MyCamera"); //       . cameraNode.CreateComponent("Camera"); //        . //  X   , Y -  , Z -    . cameraNode.position = Vector3(0.0f, 0.0f, -5.0f); //          . Viewport@ viewport = Viewport(scene_, cameraNode.GetComponent("Camera")); renderer.viewports[0] = viewport; }
      
      





画面はまだ黒いので、シーンに何かを追加しましょう。 このためには、何らかのモデルが必要です。 DataフォルダーでModelsフォルダーを作成し、Urho3D \ bin \ Data \ ModelsからBox.mdlをコピーします。 モデルをロードします。



 void Start() { ... //    3D-. Node@ boxNode = scene_.CreateChild("MyBox"); //   StaticModel -  3D-  . StaticModel@ boxObject = boxNode.CreateComponent("StaticModel"); //    . //       ,      . boxObject.model = cache.GetResource("Model", "Models/Box.mdl"); //     (    ). boxNode.rotation = Quaternion(45.0f, 45.0f, 45.0f); }
      
      





これで、キューブは画面に表示されますが、標準の背景照明のみで照らされているため、見えにくくなっています。 シーンに光源を追加しましょう:



 void Start() { ... //     . Node@ lightNode = scene_.CreateChild("MyLight"); //       . Light@ light = lightNode.CreateComponent("Light"); //     -  . light.lightType = LIGHT_DIRECTIONAL; //   . lightNode.direction = Vector3(0.6f, -0.6f, 0.8f); }
      
      





最後に、キューブをスピンさせます。



 void Start() { ... //  ,     . SubscribeToEvent("Update", "HandleUpdate"); } //   Update. void HandleUpdate(StringHash eventType, VariantMap& eventData) { //      . float timeStep = eventData["TimeStep"].GetFloat(); //     . Node@ boxNode = scene_.GetChild("MyBox"); //  . boxNode.Rotate(Quaternion(10.0f * timeStep, 10.0f * timeStep, 10.0f * timeStep)); }
      
      





ゲームの公開



すばらしいゲームを販売したいが、そのソースコードを掘り下げてほしくないとします。 Build \ bin \ toolフォルダーにあるユーティリティScriptCompiler.exeを使用します。



 ScriptCompiler.exe Data/Scripts/Main.as
      
      





出力はMain.ascです。 CommandLine.txtファイル「Scripts / Main.asc」を修正し、元のMain.asファイルを削除します。 これの追加の利点は、ゲームの起動が速いことです。



最終結果はhttps://github.com/1vanK/Urho3DHabrahabr01からダウンロードできます

ドキュメント: http : //urho3d.github.io/documentation/HEAD/index.html



All Articles