ブラウザー内のUnityやUnrealEngineで作成されたゲームが今たくさんないのはなぜですか?


ベストアンサー

まあ、Unityの質問に答えることができます。

は、特にFacebookで、ブラウザー内のUnityゲーム用に繁栄しているエコシステムでした。 Unity Webプレーヤーは、優れたグラフィックスとスムーズなフレームレートを得るのに十分なほど適切でした(多くのベイク処理と最適化を行った場合)。私はかつてウェブプレーヤーに展開されたシリアスゲーム/シミュレーションに取り組んでいて、その限界を押し上げたので、それが何ができるかを知っていました。

Chromeが殺害することを決定したときそれはすべて変わりましたWebプレーヤーが基づいているNPAPIサポート。 NPAPIとは何ですか?詳細はこちら- NPAPI-ウィキペディア-ただし、簡単に言うと、これはさまざまな主流ブラウザ用のプラグイン開発の方法です。ただし、NPAPIは古く、セキュリティの問題が発生しやすく、HTML5 / WebGLなどを使用するよう求められたため、Chromeは段階的に廃止することにしました。

NPAPIとWebGLの使用の最大の違いは、前者がローカルマシンのリソースへのほぼ無制限のアクセスを許可しました(詳細については、 NPAPIプラグイン-GoogleChrome を参照してください)。 Unity3D WebGLの場合、 2つの大きな問題があります:

1つ目は、HTML5 / WebGL用にネイティブにコードをコンパイルできないことです。 Unityは、プロジェクトを最適化されたJavaScriptの形式にコンパイルすることでこれを解決しました。プロジェクトを実行するにはほとんどのUnityエンジンコードがそこにある必要があり、Unityは決して軽量ではないため、ファイルサイズの点では大きいです。 Webプレーヤーの場合、ほとんどのエンジンコードはすでにDLLまたはプラグインにあるため、シーンデータ自体をロードして実行するだけで済みます。ただし、WebGL Webプレーヤーの場合、エンジンコードを一貫して再ダウンロードする必要があり、その解決策がまだあるかどうかはわかりません。

サイズを縮小するために、WebGLコードには圧縮されます。ただし、これは、コードをダウンロードした後、クライアントのコンピューターで解凍する必要があることを意味します。これにより、エクスペリエンスが遅くなり、扱いにくくなります。

キラーの問題はメモリの問題です。 NPAPIとは異なり、WebGL Webプレーヤーを実行すると、ブラウザにあるメモリのみを使用できます。率直に言って、あなたのコントロールから外れています。プレーヤーで100以上のタブが開いている可能性があり、ゲームを実行するのに十分なメモリが残っていません。または、ゲームがブラウザのメモリ制限に対して大きすぎて、読み込み中にエラーメッセージが表示されずに不用意にクラッシュする可能性があります(2年前に試したときのことです)。

基本的にWebGL / HTML5を使用して何かを置くために、詳細度の低いモデル、低品質のゲームアセット(サウンド、テクスチャなど)を受け入れるため。フランキー、WebGL / HTML5が古いNPAPIプラグインが提供できるレベルの品質とフレームレートを提供することはないので、WebベースのUnityゲームのエコシステム全体が一掃されたと思います。

これは主にUnity3DWebGLプレーヤー向けであることに注意してください。WebGLでゲームを実行できる他のゲームエンジンもありますが、それらはJavaScriptベースであり、Web用に最適化されている傾向があります。 Unity3Dは巨大なエンジンであり、Webはもはやデプロイメントプラットフォームとしての第一級市民ではありません。

とにかく、私は行ったことがありません。過去2年間のUnityシーンでは、誰かが私と矛盾することを願っています。

回答

ここに隠れているコンテンツの問題とソーシャルエンジニアリングの問題がありますが、私は技術的な問題について話します。最初の2冊について2冊の本を書くことができます。

ここでのTL; DRは、実際には同じAAAパフォーマンスを得ることができないということです。ネイティブプログラムに期待するWebプラットフォーム。いくつかの回避策がありますが、開発者が実装するにはコストがかかります。

1。)ランタイムコンパイルとアセット処理

ゲーム制作の標準的な方法とは異なり、Webゲームは現在、コードをコンパイルし、関連するアセットにリアルタイムでアクセスする必要があります。従来、ゲームには、オンデマンドでロードおよび実行されるコンパイル済みのアセットとコードが含まれていました。ゲームを事前にコンパイルすると、さまざまな状況でより適切に実行できるようにゲームを最適化できます。このカスタマイズの一部はインストール時に発生し(IE、PC / MAC /コンソールの違い)、一部はゲームオプションのセットアップ時に発生します。

この最適化は実行時より前に行われるため、ゲームにロードできます。より速く(あなたはあなたが何をする必要があるかをすでに知っています)。ただし、実行時のコンパイルでは、事前にではなく実行時にこれをすべて把握する必要があります。これにより、通常、ロード時間が長くなります。理論的には、ダウンロードしたデータをキャッシュすることは可能ですが、ブラウザ(または不幸なユーザー)は非常に簡単に実行していることを上書きできます。 #3を参照してください。

2。)サーバーのメンテナンス

Webブラウザーを介してファイルとアセットをリモートで保存できますが、これはゲーム会社にとって維持の問題を表しています。サーバーサービスのサービスを維持するための時間とお金。この問題は、ゲームをローカルマシンに一度インストールし、定期的なストリーミングアップデートの代わりに定期的にパッチを配信することで、大幅に減らすことができます。帯域幅= $$$、最大の稼働時間でサーバーを操作するために必要な情報技術の専門家は言うまでもありません。

3。)ブラウザのオーバーヘッド/制限

Webブラウザーで何かを実行するということは、システム要件としてオペレーティングシステムだけでなく、ブラウザーが消費する追加のメモリと処理時間を処理する必要があることを意味します。たとえば、Chromeは現在、この質問に答えるためだけに最大148MBを使用しています。これはおそらくPCやMacにとっては悪いことではありませんが、タブレットにとってはキラーです。

さらに、ほとんどのブラウザには、ブラウザがオペレーティングシステムやハードウェアとやり取りする方法を制限するセキュリティ機能があります。これは、プリコンパイルされたゲームで通常実行できる特定の種類のパフォーマンス操作が、ブラウザ内では単純に不可能であることを意味します(多くの場合、ダイレクトメモリアクセス)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です