ゲームを作るための選択肢としてのUnity3Dの長所と短所は何ですか?[閉まっている]


64

Unity3dで学校プロジェクトを行っています。彼らは前年にShivaを使用していたので(私にとっては恐ろしいことです)、このツールに対するあなたの視点を知りたかったのです。

長所:

  • マルチプラットフォーム、私はグーグルがChromeでそれを実装するつもりだと聞いた
  • 必要なものはすべてここにあります
  • スクリプト言語は、プログラミングの達人ではない人に適しています

短所:

  • マルチプレイヤー?
  • 所有権、あなたは完全に団結とその限界に依存しており、それを拡張することはできません
  • 「ゼロからゲームを作る」ということではありません
  • C ++はクールなものだっただろう

この種のツールは本当に面白いと思いますが、3人以上のプログラミング担当者が関与するプロジェクトに学校で使用する価値はありますか?この種のツールを使用することで、プログラミングに関して実際に何を学ぶことができますか(Pythonとjsは大丈夫ですが、C#は嫌いです)?1月から直接xを学習している場合でも、代わりにOgreを使用できます。


別のコンは、あなたが3Dモデリング/設計に精通している必要があることが、サイトの別の外観と2Dのゲームが可能ですので、これは...場合には思えないだろう
ジョニー・クエスト

1
@Johnny Quest本当に意図されたものではなく、使いにくいかもしれません。
スプーク

7
「C ++はクールなものだっただろう」-真剣に、何?C ++での書き込みは今では「クール」ですか?個人的に私は言語が嫌いです(すべてのタイピング、Pythonのすべての方法:p)が、それは確かに素晴らしい言語機能であり、ライブラリに関して賢明です。
共産主義のダック

1
Unityは素晴らしいエンジンですが、...留意すべきいくつかの短所:1)Unityは、やや記憶を食い物にする傾向があります。思ったよりも多くのメモリが必要です。おそらくテクスチャのようなものをキャッシュするためです。これにより、モバイルデバイスでデバッグの問題やOOMエラーが発生する可能性があります。2)ブラックボックス(ソースコードなし)を扱っているため、パフォーマンスの問題を見つけ、対処し、修正するのは困難です。シェーダーを詳細に調べ、シーンの管理方法を確認してください。
ミルクプラス

2
@milkplus:それが、私が団結は学生が学ぶべきものではないと思う理由です。例:プログラミングについて学生に教えて、最初はpythonを教えても構いませんが、ある時点で、レベルのものがどのように機能するか、基本まで教えなければなりません。人々は、そのツールが何をするかについてすべてを知っているときにツールを使用する必要があります。そうでなければ、それは起こるのを待っている災害です。Knuthの引用を、単一性のような複雑なもので常に正当化できるとは限りません。
jokoon

回答:


66

Uinty3Dの主な「長所」は、非常に高速であることです。ここではパフォーマンスについてではなく、開発速度について説明しています。あなたが持っている:

  • 統合資産パイプライン。リソースサブシステムに時間を費やす必要はありません。書き込みや修正のためのバグのあるインポートルーチンもありません。ファイルをフォルダにドロップするだけで機能します。
  • 統合レベルエディタ。レベルのツールに時間を費やす必要はありません。すぐにビジネスに取り掛かります。
  • 優れた調整とデバッグのサポート:ゲームプレイ変数はすべて、プレイ中に表示され、オンザフライでも変更できます。これらすべては、1行のコードを記述することなく実行できます。いつでもゲームを一時停止するか、一度に1ステートメントずつコードを実行します。
  • 既製のコンポーネントの非常に包括的なライブラリ。レンダリング、サウンド、物理学、コントロール-多くの「定型的な」コードがすでに書かれています。
  • スクリプトホストとしてのMono。言語としてのC#のメリットについては議論の余地がありますが、Monoの基本クラスライブラリには豊富な機能があります。コレクション、I / O、マルチスレッド、非常に表現力のあるLINQはすべて、開発を大幅にスピードアップします。

また、Unity3dは複数のプラットフォームで非常に優れています。もちろん、Windows .exeゲームを作成して、iPhoneで魔法のように「機能させる」ことはできません。しかし、Unityはそれにかなり近づいています。必要なのは、「移植」よりも「微調整」です。

もちろん、場合によってはUnity3Dは理想的ではありません。Unityに統合されたネットワークマルチプレイヤーは、一部のLANピアツーピアプレイには問題ありませんが、中央サーバーを必要とするものはすべて、すべてのネットワークコードをゼロから作成する必要があります。UnityのGUIシステムは非常に風変わりで遅いため、複雑なゲーム内GUIを作成するのは苦痛です。しかし、私が見た他のゲームGUIシステムもすべて痛いので、Unityのシステムは全体的にそれほど悪くはありません。

