Unityや他のツールよりもC / C ++の方が好きです。ゲーム開発者にとってこれは非常に大きなダウナーですか?[閉まっている]


35

学校でUnityを使用した大きなゲームプロジェクトがあります。私たちのうち12人がそれに取り組んでいます。私の先生は、生徒を教えるのに重要なツールであると確信しているようです。なぜなら、生徒を高レベルから低レベルに見せるからです。

私は彼の見解を理解することができ、私は疑問に思っています:ゲーム開発会社で団結はそのような重要なエンジンですか?彼らは他のものを使用する余裕がないので、それを使用している多くの企業がありますか?彼はUnityがゲーム制作の大きなプレーヤーであるように話しているが、私はそれができるだけ早くゲームをしたい小さなインディーズゲーム会社に適合すると見ている。

Unityは業界でそれほど重要だと思いますか?C ++スキルの価値を危険にさらしていますか?

私はUnityが好きではないということではなく、単にUnityで何も学んでいないというだけではなく、OgreまたはSFMLで少しのステップを達成することを好みます。

また、C ++の練習問題もありますが、それらは理論に基づいた練習にすぎず、あまり意味がありません。


9
C ++とOOPのポイントはオブジェクトの再利用です。Unityは、その典型的な例であり、クロスプラットフォームの移植性を示しています。XBox、iPhone、Wiiでゲームを起動するために必要なすべてのツールを提供します。C ++ですべてをゼロから書き直したいと真剣に言っていますか?
スティーブン

2
絶対にそうではない、それは私が言いたいことではありません。付属のガベージコレクト言語が好きではないこと、そしてコードがプロプライエタリであるためコードを変更できないという事実を言っているだけです。 。あなたのポイントは有効ですが、私があなたに従うと、企業は単にUnityに切り替えるのではなく、以前のエンジンを再利用することもできます。Unityを使用すると、本当に変更できないものにこだわることになります。そのようなツールについて考えるとき、それは常に私にとって最大の落とし穴です。独自のエンジンにはそのような問題はありません。
-jokoon

2
さて、あなたはできますが、(他のほとんどのプロソースライセンスのような、高価である)ソース・ライセンスを取得すると仮定するとユニティを変更します。また、かなり頻繁に更新されるため、機能セットの点では実際には静的ではありません。
テトラッド

これは基本的に「使用するテクノロジー」の質問です。また、より議論/意見志向です。悲しいことに、私は二度目の近くに投票することはできません...
bummzack

回答:


34

Unityは、このコンテキストで完全に有効なソリューションです。12人の人がいて、そのほとんどがまだC ++を学習し、それを使用して大規模で複雑なゲームアプリケーションを作成しているところを想像してください。デバッグだけで費やした時間で、おそらくUnityで別のゲームを書くことができたでしょう。

C ++の使用方法を知っていることは重要ではありません-特に「主流」のゲーム業界に参加する予定の場合は重要です。しかし、おそらくこの場合、あなたのインストラクターは正しいです-ゲームの構築について考え、それを楽しんでいる方法の学習経験としてこのプロジェクトを使用してください。その過程で、演習を使用してC ++のスキルを磨くか、その間にSFMLまたはその他の基本的なフレームワークを使用して小さなゲームを作成することもできます。

すべてが完了すると、多くのことを学んで、おそらくより優れたプログラマーになり、次のプロジェクトをC ++で自信を持って取り組むことができます。


2
興味深いことに、純粋にC ++を教えており、C ++の学習過程にあるにもかかわらず、学生がゲームエンジンとゲーム全体をゼロから構築することを期待している学校があります。もちろん、実際にスキルを練習することは、あなたがそれを学ぶ方法です(大規模な学期や1年にわたるプロジェクトによるクラス講義や小さな宿題プロジェクトではありません)。Unityなどのツールを非常に迅速に取得できるプログラマー、またはその他のエンジン。簡単なことは後で問題にならないので、生徒に難しいことを学ばせることをお勧めします。
ショーンミドルディッチ

すべてのゲーム開発がプログラミングされているわけではなく、Unityを使用することは必ずしも「難しいことを回避する」とは限りません。それは単にゼロから実装することとは異なるハードなものを強調するだけです。プログラミングではなくデザインを提供しました。ゲームがゼロから実装された場合、私ははるかに原始的な「プログラマーアート」を期待し、キャラクターやプロットはありません。
ローズクランズ

