47

私は今日、これまでに作成された中で最も複雑で印象的なアプリケーションが何であるかについて考えていました。それで、私は自分が何に慣れていて、毎日データベースを使用しているのかを考え始めました。

それから私は未知の分野(私たちのほとんどにとって私が推測する)、政府に入りました。火星のローバーと通信できるNASAアプリケーションの複雑さを想像することしかできません。

でもそれから、子供の頃から毎日使っているもの、ゲームについて考え始めました。ゲーム開発者ではないので、これは私が考えることができるものを超えるAIと計算の複雑さについての膨大な量の質問を私の想像にもたらしました。

ゲームは最も複雑で印象的なアプリケーションですか?

4

30 に答える 30

49

簡単な答え:いいえ。

長い答え:ゲームは実際にはそれほど複雑ではありません。「ゲーム」と言うときは何を話しているかによって異なりますが、最も複雑なゲームの2つの候補は、3Dゲームとオンラインゲーム(特に大規模なオンラインゲーム)です。

3Dゲームの複雑さは、世界のモデルを取得して3Dでレンダリングし、それを「現実的な」(世界のルールの範囲内で)動作させることから生じます。それから視覚的および聴覚的環境を作成することは、実際にはそれほど難しいことではありません。それはほとんどすべて線形代数であり、コンピュータサイエンスの成熟した分野です。

本当の秘訣は、そのプロセスをリアルタイムで実行可能にすることです。何年にもわたって、ゲームプログラマーは、リアリズムとパフォーマンスの間で多くのトレードオフを行う必要がありました(たとえば、実際に多くのお金の価値があるリアルな外観のツリーを生成するパフォーマンスアルゴリズムを作成できる場合)。そのため、コンピューティングとグラフィックスの能力が向上するにつれて、ゲームは自然に(視覚的に)何年にもわたって良くなりました。

現在、一部のゲームプログラマーは、この分野で真の革新を行い、(当然のことながら)多くのお金を稼いでいます。John Carmack(id Software:Doom and Quake)とTim Sweeney(Unreal)が頭に浮かびます。

ただし、ゲームを作成する際の実際のコストはコンテンツです。最新のFPS(ファーストパーソンシューティング)ゲームのクレジットを見てください。通常、プログラマーは6人程度ですが、アーティストは30〜50人以上になります。コンテンツは複雑ではありません(ソフトウェアの観点から)。時間がかかるだけです。

オンラインゲームに関しては、エバークエストが出て、人々がそれがどれほど大変だったかについて絶賛したときのことを覚えています。Bzzzt、間違っています。90年代(そしておそらく80年代)までのMUD(マルチユーザーダンジョン)の開発に精通している(私のような)人々にとって、Everquestサーバーはアーキテクチャ的にそれほど複雑ではありませんでした。

WorldofWarcraftやこれらの他のゲームにも同じことが言えます。

複雑な話をしたいのなら、推定4000万行のコードを持つこれらのものが実行されているWindows XPオペレーティングシステムはどうですか?神はビスタがいくつあるか知っています。または、Linuxカーネルはどうですか?

現在、政府、軍隊、および民間部門では、文字通り数千人年が投資されている他のアプリケーションを見つけることができます。

于 2009-02-14T02:34:27.327 に答える
42

航空交通管制システムは、フォールト トレラントであり、安全性が重要であり、可用性が高く、分散型です。システムのアップグレード中であっても、システムは 24 時間 365 日稼働する必要があります。計算的に非常に複雑なものは実際にはありません(たとえば、システムを予測可能にしたいので AI はありません) が、システムの観点からは、そのレベルで実行する必要があるものは他にあまりありません。宇宙ミッション ソフトウェアでさえ、ミッションが実行されている間だけ実行する必要があります。

于 2009-02-14T02:41:49.447 に答える
10

ゲームは確かに、ハードウェアの最適化からデータベース、AI、高度な数学まで、非常に幅広いコンピューティングテクノロジーをカバーしています。

