終了しました。この質問は
トピック外です。現在、回答を受け付けていません。
コメント
回答
はい。このリストで証拠を確認してください。これらは、軽量Javaゲームライブラリ(LWJGL)を使用してJavaで作成されたゲームです。これは低レベルのフレームワークであり、高品質のグラフィックスにはOpenGLを、サウンドにはOpenALを提供します。また、入力APIも提供します。これらを使用すると、Javaでのシリアスゲーム開発を非常に簡単に始めることができます。
現在、Javaでの趣味プロジェクトとして2番目の3Dゲームを書いていますが、とても気に入っています。以前はC ++でゲームを書いていましたが、Javaに切り替えた後は元に戻せません。 Javaで複数のオペレーティングシステムをサポートするのは非常に簡単です。たとえば、Windowsで1年間開発した以前のJavaゲームは、LinuxとOS Xですぐに動作し、バグは1つだけで、これらのプラットフォームで何もコンパイルする必要はありませんでした。
一方、Javaではいくつかの問題があります。
- ガベージコレクター。他の人が述べているように、非決定論的なメモリ管理は問題であり、それを念頭に置いてコーディングする必要があります。
- サードパーティライブラリの欠如。利用可能なライブラリのほとんどはJavaをサポートしていません。一方、Javaからこれらのネイティブライブラリを呼び出すオプションも常にありますが、そうするのはもっと手間がかかります。人気のあるライブラリで利用できるJavaポートまたは既製のラッパーもあります。 div id = “5f0427bdcb”>
JBullet-Bullet PhysicsLibraryのJavaポート。一方、Javaには巨大なクラスライブラリが組み込まれているため、ゲームに関係のないサードパーティライブラリの必要性が少なくなります。ライブラリの欠如は私にとっては問題ではありませんが、他の人にとっても問題になる可能性があると想像できます。
Javaは一般的なゲーム機ではサポートされておらず、Javaからのライブラリに簡単に切り替えることはできません。私の知る限り。一方、人気のモバイルプラットフォームであるAndroidは、何らかの形のJavaを使用しています。これもオプションですが、「PCとAndroidデバイスの両方で機能する同じJavaコードを除いてはいけません。
小さなコミュニティ。ほとんどのゲームプログラマーはC ++を使用しており、私の経験ではJavaを嫌うことがよくあります。ドン」他の人から同じくらい多くの助けを得ることを期待します。 C ++スキルなしでゲーム開発の仕事に就くことを期待しないでください。
回答
そうではありません。ここに
次に、Javaの既存のライブラリに関しては、C ++用の事実上すべてと比較してほとんどありません。
次に、言語としてのJavaは単純です。ゲーム開発には適していません。たとえば、GPUバッファを扱っている場合、Javaは、それらが正しくロック、ロック解除、または破棄されることを保証するのに役立つ言語機能を提供していません。C++さらに、パフォーマンスの問題があり、GCは非決定論的であり、ゲームにとって非常に悪いです。
インディー以外のゲームでかなりの時間を費やしたことはありません。実行前にネイティブコードにコンパイルされなかった言語、そしてそうするインディーゲームでさえ珍しいです。ですから、今の私の信念は、それは単純にできないということです。
また、Javaを今も学び、改善し続けると、後で判明します。 C ++を学ぶ必要がありますが、切り替えが難しくなりますか?
はい、絶対にそうなります。 JavaとC ++は、表面的な構文の類似性にもかかわらず、大幅に異なります。 Javaの経験は、C ++を学ぶときは事実上何の意味もありません。
グラフィックスよりもゲームプレイ は実行可能な選択肢であり、TelarriaやMinecraftなどのゲームの成功に見ることができます。ただし、srsグラフィックを作成する場合は、Javaでは実行できません。
コメント
回答
ですから、私は真剣に取り組んでいますゲーム開発、Javaはまだ実行可能な選択ですか?私は何度もC ++を学ぼうとしましたが、言語があまり好きではありません。理由はよくわかりませんが、通常、学ぼうとするとトピックを把握できません。
Javaを選択した理由が、C ++を理解できなかったためである場合、Javaプログラムは高品質のグラフィックスを実現するのに十分な速度ではありません。高水準言語を使用するのは、低水準言語を理解できなかったからではなく、生産性が向上するからです。
ゲームを書くのはまったく悪い考えではないと思います。 Java、特にゲームが単純な場合、Javaをクラッチとして使用すると、すぐにJavaのパフォーマンスの問題が発生します。
つまり、Javaを真剣に受け止めて、真剣なゲーム開発を行うことができます。これには、重いグラフィック、遅れのない高速ゲームプレイ、そしておそらくコンソールへの簡単な切り替えが含まれますか?
-
ヘビーグラフィックス:可能ですが、Java / LWJGLでも、C ++ / GLの場合と同じことを実行します。つまり、GPUバッファーにバイトを書き込むか、 Minecraftのように非推奨の表示リスト。メモリ管理を理解していないと、これも正しく実行できません。
-
ラグのない高速ゲームプレイ:どの言語でも簡単な作業ではありません。「どちらの方法でも、考えずに自分を撃つ可能性が高くなります。
-
いいえ、Javaはコンソールで使用できなくなります。
コメント
回答
経験者経験豊富なプログラマーは、一般的に多くのプログラミング言語を知っています。1つをよく知っていれば、追加のプログラミング言語を学ぶことはそれほど難しくありません。ただし、C ++を第一言語にすべきではなく、おそらく第二言語にもすべきではないことを強くお勧めします。
これは、C ++が重大なランタイムエラーチェックを行わないことで効率が大幅に向上するためです。たとえば、Javaで配列の末尾から要素にアクセスすると、常に例外がスローされ、プログラマに何が間違っているかが正確に通知されます。C ++では、運が良ければすぐにクラッシュする可能性がありますが、非常に頻繁に他のデータをサイレントに破棄し、エラーはかなり後になるまで表示されません 。
今のところJavaを使い続けることをお勧めします(または、必要に応じてC#に切り替えます)。これにより、C ++を使用するよりも迅速に作業を行うことができ、PCでのパフォーマンスが問題になることはありません。
より安全な言語でいくつかのプロジェクトを完了した後、C ++の学習について考えてください。 C ++は、ほとんどのプロのゲーム開発ジョブに必要なものです。
C#/ XNAを除いて、コンソールに書き込んだゲームを取得するには、少なくとも会社を設立する必要があります。
コメント
回答
免責事項:これはあなたの質問に正確に答えるものではありません。しかし、私はあなたが興味を持っているかもしれないいくつかの点に(簡単に)言及しようとしました。
C ++について多くのことを目にする理由は、C ++が依然として業界標準であり、コンソールなどで最も一般的な言語であるためです。
Javaはあまり使用されていません。 Minecraftは、Javaで大きくなった非常に人気のあるゲームです。ただし、グラフィックはそれほど優れていません。SpiralKnightsも悪くはありません。Javaで作成されており、重要なグラフィックが含まれています。
Javaが好きな場合、C#の構文は非常に似ていますが、 C ++との相互運用-必要に応じてC ++で低レベルの処理を実行できます。UnityはスクリプトにC#を使用でき、XNAは優れた選択肢です。
繰り返しになりますが、Javaは広く使用されていません。スタイルと構文については、「C#は非常によく似た、非常に快適なコーディングエクスペリエンスであることがわかると思います。
夢が実現することを願っています。これは、とても楽しいことです:)
コメント
のコーディングと実装が不適切で、修正中です…ゆっくりと。 C#は、ほとんどのJavaパフォーマンスの問題なしに、マネージドメモリのすべてのアップを提供します。欠点は、C#がゲームとアプリケーションの両方でMicrosoftを中心に据えていることです。
@EfEs:壊したくないのですが、マネージドメモリはゲームにとってひどいです。 XNAでゲームをコーディングする人は、C ++でコーディングする人よりもメモリの管理に多くの時間を費やす必要があります。 GCの非決定論的な性質は、事実上すべてをプールし、ペストのような割り当てを回避する必要があることを意味します。言語の使用方法ではありません。
この回答は100%正確であることを意図していませんでした。 ;漠然と知っている例だけを引用しました。 DVに気軽に参加してください。
@DeadMG C ++が進むべき道だと知っています。ゲームでは、C#がJavaよりも優れていることを説明しようとしていました。
長い間C#でした。開発者(ゲーム開発者の考えではありません)私は、プーリングとメモリ管理は、不適切に設計されたシステムにとって大きな問題であると信じています。私が知っているC / C ++の考え方と開発方法を持っている人は、Java / C#のような言語で使用しなければならないマネージドメモリ、設計、アーキテクチャパターンに息を呑むことはほとんどありません。私が言おうとしているのは、C / C ++の手法や製品が悪いということではありませんが、構文に関して単純な言語(JavaやC#など)を使用している場合でも、ゲームを正しく設計するには多くの経験が必要です。
「Java viable ゲーム開発者向け」は明らかです。任意のプログラミング言語を使用してゲームを作成できます。これは、がである必要があるという意味ではありません。
おそらく、C ++をオフにするものそのものです(低レベルのメモリ管理、ガベージコレクターなし、ポインター、配列としての構造体などに注意を払う必要がある)は、コンピューターを悪用したい場合に学ぶべきことです。最も効率的なリソース。コンピュータのリソースを最も効率的に活用している場合、ゲームは最適に実行されます。
Javaは、実行速度を低下させるいくつかの処理(配列境界チェックなど)を実行します。この最適化されたJavaPerlinノイズのサンプルコード、著者は「(配列アクセスはメンバーアクセスよりもはるかに遅い)」とコメントしました。この種のことは、C ++のバックグラウンドから来るとかなり直感に反します。 Java、そのようなものです。
弾丸をかわすのをやめ、C ++を学び、それを使用すると言います。
これはあなたの質問に答えません。グラフィックとコンソールの問題は、あなたが非常に考慮する必要があるもののようです。また、GCはパフォーマンスに影響を与えます。しかし、私が書いていること:
大規模で複雑なオブジェクト指向プログラムを書いている場合、JavaではC ++よりも5倍速く書くことができます。また、メンテナンスが非常に簡単になります。私は切り替えました(確かにゲーム以外のソフトウェアの場合)、そして私の生産性は急上昇しました。もう1つの優れた代替手段であるC#は、Javaよりも多くの機能があるため、習得が困難です。C#を知っていると、Javaよりもさらに高速にコードを記述できます。多くのトリックがあります。しかし、それらのトリックを見つけました。メンテナンスが困難になる可能性があります。次に、Sunライブラリと独自の古いコードを支援するJavaドキュメントがあります。 C#にはこれに似たものはありません。
Javaで大規模なヘアリーゲームを行い、言語は完璧でしたが、グラフィックは初歩的で、10分の1秒が永遠であったシューティングゲームではありませんでした。また、後で多くのことを追加する予定ですが、ほとんどの人はまったく新しいゲームを作成するだけだと思います。
ゲームの設計に重点を置いて、コンピュータサイエンスの正式な教育(理学士?)ができるようになるまで、最もよく知っている言語で行う必要があります。 。ゲームを使用して奨学金を取得できる可能性があります。特に、「Javaの正式なトレーニングなしでこれを行った」と言えば、
最新のJVM、オラクルのものでさえ、人々がここで提起した懸念に対処するための多くの機能を備えています。さまざまなガベージコレクターを使用して、より決定論的なガベージコレクターの動作を取得できます。私は3Dライブラリについての豊富な経験はありません-Java3Dについてはほんの少しです-しかし、ここでは誰もそれらについて不満を言っていないようです。エスケープ分析により、ロックの省略と非常に短命のオブジェクトのはるかに高速で無視できる割り当てが可能になりました。
問題は、C ++のJavaを選択するかどうかにかかわらず、並行性を適切に使用する方法を学び、メモリ管理を十分に理解する必要があることです。結局のところ、malloc
は、new
と同じくらい簡単に失敗する可能性があります。 C ++のツールがどのようなものかはわかりませんが、Javaのプロファイリングツールはかなり使いやすく、無料で、IDEと統合されています。これらのツールを使用して、パフォーマンスの問題を追跡し、学習 emすることができます。 >。
コメント