43

業界では、主に小規模企業でUnityの人気が高まっています。しかし、それは優れた教育環境です。これは重要な教育ツールですが、主流の企業では特に一般的ではありません。あなたがそれを好まないことは大丈夫です。

ただし、プログラミングの学生の間で混乱が頻繁に見られるので、ここで注意してください。「C ++スキル」は、長期的にはあまり役に立ちません。求めるべきは「プログラミングスキル」と「デザインスキル」です。プログラミング言語の概念とソフトウェアシステムの組み立て方を理解していれば、言語は重要ではありません。私は自分自身を素晴らしい開発者とは考えていませんが、基本を理解しているので、1、2日で新しい言語を習得し、有用なコードを作成できます。

Unityを学習することで、C ++の能力が向上します。


GameforgeとBigPointは世界をリードする企業であり、Unityを使用しています:)
daemonfire300

1
非常に良い答えだと+1。ゲームエンジンの学習は、学校にとって非常に重要なことです。なぜなら、99%の時間をゼロから作成することはないからです。既存のエンジンに飛び込み、その部分を認識し、データフローを識別することができることは、すべて非常に重要なことです。上記のように、言語は99%のC / C ++にもかかわらず重要ではありませんが、エンジン、またはより一般的には誰か他の人のコードを理解できることは、あらゆるプログラミング分野で非常に貴重なスキルです...特にビデオゲームであるタイムクリティカルな高ストレスの言葉:)
ジェームズ

1
私はこの答えに反対します。私にとって、スクリプト作成者とプログラマーには違いがあります。Unityの開発者はプログラマーであり、Unityのユーザーはスクリプト作成者です。結果は同じですが、ゲームを作成しますが、長期的にはUnityの使用が問題になる可能性があります。ゲーム業界は豊かで、Unityのようなツールを使用できるようになりましたが、私にとってはコンピューターが高速であるためです。たくさんのコードを投げることができます、それは動作します。Unityは明らかに開発速度のために作られています。
jokoon

14
jokoon:スクリプトとプログラミングの違いは何ですか?Unityのパワーユーザーは、シェーダーを作成し、レンダリング順序を管理し、AIコードを作成します。Unityの「スクリプト」はコンパイルされており、必要に応じて、女神に正直な低レベルのコーディングで拡張できます。Unityの優れたコーディングは、Unity以外の優れたコーディングと同じ原則に従います。2つのパラダイム間に魔法のような違いはありません。
グレゴリーエイヴリーウィアー

9

彼らは他のものを使用する余裕がないので、それを使用している多くの企業がありますか?

はい、しかし、「アフォー」は単なるドル価値以上のものです。

はい、Unity Proが請求する費用で提供する機能セットは、特にタイトルごとのライセンスではなくシートライセンスであるという事実を考慮すると、ばかげています。

しかし、その上で、それは非常に使いやすいツールです。アーティストやデザイナーにアートパイプラインの使用方法をトレーニングするのに時間をかけているわけではありません。「テクスチャとモデルをドラッグするだけでいいのです」と言うのは簡単です。

それに加えて、それは実際にあらゆる種類の規則性でブラウザーで3Dを実行できるようにする非常に少数のツールの1つです。固定機能からDX9 +、MacおよびWindowsまで、ほぼすべてのシェーダープラットフォームをサポートします。成長する「ブラウザベースのゲーム」市場をターゲットにしたい場合、その技術だけでも非常に貴重です。

プログラミングの側面から言うと、Unityから得られるのは、コンポーネント設計(しっかりと継承側で重すぎる独自のC ++エンジンのローリングと比較して)をしっかりと把握することと、試すための非常に迅速で視覚的な環境です。ゲームコードを出力します。Unityを使用して優れたデザインプラクティスを学び、将来のC ++エンジンに引き継げることを願っています。

もちろん、ある言語を別の言語よりも優先することは問題ありません。個人的には、C ++よりもC#の方が好きです。しかし、実際に使用する言語は、プロジェクトの要件によって他の何よりも大きく左右されます。開発者は、何らかの理由でツールや言語が気に入らないため、市場から締め出されたくないので、ファンボーイになる余裕はありません。