複雑さのベンチマークを確立するのは難しいです。実際に存在するかどうかはわかりません。考えてみれば、今日の私たちにとって些細なことは、ほんの数年前には解決するのが非常に難しい問題だったので、複雑さは動く目標であり、私たちは皆その上に構築しています。

あなたの質問を読むだけで何が関係しているのかを分析しなければならない場合、解決すべき問題の広さは驚異的です:あなたのマシン、私のマシン、および他のすべてのマシンの電子部品を製造するために使用されたソフトウェアの複雑さを想像してくださいの間に。
コンピューターが情報を相互に確実に受け渡すための複雑さを想像してみてください。
OSがこのすべてのハードウェアを管理し、ブラウザが複雑なレイアウト情報を画面に表示できるようになるまでに何が必要だったか想像してみてください...
これはすべて私にとって驚異的です。

特に複雑なアプリケーションを指すこともできますが、それについて考えると、表面上は十分に単純に見えますが、すべてを考慮するとさらに複雑であると見なすことができる別のアプリケーションが常に存在する可能性があります。

于 2009-02-14T02:32:54.070 に答える
7

私は明確なノーと言うでしょう。

最新のゲームは確かに印象的ですが、そのソフトウェアとハ​​ードウェアの技術は、学界、産業、軍事の最先端に大きく遅れをとっています。結局のところ、それらは十分に一般的な家庭用ハードウェアで実行することを意図しています。軍はより現実的なシミュレーションで人々を訓練していると確信しています.

計算の観点からは、ゲームもそれほど面白くありません。最新のゲーム (Fallout 3、GTA4 など) は、その「開かれた世界」と非常に長いストーリーのために確かに素晴らしいように見えますが、それはテクノロジーとは関係なく、むしろ生産価値とは関係ありません。人気のあるゲームは、一部のハリウッド映画よりも多くのキャストと投資を必要とするようになりました。確かに、あなたはブロックではなくニューヨークのモデルを持っていますが、それで何ですか?

MMORPG でさえそれほど印象的ではありません。はい、彼らは多くの相互作用するエージェントを持っています。ただし、自動化されたエージェントを含むエンタープライズ アプリケーションには、より多くのエージェントがあり、より高速に動作し、より高い信頼性要件があります。

最後に、ベンチマークとなるチェスなどのゲームでテストされている最先端のアルゴリズムを除いて、ゲーム AI はそれほど高度ではありません。繰り返しますが、軍 (および金融会社) には、はるかにスマートなアプリケーションがあります。

于 2009-02-14T02:46:48.220 に答える
7

エネルギー省によって開発された物理アプリケーションのいくつかを見てみましょう。

そこには、次のことを行うアプリケーションがあります。

これらは、存在する最も計算集約的な問題の一部であり、毎年、さまざまな スーパーコンピューティング センターで何百万もの CPU 時間が費やされています。これらは高度に並列化されたコードであり、物理を理解し、それをネットワークやプロセッサ (たとえばMPIを使用) に効率的にマッピングする方法を理解することは、非常に複雑です。

2012 年までに、数百万のコアを備えたマシンでこれらの機能の一部が実行されると予想されます。

于 2009-02-27T19:31:46.063 に答える
6

複雑さの観点から見ると、ゲームはそれほど印象的ではありません。確かにグラフィックス能力に驚かされる FPS スタイルのゲームを考えていたと思います。計算に関する限り、それらは確かに多くのことを行いますが、ほとんどの場合、増え続けるポリゴン数と高解像度のテクスチャ マップ上で実行される、多くの実証済みのアルゴリズムにすぎません。

物理環境のシミュレーションもそれほど難しくありません。環境が既知の物理法則に従うようにしたい場合は、そのほとんどがやや基本的でよく理解されているためです。

火星探査機のミッションは印象的な偉業です。動的メモリ割り当てなし、火星での実行中にコードをデバッグし、その場でバグの修正をアップロードします。堅牢性の面では、ケーキを取ることに近いと思います.

于 2009-02-14T04:34:08.740 に答える
5