そしてもちろん、Unity3DはOGREのようなライブラリ/ソースコードのみを提供する「ゲームエンジン」よりも少し柔軟性が劣ります。そのパフォーマンスはまさに一流ではありません。また、スクリプトサンドボックスしかないため、巧妙な低レベルハックを使用して改善することはできません。たとえば、Unityの組み込みツリーレンダラーが何らかの理由で満足できない場合、自分で作成することはできません(まあ、できますが、スクリプトを使用しているため、おそらく遅すぎて面倒です) )。それでも、少しのパフォーマンスの低下を気にしない限り、Unityで何でもできます。

ただし、Unity3Dの最大の「欠点」はソース管理です。既に述べたように、Unity独自のAsset Serverにはかなりの費用がかかります。そして、それは本当に、本当に難しいです。分岐さえありません。Unity3Dは理論的にサードパーティのSCMシステムをサポートしますが、それらを使用することも危険を伴います。SVNコミット後にインポート設定が「魔法のように」変化するのを見ました。Perforceを使用するとすべてのオブジェクトのパラメーターが消えます。これらはすべて回避できますが、とにかく、Unity3D +ソース管理=苦痛です。

だから、実際にあなたの質問に答えるために。私はUnity3Dで最高の1、そうでない場合であると信じて最高の「小さな」ゲームのゲームエンジンの選択。特にプロトタイプ段階。

とはいえ、教育プロジェクトについて話している場合は、反対することをお勧めします。ゲームの仕組みを学ぶには、できるだけ低レベルでゲームを作成することをお勧めします。ゲームエンジンは優れたツールです。しかし、最大の利益を得るためにそれを使用するには、それらがどのように機能し、なぜ彼らがそのように機能するのかを理解する必要があります。そして、これを学ぶ最良の方法は、たとえ最終的にガタガタになっても、独自のゲームエンジンを書くことです。


3
「統合されたアセットパイプライン。リソースサブシステムに時間を費やす必要はありません。書き込みや修正のためのバグのあるインポートルーチンはありません。ファイルをフォルダーにドロップするだけで機能します。」
nkint

7
そして「Unity3Dの最大の「欠点」はソース管理です。」
nkint

2
「それは、教育プロジェクトについて話しているなら、反対することをお勧めします」
nkint

「ツリー生成」問題について。特にC#では、C ++ツリーgenを記述し、.dllに入れて、マネージc ++として扱うことができると思います。したがって、理論的には独自の「エンジン修正」にアクセスして統一することができます。
daemonfire300

Unity GUI 2.0システムは、「テキストで長方形をレンダリングする」システム以外の何物でもありませんが、非常に簡単に拡張可能です。@AffinityUIまたは他のUnity UIプロジェクトを見てください。これらは非常に軽量でオープンソースであり、UIシステムに価値があります。
daemonfire300

28

リストにコメントすることから始めます。

  • スクリプティングは、プログラマーでない人にとっての単なる利点ではありません。(良い)プログラマーであるということは、単に言語を知っているだけではなく、問題を分解して特定の方法で考える方法を知っているということです。スクリプト言語を使用すると、プログラマはこれらの高次のクリティカルシンキングスキルを活用して、同等の結果を生成するよりも短時間でより強力で興味深い結果を生成できると同時に、一部の言語(C ++頭に浮かぶ)写真に力を入れます。

  • マルチプレイヤーサポート(またはその欠如)は、プロジェクトで必要な場合にのみ問題になります。

  • 「専有的」がいかに短所であるかはわかりません。これが学校のプロジェクトである場合は、おそらく、使用するフレームワークのソースなどにハッキングするのに時間をかけたくないでしょう。また、DirectXも独自仕様です。

  • Unityのような高レベルのフレームワークやツールを使用しても、まったく問題はありません。「ゲームをゼロから作成する」ことは達成できません。「ゼロから」とはどういうことですか?あなたはまだ他の誰かのグラフィックスAPIを使用するつもりです。他の誰かのランタイム(Cでさえランタイムライブラリが必要です)。「ゲームを作る」ことは尊敬を集めるものであり、「有用なツールを使用せずにゲームを作ること」ではありません。

  • C ++が「かっこいい」ものであることは少し主観的です。この言語は、業界の専門家によって非常に頻繁に使用されますが、おそらくあなたが考える理由のためではありません。言語として、それはその年齢を示し始めており、より近代的なオプションと比較して非常に面倒なことができます。いずれにせよ、言語は単なるツールであり、優れたプログラマーは比較的簡単に新しい言語を選択できるはずです。

