これはどんな獣ですか?
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が必要です。 含めることをお勧めするパラメーター:
- URHO3D_OPENGL-DirectXの代わりにOpenGLを使用(Windowsのみ)
- URHO3D_STATIC_RUNTIME-Visual C ++ライブラリはエンジンに静的にリンクされ、再配布可能なパッケージvcredist *がインストールされていない場合でも(VSのみ)ユーザーのコンピューターでのゲームの起動を保証します
- URHO3D_SAMPLES-例を学ぶよりも、エンジンをマスターするのに良い方法はありません
コンソールコマンド(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アプリケーションを作成しましょう。 いくつかの準備手順:
- 空のフォルダーにurho3DPlayer.exeランチャーをコピーします。
- ランチャーの名前を変更して、ユーザーが起動する必要があるものを正確に理解できるようにします(たとえば、Game.exeで)。
- ここにCoreDataフォルダーをコピーします。 このフォルダーには、エンジンが機能するために必要なデータ(シェーダーなど)が含まれています。
- Dataフォルダーを作成します。 ゲームのリソースが含まれます。
- Dataフォルダーで、スクリプト(たとえばScripts)のフォルダーと、その中にMain.asファイルを作成します。このファイルにはゲームロジックが記述されます。
- 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