ゲームにJavaアプレットを使用してはならない正当な理由はありますか?


9

マルチプレイヤーのブラウザベースのゲームを作りたいです。アプレットを使用することの良い点は、クライアントとサーバーを同じ言語(java / closure / scala / etc)で作成できることです。私はhtml5とjavascriptがあることを知っていますが、サーバー側のjavascriptは、jvmプラットフォームとブラウザサポートほど成熟していないので、まだ不安定です。

アプレットは広く使用されていないようですが(Runescapeを除く)、それらが不適切である理由はありますか、それとも、幼少期に開発した評判が悪いためですか?


1
たぶん、JavaでWebゲームをやっていて、Flashを好む人はほとんどいないからでしょうか?
共産主義者のダック

現在、Javaは(Flashと比較して、あるいはJavaScriptと比較して)ブラウザーで簡単に利用できなくなっており、ターゲットユーザーがJavaをインストールしていない可能性が十分にあります。ただし、クライアント側の技術に関係なく、サーバー側でJavaを必要なだけ使用できます。「サーバー側のjavascriptはjvmプラットフォームほど成熟していない」という議論は理解できません。
falstro 2011年

回答:


9

RuneScapeMinecraft、その他の小さなJavaアプレットゲームで実証されているように、これらは明らかに不向きではありません。ハードウェアアクセラレーション3Dグラフィック(LWJGLJOGL)用のライブラリもあります。それはゲーム開発コミュニティで人気のある言語ではありません。

ただし、サポートされているプラ​​ットフォームを考慮する必要があります。WindowsとLinuxには優れたJavaプラグインがあり、Macにはまともなプラグインがあります(私の経験ではSafariでフルスピードでのみ動作します)が、iPadやGoogleのChrome OSなどのプラットフォームは、そうではないため完全に見落とされ、おそらくそうならないでしょうこれまでに、Java VMがインストールされています。


さらに、ターゲットマーケットについても検討する必要があります。Minecraftプレイヤーは明らかにjava.comへのアクセスとインストールを処理できますが、「インターネットエクスプローラーの群衆」の多くはそうではないかもしれません。
Jari Komppa、2011年

ただし、Minecraftは、これらのユーザーが実行可能バージョンをダウンロードできるという点で優れています。これには、JREが含まれており、そのようなインストールは必要ありません。それはちょうど作品™。
Ricket

2
私は、Javaがユーザーに何かをインストールすることを強制せずにブラウザでGPUにアクセスする優れたソリューションだと思います(80-85%のユーザーはJavaをインストールしています... Explorer noobsも含めて:))
Notabene

6

私はJavaを使用してゲームを作成し、C ++を使用してゲームを作成しました。Javaの長所と短所を意識している限り、Javaは問題ありません。私にとってのJavaでのプログラミングの2つの大きな利点は、開発のスピードとデプロイ可能性/移植性です。コンパイル時間はVC ++よりもはるかに高速です(XCodeやClangについてはまだ話せません)。つまり、問題をはるかに迅速に解決できます。また、Eclipseは常にコンパイルされているので、タイプミスのエラーを減らすことができます。私は、他のシステムやコンパイラで「そのまま」機能するC ++コードを書いたことがありません。Javaでは、これが標準です。

一方、Javaには大きな欠点があります。効率は、Javaを使用しない理由としてしばしば示されますが、特定の方法でコーディングする限り、Javaは非常にうまく機能することがわかりました。問題は、コーディングする必要がある特定の方法が、多くのJavaの人々が優れた設計と考えるものに反することです。
Javaの心臓部は「ガベージコレクター」であり、メモリ管理システムです。効率的なコードを書くときは、あらゆる言語でフレームごとに動的割り当てを行わないようにする必要があります。これは特にJavaに当てはまります。ずさんなnewingのためにガベージコレクターをオフに設定すると、スムーズなフレームレートにさようならとキスできます。第二に(そして最も厄介なことに)Javaはファーストクラスのユーザーデータ型をサポートしていません。Javaのすべてのユーザーデータ型は、本質的にはクラスへのポインターとしてインスタンス化され、ヒープに割り当てられます。これは、Vector3オブジェクトの配列のようなものを持たせたり、それらをメモリ内で同時に持つことができないというキャッシュの同時実行性にとってはひどいです。Vector3ポインターの配列を持つことはできますが、それはまったく同じではありません。通常、代わりにプリミティブ型の大きな配列にオフセットを使用する必要があります。


3

WebゲームのJavaアプレットに問題はありません。私はJavaでオープンソースのローグライクゲーム(Tyrant)を書きましたが、アプレットとして非常にうまく機能します。

私の経験におけるJavaのいくつかの大きなプラス点:

  • 移植性は非常に優れています。Tyrantの複雑さを考えると、Windows、Mac、Linuxでまったく同じコンパイル済みコードをうまく実行できたことは非常に印象的でした。

  • ブラウザの癖について心配する必要はありません。

  • 少し賢いので、同じコードをアプレットとしてもスタンドアロンのデスクトップアプリケーションとしても実行できます。

  • 最新のJVMを想定すると、パフォーマンスは優れています。

  • オープンソースライブラリ/ APIなどの優れた配列に関するJavaの通常のプラスポイントすべて。

次の点に注意してください。

  • ローカルファイルシステムにデータを保存したり、ネイティブライブラリにアクセスしたりする場合は、アプレットに署名するか、特権権限を取得する必要があります。これは、一部のユーザーにとって障壁になる可能性があります。

  • 起動時間は、FlashやJavaScriptよりも少し遅くなる傾向があります。一方、JVMが稼働すると、パフォーマンスは向上します。

  • Javaはガベージコレクションされた言語であるため、GCがごくわずかに停止することがあります。カジュアル/ロールプレイング/戦略ゲームの問題ではありませんが、ジッターのない120 FPsのフレームレートを一定に維持しようとしている高性能3D FPSタイトルでは問題になる可能性があります......


1

ゲームがフリーウェアになることを計画している場合、または自分でゲームからお金を稼ぐことを処理する準備ができている場合、Javaは問題ありません。ただし、Flashのように確立された広く普及したゲームのスポンサーシップモデルがないため、キャッシュを作成するのは少し難しいでしょう。


機会の匂いはしますか?:)
リケット

スポンサーシップモデルがクリエイターに大きなメリットをもたらすかどうかはわかりません。広告からの収入を稼ぐポータルサイトからの収入を得るよりもリーズナブルな価格であなたの作品を販売する方が良いです。
Luther

ルター:本当です。モデルが確立されたからといって、それが最良のモデルであるとは限りません。
グレゴリーAvery-Weir
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.