Unityを学校プロジェクトに使用する大きな利点は、Unityが高レベルのフレームワークであり、多くのインフラストラクチャー作業が既に用意されていることです。これにより、基盤の構築ではなく、ゲームに集中できるようになります。おそらく、このゲームを作成するためのウィンドウが比較的限られているため、既存のツールを活用できるほど、ゲーム固有のロジックやアセットを作成する必要があり、ゲームのルックアンドフィールが向上します。より完全-Unityには学習曲線がありますが、より多くのことをより迅速に処理できます。

欠点は、特にUnityのワークフローと環境が自分に向いておらず、二度と使用したくないと判断した場合、移転できない知識を含む特定のツールの学習に時間を費やす可能性があることです。。また、Unityには最も明白な2Dワークフローはありません。3Dゲームに非常に焦点を当てており、アートアセットのすべてのオーバーヘッドが関与する傾向があります。しかし、あなたが説明しているような学校プロジェクトでは、Unityはかなり良い選択だと思います。


13
「ゲームを作る」は尊敬を集めるものであり、「便利なツールを使用せずにゲームを作る」ことではありません。
nkint

2
「Unityのような高レベルのフレームワークやツールを使用してもまったく問題はありません。「ゼロからゲームを作成する」ことは成果ではありません。たとえば、Uncharted 2は社内で変更されたグラフィックスAPIを使用した場合でも、新しいテクノロジーを作成する人は可能な限り低レベルになります
。– concept3d

1
コンピュータグラフィックスの絶対的な最先端にいることを望む開発者は、最低レベルに集中し、ゲームで独自のエンジンを作成する必要があります。しかし、これはすべてのゲーム開発者の約1%と思われます。Uncharted 3が登場したときに、会社がUncharted 1のような高度なゲームを作成していた場合、おそらく既存のフレームワーク(Unityとは限りません)を使用できます。質問:Uncharted 4を作成していますか?
Katana314

9

Unityの大きな問題の1つは、ソース管理です。チームで作業していない場合、これはそれほど重要ではありませんが(おそらく)、そうではありません。

Unity Asset Serverを使用できますが、それには1)Unity Pro(1500ドル)、および2)シートごとのAsset Serverライセンス(500ドル)が必要です。何らかの教育割引が受けられると思いますが、無料ではありません。

または、UnityでSVNなどを使用できます。適切にサポートするには、Unity Proが必要です。

Unityの非プロバージョンをSVNにチェックインして、問題なく動作することを期待することはできません。GUIDをアセットなどにバインドするためのメカニズムは、厳密にはSCMセーフではありません。


マルチプレイヤー機能はかなりまともですが、正直なところ、ゲームを同梱していません。理論的には、ネットワークビューをモノに添付し、レプリケーションを適切にセットアップするためにシリアル化するものを伝えるだけです。そこから、他のピアに接続して設定するためのUI作業がいくつかあります。ただし、ほとんどはピアツーピアです。ヘッドレスモードで単一性を実行するクライアント/サーバープログラミングを行うことができるかもしれませんが、私はそれを台無しにしていません。しかし、人Aを人Bの画面上で走り回らせるだけで、非常に簡単かつ迅速に実行できます。

また、私にとってはC#はポジティブです。LINQは非常に表現力豊かです。適切な例外処理とガベージコレクションがあります。C ++よりもデリゲート、ラムダ、インターフェイスなどのはるかに最新のパラダイムがあり、汎用サポートが優れています。(編集:これは明らかに議論の余地があります。私のポイントは、C#は悪い言語ではないということです。

ただし、Unityを使用する最大のメリットは、おそらくアートパイプラインです。フォルダにPSDまたはMaxファイル(3ds maxがインストールされていると仮定)を取り込めば、インポートされます。


3
@DeadMG、はい、実際には非常によく。はい、ブースト、テンプレートメタプログラミングなどについては知っています。しかし、C#はより現代的な言語であると思います。
テトラッド

3
@DeadMG重要なのは、C#は多くのユースケースで非常に滑らかであり、C ++には多くの要望があることです。C ++がこれらのことを実行できないわけではありません。
ネイト

3
私が反対するかもしれない彼のリストで唯一のものは、「C ++よりも優れた汎用サポート」でした。
キロタン

1
@Kylotan "for(vector <vector <int >> :: iterator iterator = score.begin(); iterator!= score.end(); iterator ++){" VS "foreach(スコア内の変数スコアセット)" .. .yup、私はC#です。
Katana314

