web-dev-qa-db-ja.com

手続き生成はどのように始めますか?

手続き型生成 は最近(Spore、MMOなどによって)脚光を浴びており、興味深い/強力なプログラミング手法のようです。

私の質問は次のとおりです。

  • 手続き生成手法を利用する中規模プロジェクトを知っていますか?
  • 手続き生成にはどの言語/言語のクラスが最適ですか?
  • 「深刻な」コードに手続き型生成を使用できますか? (つまり、ゲームではありません)
141
perimosocordiae

おそらく、 中間点変位アルゴリズム などの小さな理論と簡単な例から始める必要があります。グラフィックの生成に興味がある場合は、 Perlin Noise についても少し学ぶ必要があります。これを使用して、手続き生成に関する最終年度のプロジェクトを開始しました。

フラクタル は手続き生成に密接に関連しています。

Terragen および SpeedTree は、手続き生成のいくつかの驚くべき可能性を示します。

手続き型生成は、任意の言語で使用できる手法です(JavaなどのOO言語、およびPrologなどの論理言語で使用できるため、Cなどの手続き型言語に限定されません) 。あらゆる言語の再帰をよく理解することで、手続き型生成の理解が強化されます。

「深刻な」またはゲーム以外のコードに関しては、手続き生成手法が次の目的で使用されています。

  • 交通管理を計画するために都市の成長をシミュレートする
  • 血管の成長をシミュレートする
  • SpeedTreeは映画や建築プレゼンテーションで使用されます
115
Liam

手続き型コンテンツ生成wiki:

http://pcg.wikidot.com/

あなたが欲しいものがそこにない場合は、それを追加してください;)

48
Martin

手続き型コンテンツの生成はすべてGPU向けに記述されているため、シェーダー言語を知っている必要があります。それはGLSLまたはHLSLを意味します。これらは、それぞれOpenGLとDirectXに関連付けられている言語です。

私の個人的な好みは、速度、簡単な学習曲線、および Frank D Luna によるDx11/HLSLですが、OpenGLはより多くのプラットフォームでサポートされています。

また、OpenGL/DirectXゲームエンジンのセットアップにかかる(かなりの)時間を費やすことなく、シェーダーの作成にすぐに取り掛かりたい場合は、WebGLもチェックアウトする必要があります。

手続き型コンテンツはノイズから始まります。

したがって、Perlinノイズ(およびその後継 Simplex noise )について学ぶ必要があります。

Shadertoy は、シェーダープログラミングについて学習するための優れたリファレンスです。シェーダーコーディングを自分で行った後は、コードに数学的なきしみがないため、ここに来ることをお勧めしますが、それが手続き型コンテンツの実行方法です。

Shadertoyは、手続き型の天才 Inigo Quilez によって作成されました。これは、Pixarで働くデモシーンの製品です。彼は 一部のyoutubeビデオ素晴らしい例 )のライブコーディングセッションを持っています。これらもお勧めします。

14
fishfood

私はこれに関する専門家ではありませんが、いくつかの答えを試して貢献できます。

  1. NetHackとその仲間はオープンソースであり、レベル(マップ)の手順生成に大きく依存しています。 リンク そのダウンロードへ。ランドスケープ/テクスチャ/クラウド生成にもっと興味があるなら、 GamasutraGameDev を検索することをお勧めします。

  2. 私の知る限り、言語間に大きな違いはないと思います。表示されるコードのほとんどは、まだゲーム開発者の公式言語であるため、C/CPPになりますが、必要なものは何でも使用できます...

  3. そのような技術の恩恵を受けることができるプロジェクトがあるかどうかによります。私は軍隊のシミュレーターで手続き型の生成を使用しているのを見ました(ゲームとは言えますが、あまりプレイできませんが:))。

そして、小さなメモ-手続き型生成が、少量のルールまたはパターンと多くのランダム性から多くのデータを生成するものである場合、私の定義は結果が異なる場合があります:)

8
Mikle

このトピックに関する優れた本があります。

http://www.Amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486

それは非リアルタイムの視覚効果とアニメーション生成に偏っていますが、理論とアイデアはこれらの分野以外でも使えると思います。

また、SideFXのHoudiniと呼ばれる完全な手続き型ワークフローを実装するプロフェッショナルなソフトウェアパッケージがあることにも言及する価値があります。これを使用して、問題の手続き型ソリューションを発明およびプロトタイプ化し、後でコードに変換できます。

それはかなり高価なパッケージですが、無料の評価ライセンスがあり、非常に素晴らしい教育および/またはエンジニアリングツールとして使用できます。

8
beemtee

テクトニクス、侵食、雨陰などの世界ジェネレーターシミュレーションプレートの例が必要な場合は、以下を参照してください。 https://github.com/ftomassetti/lands

それに加えて、文明進化シミュレータもあります。

https://github.com/ftomassetti/civs

興味深いリソースが満載のブログは次のとおりです。

dungeonleague.com/

現在は放棄されていますが、すべての投稿を読む必要があります

8

デモシーンでは、小さな実行可能ファイルで複雑なグラフィックを作成するために、プロシージャ生成が頻繁に使用されます。ウィル・ライトは、胞子を作っている間、彼がデモシーンに触発されたとさえ言いました。始めるのに最適な場所かもしれません。

http://en.wikipedia.org/wiki/Demoscene

7
anon

最も重要なことは、道路、都市、ブロック、建物の構造を分析することです。すべての建物などの共通点を見つけてください。写真、地図、計画、現実を見てください。そうすれば、都市建設を単なるコンピューター技術の問題と考える人々の一歩先を行くことになります。

次に、そのジオメトリを小さな個別のステップで作成する方法に関するソリューションを開発する必要があります。信頼できる都市を構成するルールを定義する必要があります。 3Dモデリングに興味がある場合は、コンピューターがあらゆる状況で指示に従うことができるように、学んだことの多くを再考する必要があります。

軌道をゆるめないために、プロセス全体のごく一部にしか責任を負わない多くのオペレーターをセットアップする必要があります。これにより、システムのデバッグ、拡張、改善がはるかに簡単になります。次のステップでは、これらの演算子をリンクし、パラメーターを変更して結果を確認する必要があります。

私は主にランダムな形のボックスにいくつかのウィンドウテクスチャが付いた「シティジェネレータ」をあまりにも多く見ました。

3
stan