また、第2言語を実際に学習すると、ほとんどが新しい構文とパラダイムを拾っているだけであり、通常、新しいツールをツールベルトに追加するのはそれほど難しくありません。はい、C ++を学習して理解する必要がありますが、高レベルでは最初に優れた設計を理解する必要があります。


明確化:Unity Proのライセンスは、普通の古いUnityと比較して価値があるということですか?あなたのコメントは私には少し不明瞭でした。
カイルC

7
私は無料のライセンスを使用していませんが、1500ドル/シートのライセンスは、他の商用エンジンライセンスと比較して非常に安価です。
テトラッド

現時点では、無料版を使用しても問題はありません。わずかな制限があります。
XandruCea

9

コアの問題は、私が見ることができるものから、C ++またはUnity3Dではなく、あなたは、高レベルのソリューションまたは低レベルのソリューションが必要です

低レベルのソリューションは、入力の処理、メモリの管理、モデルのロードなどのプロセスで汚れるソリューションです。高レベルのソリューションは、Unity3Dのような1つのきちんとしたパッケージを取得することです。

私にとって、Unity3D(または他のゲームエンジン)を使用するかC ++を使用するかは、ゲームとプロジェクトの目標に依存します。

  • 開発時間を短縮する必要がある場合や、ゲームのパフォーマンスが集中していない場合、またはグラフィック/計算パフォーマンスの上限に達していない場合は、Unity3Dを使用します。ゲームプレイに集中したい場合で、Unity3Dが提供するデフォルトのツールで問題ない場合は、Unity3Dの使用を検討できます。

  • C ++と他のライブラリを使用すると、開発時間が長い場合、ゲームに必要な計算能力やグラフィック能力が増えるか、Unity3Dに組み込むことができないテクノロジーが採用されます。

Unity3Dの良いところは、実際の開発(C#またはJavaScript)を反映したスクリプト言語をまだ採用していることです。学んだOOPとソフトウェアエンジニアリングの概念(シングルトン、ファサード、ステートマシン、デコレーター、コンポジション)をUnity3Dに適用できます。リソース管理、シーングラフ、モデルの読み込み、レンダリング、シーンの保存などのクッキーカッタープロセスを処理するのに役立ちます。さらに、Unity3Dが提供しない必要な機能があれば、できます。 DLLコーディング。

それはC ++をどこに残すのですか?C ++は言語であり、C ++で行うことができる多くのプログラミングの概念があり、Unity3D、メモリ管理、またはテンプレートを使用できます(Unity 3.2では、言語仕様が改善され、クロージャーをカバーするようになりました)。

それで、私が述べたように、それは本当にC ++対Unity3Dではありません。Unity3Dと比較して、「C ++ plus libraries / SDK or roll your own engine」のようなものです。それはあなたの目標と目的に依存します。ハイエンドゲームや、レンダリングパイプラインや入力を制御する必要があるゲームの場合、C ++に加えて、ボンネットの下で混乱させるエンジンを使用することもできます。そうでない場合は、3Dゲームのデフォルトの選択肢としてUnity3Dを使用します。

ただし、Unity3dの知識は内部的な経験ではありませんが、ゲーム開発の全体的なプロセスを学ぶための出発点として適しています。たとえば、おそらくレンダラーを作成してOpenGLでモデルをロードするには、学期分の勉強が必要になり、さらに基本的なシーングラフと入力が必要になります。Unity3Dで1日以内に完了します。


またはOgre3dで動作します!
jokoon

Ogre3Dを使用して最後に作業したのはずっと前のことです。ゲームを立ち上げるにはUnity3Dよりも多くの作業が必要だと思います。また、内部の仕組みがどのように機能するかを覗くには良い中間点です。
-Extrakun

これに+1。C / C ++とUnity自体は、リンゴとオレンジのものなので、好むことはできません。ただし、C / C ++が提供する低レベルの開発、またはUnitが許可する高レベルの開発で作業するという考え方がお勧めです。
ティム・ホルト

8

いいえ、Unity3DがC ++スキルを危険にさらすことはありません。実際、C ++を知ることは、ゲームプログラマにとって非常に重要です。

Unity3Dは、ゲーム開発のための本当に素晴らしいツールです。私は自分でそれをとても気に入っており、ほとんどのゲーム、特に小さなチームに推奨しています。ただし、Unity3D自体はC ++で記述されています。C ++(およびその他の低レベルのものも)を知って、それがどのように機能するかを本当に理解する必要があります。

Unity3Dを使用している場合でも、C ++のスキルと関連する原則とアルゴリズムの低レベルの理解によってのみ、Unity3Dを最大限に活用できます。ちなみに、これは他のゲームエンジンにも当てはまります。

そして、本当に良い仕事をするために、選択したプラットフォームからパフォーマンスの最後のビットを絞り出し、できるだけ多くの最先端のエフェクトとアルゴリズムを詰め込むために、C / C ++以外は使用できません。アセンブラーのビットで、おそらく。


これは私が+1を待っていた答えです:]
ノタベネ