3
@ Katana314もちろんC ++ 11では:for ( auto x : xs )
エリック

6

更新:Unityは無料版でもこれらの機能をすべて提供するようになったため、以下の回答は無視してください。


注目に値するもの-Unity3Dの無料版を使用している場合、後処理シェーダー(ブルームなど)や、さらに重要なこととして、ダイナミックシャドウを含むいくつかのエフェクトを使用できなくなります。これらは明らかにプロジェクトのワークフローに大きな影響を与えませんが、エンジンで無料で達成できるものに制約を課します。


1
これはもはや正確ではないため、更新または削除する必要があります。
マイケルハウス

@ Byte56ありがとう。将来的には、コメントを残すことなく古い投稿を自分で更新できるようになるはずです。
マイケルヨンキン

この回答を削除するためにフラグに応答していましたが、正確ではなくなったと言うように更新することを提案していませんでした。正確に更新するか、削除することをお勧めしました。現在、この回答は、Unity 3Dの長所と短所を選択肢として回答していません。あなたはそれを保存する方法を見つけることができると確信しています。(Unityが現在提供するすべての機能と無料ではない機能をすべて含むように更新できます)。
マイケルハウス

3

ネバーマインドの答えは非常に徹底的にカバーしていますが、ソース管理側に物事を投げ込むために、実際にいくつかの落とし穴を探すことを学ぶと、それほどひどいことではありません:

  • まず最初に、はい。AssetServerは高価であり、基本的な使用以外は非常に恐ろしいです。Unityに統合されていることの大きな利点は、使いやすさと単純なプロジェクトで価値があることですが、より大きなもの(通常はASの予算があるプロジェクト)には十分な柔軟性がありません。
  • 外部バージョン管理に移ると、メタファイルは他の資産と同様に扱われ、常にバージョン管理に追加/更新される必要があることを認識することが重要です。これを行わないと、Nevermindの設定が消えるシナリオで発生した可能性があります。
  • 最後に、Unityのバージョン管理システム(Asset Serverを含む)と連携することで、バイナリアセットを扱う際にチームのコミュニケーションが不可欠になり、お互いの作業を踏みにじることがなくなります。

これらの点についてさらに詳しく知りたい場合は、かなり大きなUnityプロジェクトでの経験に基づいて、Unityでgitを使用することについて少し前に投稿しました:http : //goo.gl/ivJVR


さて、ネクロポストを失礼します。私はこれが2011年に尋ねられた(そして答えられた)ことに気付いた!今週、stackexchange gamedevニュースレターに掲載されたので追加しました。
フリントザ

SEには「ネクロ」のようなものはありません。適切な例、私のコメント。:P
サイファー

2

実際に。マルチプレイヤーがサポートされています。ゲームを実行するサーバーを選択するだけです。

現在市場に出回っているのは「SmartFox Server」で、いくつかの異なるパッケージを提供していますが、それらはすべて(ある程度)無料です。各パッケージで特定のプレーヤー数を「無料」で使用できるため、特定のプレーヤー数を計画している場合のみ無料です。

アップグレードすることを選択した場合、インディー開発者にとって価格はかなり急です。だから...長い目で見れば、多くのプレイヤーがサーバーにいる場合、Download.comのようなサイトに無料のフルゲームとしてアップロードするのではなく、ゲームに課金する必要があります。これは一部の人にとっては問題にならないかもしれませんが、私たちのほとんどは、サーバーのために2,500ドルを手に入れる余裕はありません。

たとえば、SmartFox proでは20人のプレイヤーが無料で利用できます。アップグレードしたい場合は500ユーロかかります。これは米国ではもう少し多く、600〜700であり、100の接続が可能です。

次のアップグレードは、最大500人のプレイヤーを対象とし、1000ユーロですが、... 1000を支払う必要はなく、差額を支払います。

したがって、1000全体ではなく、さらに500ユーロを支払うだけで済みます。最後のアップグレードでは、2,000ユーロで無制限の接続がサポートされます。これはほぼ3,000ドルです。

したがって、500の接続からアップグレードする場合は1000ユーロ、100の接続からアップグレードする場合は1,5000ユーロ、そしてもちろん2,000ユーロを無料からアップグレードします。

また、このサーバーはUnityを使用してセットアップするのが非常に簡単で、Youtubeで正確に行う方法のチュートリアルビデオが多数あります。


2005年以来、SmartFox Serverを広範囲に使用してきました。非常に安定しており、成熟しています。
PippoApps.com
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.