Unity-無料のクロスプラットフォーム3Dエンジン(およびブラウザーも)

前文


それで、今日はUnity (少なくともそれに慣れていない人)についてお話ししたいと思います。 もちろん、Habréにはそれが何であるかを知っている人もいますが、検索では、言及された主題で悲惨なほど少数のトピックが得られます-2人は単に新しいバージョンを報告し、1つは簡単に提示し、もう1つはその使用に専念しています。 「許せない、それを修正する必要がある!」と私は考え、技術を普及させるために短いプレゼンテーションを書くことにしました。 あなたがすでに主題にいるならば、あなたはそれ以上読むことができないかもしれません。

正直に言うと、ウィキペディアで、通常のIDE、組み込みの通常の物理学、オーディオエンジン、およびネットワークマルチプレーヤーの直接実装を備えた無料の(少なくとも完全に機能する無料ライセンスを備えた)3Dエンジンについて読んだとき、おそらくnix'ov(Windows、MacOS、Wii、iPhone、iPod、iPad、Android、PS3、XBox 360がサポートされており、正常に動作しています)、私はすでにキャッチを感じました。

Unityのアプリケーションをブラウザに組み込まれたプラグイン用の特別なバージョンにアセンブルできることがわかったとき、モデルの品質とテクスチャの解像度を実際に過小評価せずに、Firefoxウィンドウで正直で本格的なトライドを見ることができます-これはほぼ確実ですそのような場合は常に、完全なナンセンスです。

そして、私がこの奇跡を自分のために設定し、上記のすべての真実性を確信したとき、私はほとんど恋に落ちました。

多くの場合、正直なトライドをインターネットに転送するという目標を設定したテクノロジーが生まれました。 失敗したVRML、わずかに失敗したActiveWorldsを思い出してください...今日、ほとんど誰もそれらを覚えていません。 間もなく全世界がHTML5であふれ、 3Dアクセラレーション備え新しいフラッシュがリリースされます...しかし、これが起こるまで、Web上のマルチメディアコンテンツの世界は、JavaとSilverlightに加えて、現在のバージョンのFlashによって支配されます。 おそらくただのFlashでさえ。 開発者は他のテクノロジーをきしみながら使用しているため、理解できる-1つのゲームをプレイしたり1つのサイトを表示したりするためだけに、ユーザーに別のサードパーティプラグインをインストールさせることは困難です。

ただし、前述のエンジンの新しい3番目のバージョンのリリースにより、お気に入りのフラッシュの表示を修正することを検討できます。 最終的に、Kongregateのようなフラッシュグッズの巨人がこのテクノロジーに注意を払った場合(特に、Unityで最高のゲームを競うことを発表した場合)-少なくとも見てみる価値はあります。

どこで多くを見ることができますが、例のためにいくつかのリンクを与えます。 プラグインをインストールするためのリンクが表示されます-キロバイトであり、ブラウザを再起動せずに動作します(残念ながら、デモのサイズは計算できませんでしたので、注意してください-サイズは約30-50メートルです):

それがどんな動物であるか、そしてそれがオフセットに描かれているのと同じくらい本当に良いかどうかを理解してみましょう。

プロとコントラ


まず、用語を定義しましょう。 Unityは本格的なゲームエンジンであり、バンドルされたEditor of Everythingで開発プロセス全体(リソースとスクリプトの準備を除く)が確実に行われるように設計されています。 通常、このような質問の声明は、「gamedev-tubi」カテゴリのティーンエイジャーがgamedevに関与しているように感じるように設計された、決して甘やかされないブレーキ付きGUIで大きくなりすぎた生存不能モンスターを意味します。 ただし、このトピックでまだタブを閉じないでください。Unityはこのテストではありません。 Unityは何が得意ですか? 見てみましょうが、同時にEpic Gamesが最近独立系開発者向けに無料にしたUnrealEngine 3用のUDK -SDKと比較してください。

良い団結:

まあ、そのようなもの。 次に、なぜそれが悪いのかを説明します。


正直なところ、私はまだ本当のマイナスは見ていません。 エンジンは安定しており、生産的で使いやすいですが、他に何が必要ですか? おそらく欠点があります。 そのため、アニメーションの奇妙に機能する加算ブレンディングについてのレポートを偶然見つけました。 複数のマテリアルがテレーンに割り当てられていないことについて不満を言う人もいます-私は知りません、私はそれを試していません。 しかし、上記の利点に照らしてこれは非常に重要ですか? 私にとってはそうではありません。