3

私の知る限り、ターゲットプラットフォームに依存しますが、AAAゲームとコンソール(XBOX、Wiiなど)ゲームは通常、パフォーマンスを最大化するためにC ++になりますが、ブラウザベースのゲームを書いている場合、Unityも頻繁に使用されます中古。

しかし、あなたの質問については、Unityのようなツールを使用することで、作業するための大きな標準化されたフレームワークを提供するだけで、半年のプロジェクトで半完成のプロトタイプとかなり肉付きのあるゲームの違いを生むことができます。


3

私はペンシルベニア大学のコンピューターグラフィックスとゲームテクノロジーのマスタープログラムに行きました。そこでは、C ++、OpenGL、CUDAなどのプロジェクトを使用して、すべてのプロジェクトを最低レベルで行いました。さまざまな形式のベジェ曲線を表すIK。ご存知のように、プログラミング、線形代数、および微積分の専門知識を活用する、実際にベースラインのものです。

次に、Unityをダウンロードしましたが、作成に費やしたすべてのものが、誰でも使用できるこの無料のスイートに詰め込まれていることがわかりました。

私はそれで悩まされましたか?確かに少しですが、Unityのようなツールを使用する場合、学校からそのような理解を持っていると、はるかに危険になることがわかりました。私は現在、ゲームに取り組んでおり、1年以内にゲームをコンセプトから市場に投入していますが、「数学のこと」に関しては今でも頼りにしています。あなたへの私のアドバイスは、動きを通過することです。業界に参入するとき、あなたは絶対に貴重な存在になるでしょう。


(理論的には)バッジを取得できます。:)
サイクロプス

フォーラムのように質問が古くなり、「死ぬ」ことはないため、ここには壊死はありません。:)遅い回答は常にOKです。
-doppelgreener

0

私は返事が遅れるかもしれませんが、これはこの混乱を抱えている人々の一部を助けるでしょう。

当初、私はc ++プログラマーであり、以前はサードパーティのエンジン(たとえば、ユニティ)を使用することを嫌っていました。

団結を試みた後、ゲーム開発者に必要な次の事項に出会いました。ここでは、団結のためだけにではなく、ハイレベルな視点で進むことの利点をリストしています。

  1. 高レベルの設計方法を理解することは、低レベルの最適化を気にするよりも重要です。
  2. アーキテクチャのエンティティシステム(コンポーネントベースのアーキテクチャ)を備えたエンジンは、このアーキテクチャが正確にどのように役立つかを学習するのに役立ちます。
  3. 最新のテクノロジー(少なくとも用語)をご存じであり、グラフィックスに関して業界の最新情報をお届けします。これが、統一を試みる主な理由です。
  4. さまざまなリソースインポーターツールに費やす時間をスキップします(もちろん、自由時間でもっと楽しくなるので、C ++で独自の3Dインポーターを書くのが大好きです)

上記は、高レベルのエンジンを選択する理由の一部です。しかし同時に、完璧なゲーム開発者にとって最も必要で便利な言語であるC ++の学習をやめるべきではありません。

最初に高レベルでの視覚化を理解し、Unityでいくつかの簡単なプロトタイプを作成し、その経験を生かしてC ++で優れたゲームを設計します。

私は団結してより高いレベルで良い経験を得たので、すぐに私はC ++に戻ります:)

がんばろう!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.