ゲーム プログラムについて私が最もユニークだと思うこと、そしておそらく最も印象的なことは、バグが全体的な成果にどのように影響するかということです。たとえば、Outlook にバグがある場合 (笑)、それに対処する方法がいくつかあります (ここでは単純化しすぎます)。

  1. バグを修正します。
  2. 同じことを達成する別の方法がある場合は、ユーザーに回避策を提供します。
  3. バグはそのままにして出荷し、心配する必要はありません。

ほとんどのゲーム、特にマルチプレイヤー ゲームでは、#2 または #3 の選択肢がないことがよくあります。プレイヤーはゲームを悪用する方法を探しているので、悪用できるバグを残しておけば、悪用される可能性があります。したがって、悪用の可能性があるため、ゲームのバグに対する許容度は、実際にはほとんどのビジネス/生産性ソフトウェアよりもはるかに低くなります。

私にとって、これは、WoW や Everquest のような大規模で複雑なゲーム システムを本当に印象的なものにする主要な要素の 1 つです。人々がゲームの抜け穴を悪用しようとする長さは非常に驚くべきものであり、非常によく文書化されています. これは、Photoshop やオフィス ソフトウェアなどの製品とはまったく対照的です。必要なことを達成する方法がある限り、他のワークフローの一部が壊れている可能性があるという事実は、必ずしもミッション クリティカルな欠陥ではありません。 ..少なくとも無視できる可能性があります。それは、ゲーム開発者が持っている贅沢ではありません.

現在... Air Traffic Control や Airbus のフライト ソフトウェアなどと比較すると、ゲームにはこの種のライフ オン ザ ラインの制限はどこにもありません... それはまったく別のクラスの課題です。

于 2009-02-27T18:32:54.893 に答える
5

ここにある回答に異論はありませんが、人々が「ゲームの複雑さ」について考えるとき、GTA や MMORG について考えるのは非常に興味深いと思います。囲碁とチェスのことを考えています。

人気のあるゲームは、多くのグラフィックスを使用して計算負荷が高い場合がありますが、それ自体は難しいことではありません。一方、囲碁は計算が難しい問題です。

また、「複雑さ」の技術的な定義を使用している場合、これは主観的な質問ではありません。

于 2009-03-16T14:13:23.110 に答える
3

「複雑さ」または「印象」をどのように測定するかはわかりませんが、デスクトップにあるソフトウェア(OfficeやVisual Studioなど)の中には、ほとんどの場合、ビデオゲームよりも「複雑」なものがあります。 。

(最近のVSは、5000万行のコードのようなものだと思いますが、ここでは必ずしも信頼できるリソースではありません。)

于 2009-02-14T02:36:18.073 に答える
3

いいえ、ゲームはそれほど特別なものではありません。もちろん、他の大規模なプログラミング プロジェクトと同様に、膨大な数の相反する目標があり、多くの妥協点がありますが、結局のところ、ゲームには要件がほとんどないという利点があります。データベースを作成している場合は、ACID プロパティを満たす必要があります。いつ、どのようにプラグを抜いても、データが失われてはなりません。OS を作成している場合、同様のことが当てはまります。何をしても安定している必要があります。ゲームは多くの期待に応えなければなりませんが、絶対に不可欠なものはほとんどありません。ほとんどのグラフィック効果を偽造することは問題ありません。プレイヤーが観察していないエリアでワールド シミュレーションを偽造することは問題ありません。

また、ゲームがときどきクラッシュしたとしても、それで終わりではありません。大規模な AAA ゲームは確かに複雑ですが、存在する最も複雑なアプリケーションではありません。遠くない。

ゲーム開発は確かに幅広いスキルセットとテクノロジーをカバーしていますが、それらには多くの余裕があり、ほとんどの要件について妥協することが許されています。そのハードウェアでこのフレームレートにしか到達できなくても問題ありません。パフォーマンスを向上させるためにソフト シャドウを無効にする必要がある場合は問題ありません。「納得できるもの」をもとにAIを偽造してもOK。

大規模で高予算のゲームを作成することは、間違いなく大仕事です。また、アプリケーションの作成に関わる幅広い技術、専門職、スキルを考慮すると、最も複雑なタイプのアプリケーションである可能性があります。しかし、プログラミングに関して、または計算の複雑さなどに関しては、いや、それほど特別なことではありません。