事実は、ほとんどの小さなチームにとって、エンジンが常に主要な問題になっているということです(もちろん、アイデアや優れた芸術の欠如ですが、今はそれについて話していません)。 一から書く-チーム内の唯一のプログラマーは、エンジンが3Dレンダリングであるだけでなく、パイプラインツール(インポート、エディター、ビューアー)であるため、実行するのは困難です。ミニマリズムが維持されない限り、不可能なタスクです。 ミニマリズムは悪くありません。お気に入りの8ビットスタイルで作られた素晴らしいゲームは数え切れないほどたくさんあります。しかし、それらのほとんどは1日のゲームです(Minecraftは数えません、そうです。 1日以上プレイされるゲームになると、本格的なエンジンが必要になります。その後、無料のソリューションを探し始めます。 Ogre、Irrlicht、およびそれらのような他の少数の人はもちろん優れていますが、a)彼らは道徳的に古く、b)それらを研究して作業状態に仕上げるには多くの時間と大きな理論的基盤が必要です。 もちろん、彼らにクールな販売プロジェクトを書くことができます(OgreのTorchlightはその例です)が、それでも複数のプログラマが必要です。 GameMakerのような「プログラミング言語の知識のないゲーム」もありますが、これらはおもちゃであり、正しい言葉です。

Unityの場合、既製のパイプライン、既製のレンダラー、既製の物理ライブラリ、オーディオライブラリ、ネットワークライブラリがあり、実際に使い慣れた言語でコーディングできます。実際、コーディング側からは、Javascriptなどの基本を知り、公式ヘルプで1週間掘るだけです。 FPSをリベットします。 リリースに対するマイナスの1つの障害。 誰かが修正できない他の人の手で書かれたコードの品質を信じていない場合は、チェックアウトしてください。すべてがそれほど悪くはありません。

それはどのように見えますか


写真はクリック可能です。

実際にIDE:

画像

IDEで、[再生]ボタンをクリックして、現在のリアルタイムシーンをテストできます。

画像

組み込みのクラスインスペクターは、トートロジー、変数のクラスを申し訳なく思っており、コードを見ずにスクリプトの変数をオンザフライで変更できます。 そしてintだけでなく、マテリアル、テクスチャ、モデルも...時間を大幅に節約します。 APIのドキュメントでは、たとえば、スクリプトへのテクスチャへのパスを直接記述するのではなく、クラスプロパティを適切なタイプの空のプロパティにして、インスペクターで必要なものを選択するように記述しています。

画像

インスペクタープレハブ(右)およびエンティティ(左)。 大まかに言えば、右側にはオブジェクトの空白があり、左側には現在のシーンにあるオブジェクトがあります。 エディターでのレベル実行中(「再生」ボタン)には、実行を一時停止してオブジェクトの現在の状態を確認できます。1つの小さな変数の動作を確認するために、ログを読んだり、HUDにデバッグ行を表示したりする必要はほとんどありません:

画像

そして最後に、私は言います...


ここまでのすべての言葉のゴミを要約すると、AAAプロジェクトを実行している場合は、おそらく独自のエンジンを作成することになります。 または、過去のプロジェクトのエンジンをすでに持っています。 または、ソースで悪名高いUnrealEngine 3のレベルのものを購入します。 しかし、これは、コーディングだけで数十人の人々とAAAプロジェクトを行っている場合です。

スタジオに10人(さらに2人)しかいない場合、通常、独自のエンジンを作成するには費用がかかりすぎます。 本格的なブラウザベースの3Dゲーム(OgreのJavaラッパーは重要ではありません。まあ、本当に)の波に乗る誘惑は、実際にUnityを試す価値があります。 通常のブラウザをカジュアルに開発する速度と複雑さは、Flashよりも高くはなく、グラフィックの優位性は明らかです。 はい、そして誰もまだすごい効果をキャンセルしていません。

最終的に、Unity(議論の余地はあるが可能)、プレゼンテーション、科学プロジェクトの視覚化でサイトを作成できます...これらはすべて純粋なOpenGLで手動で作成できますが、実装の時間と品質を比較することで、Unityオプションにまだ傾いています。 Flash もこれまで考慮されていません-ハードウェア3dアクセラレーションのリリースを待ちます。

そのような言葉は、他のエンジンの支持者の間で感情の嵐を引き起こすでしょう。 「はい、これはすべてenginename%にあります」、「%gamename%と%gamename%は%enginename%で作成され、これらすべては、ひどく使いにくいdrag'n'drop'aなしで...」

Unityに単純にチャンスを与えることをお勧めします。Unityは、その利便性、機能、柔軟性、および開発のスピードに魅了されます(少なくとも私を買収しました)。 それに...ねえ、これはブラウザの本格的なトライドです! :)

UPD: ghisguthは、 ロシア語圏のコミュニティ (かなり大きくてアクティブ)とスクリプトの倉庫、ユーザースクリプトとチュートリアルの倉庫を正しく思い出しました。

Source: https://habr.com/ru/post/J112156/


All Articles