于 2009-02-14T04:04:12.183 に答える
3

誰もまだドワーフ要塞について言及していないのは本当に不思議です:)

ドワーフの要塞は実際には非常に印象的です。光沢のあるグラフィックスに欠けるかもしれませんが、オープン ワールドの生成とシミュレーションで多くの印象的な機能を実行します。

于 2009-07-01T09:14:01.433 に答える
2

それは、私たちが複雑さをどのように測定するか、どの側面を見ているかに本当に依存します。最近のビデオゲームを動かす印象的なテクノロジーは確かにたくさんあります。

NASAのジョン・カーマックが月着陸船での彼の仕事で一等賞を受賞しているので、これを楽しんでいただける方もいらっしゃると思います。

NASA本部のジョンカーマック(アルマジロエアロスペース)

カーマックによると、偉業は単純でした:

私がビデオゲームで行う作業は、実際には航空宇宙の作業よりもはるかに複雑です。

于 2011-08-09T04:54:46.977 に答える
2

ゲームの世界には「印象的な」コードの興味深い例があると思います。注目すべき場所は、ゲーム コンソールや古いホーム コンピューティング プラットフォームなどの固定ハードウェア向けのゲームです。探すべきソフトウェアは、それらのプラットフォームの寿命の終わりに向かって出てきたタイトルです。

たとえば、BBC Micro の Elite は、3D 宇宙戦闘ゲーム、市場シミュレーション、宇宙全体の地図を 32KB に詰め込みました。その後、同じゲームが NES に詰め込まれました。この偉業には手作業で最適化されたアセンブリ言語コーディングが含まれており、1 バイトを削るのに 1 日を費やす価値があると考えられていました。

すべての 8 ビットおよび 16 ビット プラットフォームで、同様に印象的な作品を見つけることができます。また、Amiga シーンのサウンドとグラフィックのデモもご覧ください。

これらすべての原動力は、ハードウェアを増やすだけでは問題を単純に解決できないということです。消費者はハードウェアをアップグレードできず、より洗練されたゲームを求めていました。

さらに、これらのゲームは、当初はゲーム用に設計されていないデバイス向けに作成されているため、印象的です。「スムーズな 8 方向スクロール」のような単純なものは、ゲームの主要な機能と見なされていました。ハードウェアがそれを直接サポートしておらず、プログラマーがそれを実現するには非常に巧妙でなければならなかったからです。

それらの日が終わった可能性があります。たぶん誰かが PS3 や Xbox360 をプッシュして、気が遠くなるようなことをさせるかもしれませんが、このハードウェアをそれほど強くプッシュしなくてもゲームを販売できるようです。得られるのは、グラフィック品質の小さな改善、またはより大きな環境、またはより詳細な環境だけです。

ますますハンドヘルド デバイスでさえ強力すぎて、そのような印象的な低レベルのコーディングを行うことができなくなります。最新の携帯電話で 3D ゲームを作成するために少し手を加える必要はありません。

したがって、ハードウェアが制限されている他の場所を探してください。火星探査機が良い例です。

于 2009-03-16T14:39:27.727 に答える
1

複雑さの意味によって異なります。

アルゴリズムの観点からも、低レベルの最適化の観点からも、そして確かに数学的な観点からも、ゲームは VS やオペレーティング システムよりも複雑です。

コードサイズの観点から、多くの異なるコンポーネントの相互作用の観点から、そして構成の多数の順列をサポート (およびデバッグ) する必要性から、OS はより複雑であると言えます。

于 2009-02-14T03:44:13.883 に答える
0

大規模なオンラインゲームを含めると、私はそう主張します。彼らは、大規模システムが必要とするすべてのもの(分散システム、それらのシステムの調整、大量のデータ、在庫を正確に保つためのトランザクション/信頼性など)をすべて非常に厳しいパフォーマンス要件の下で利用する必要があります(EVE Onlineが主要です)私が考えているもの)。

しかし、おそらく最も印象的なAIではありません。数日で理解できなかったゲームでAIに遭遇したことはまだありません。

于 2009-02-14T02:29:48.633 に答える
0

はい、複雑です。はい、とても印象的です。

しかし、ゲームに匹敵するシステムが世の中にあります。データベースマネージャは非常に複雑で印象的です。MathematicaはSWのもう一つの素晴らしい部分です。多くの例があります。確かにいくつかのゲームはトップにあります。

于 2010-07-23T12:56:56.947 に答える
0

ゲームは最も複雑で印象的なアプリケーションですか?

複雑?いいえ

印象的?依存します。印象的なものはたくさんあります。

たとえば、フォールトトレランスと正確性では、おそらく医療または航空宇宙アプリケーションのコードです。

スケーラビリティでは、GoogleまたはAmazonと言います。

しかし、ゲームが優れているのは、利用可能なハードウェアからほとんどのパフォーマンスを引き出すことです。他のアプリケーションでは、通常、それを気にしないのに十分なハードウェアパワーがあるポイントがありますが、ゲームでは、常により良いレンダリング、より良いAIなどを作成できます。したがって、パフォーマンスは、近い将来、優先度が高くなります。このカテゴリーでは、ゲームは非常に印象的です。

于 2009-06-25T14:03:11.060 に答える
0

誰かが航空交通管制ソフトウェアについて言及していました - 私はそれが信じられないほど複雑で信頼できるものであることはかなり確信していますが、私にとってはそれはグローバルな航空券発券システムでなければなりません - アマデウスと呼ばれていると思います.

何十万ものフライト、目的地、価格設定オプションを備えているため、基本的に全世界にリアルタイムでリクエストを提供できることは信じられないほどです.

ホテルの宿泊料金を計算するソフトウェアを少し書きました。これは、大きなチェーンなどではなく、1 つのホテルのためのものでした。それほど大きなホテルでもありません。そして、さまざまな変数とルールをすべて取り、価格を返すコードは... 巨大でかなり複雑でした。

現在および将来運航されるすべてのフライトにスケールアップすることは、現存する中で最も複雑なことであると私は考えています。

于 2009-06-19T13:47:13.970 に答える
0

簡単な答え: はい。私はこの質問に答えていますが、「これまでに作成された中で最も複雑で印象的なアプリケーションは何かについて今日考えていました。どちらが最も複雑で印象的かではなく。

宇宙全体をモデル化し、[x] 超大国でプレイできるゲームを開発しようとすることを想像してみてください。事実上、ゲームをあらゆる複雑さのシミュレーションに変えることができます。既知のすべての物理学と同じくらい複雑で、非物理学をミックスに投入できます! ビデオゲームは、その性質上、作りたいものと同じくらい単純にも複雑にもなり得ます。

私の考えでは、それがゲーム開発の美しさです。必要な詳細レベルまで世界を作成できます。想像できるものは何でも、ゲームに変えることができます。理論的に。

于 2009-12-16T20:58:27.853 に答える
0

開発プロセスを含めると、ゲームは確かにそこにあります。

于 2009-02-27T19:37:47.547 に答える
0

上記のいくつかの優れた提案とは別に、 Univiewがかなり印象的であることを指摘したいと思います。

于 2010-07-23T12:48:49.147 に答える
0

複雑で「光沢のある」コードに関しては、Loebner(sp?) 賞を検討する必要があります。会話チューリングマシンを開発するためにそれぞれ開催されるコンテストです。これは非常に複雑で興味深いプロジェクトであり、機械として認識されることなく実際の人間と会話できるコードを作成することを目標としています。

これには、言語学、記憶、文法と構文、自己再プログラミングなど、多くのレイヤーがあります。それは本質的にはミニ AI であり、宝くじに当たった場合は、それに多くの時間を費やしたいと思います。

私は冗談です、私は一日中ウォーターパークで酔って過ごしました. しかし、私はずっとこのことについて考えていました。

于 2010-07-23T13:58:47.013 に答える
0

いいえ。

すべてのソフトウェアを「アプリケーション」と見なす場合、オペレーティング システムは (OS はアプリケーションではなく、システムです) と言えます。

于 2009-02-14T04:21:05.620 に答える