手続き型生成は最近(Spore、MMOなどによって)脚光を浴びており、興味深い/強力なプログラミング手法のようです。
私の質問は次のとおりです。
- 手続き型生成技術を利用する中規模のプロジェクトを知っていますか?
- 手続き型生成に最適な言語/言語のクラスは何ですか?
- 「深刻な」コードに手続き型生成を使用できますか?(つまり、ゲームではありません)
手続き型生成は最近(Spore、MMOなどによって)脚光を浴びており、興味深い/強力なプログラミング手法のようです。
私の質問は次のとおりです。
おそらく、少しの理論と、中間点変位アルゴリズムなどの簡単な例から始める必要があります。グラフィックスの生成に興味がある場合は、パーリン ノイズについても少し学ぶ必要があります。これを使用して、手続き型生成に関する最終年度のプロジェクトを開始しました。
フラクタルは手続き型生成と密接に関連しています。
TerragenとSpeedTreeは、手続き型生成の驚くべき可能性を示します。
手続き型生成は、どの言語でも使用できる手法です (Java などのオブジェクト指向言語や Prolog などのロジック言語で使用できるため、C などの手続き型言語に限定されません)。どの言語でも再帰をよく理解すると、手続き型生成の理解が深まります。
「深刻な」コードまたはゲーム以外のコードに関しては、手続き型生成技術が次の目的で使用されています。
手続き型のコンテンツ生成はすべて GPU 用に記述されているため、シェーダー言語を知っている必要があります。つまり、GLSL または HLSL です。これらは、それぞれ OpenGL と DirectX に関連付けられた言語です。
私の個人的な好みは、速度、学習曲線の容易さ、およびFrank D Lunaのため、Dx11 / HLSL ですが、OpenGL はより多くのプラットフォームでサポートされています。
OpenGL / DirectX ゲーム エンジンのセットアップにかかる (かなりの) 時間を費やすことなく、すぐにシェーダーの作成に取り掛かりたい場合は、WebGL もチェックしてください。
手続き的なコンテンツはノイズから始まります。
そのため、パーリン ノイズ (およびその後継のシンプレックス ノイズ) について学ぶ必要があります。
Shadertoyは、シェーダー プログラミングについて学習するための優れたリファレンスです。そこにあるコードは数学的にぎこちないためのものではないため、シェーダーコーディングを自分で行ったら、そこに来ることをお勧めしますが、それが手続き型のコンテンツが行われる方法です.
Shadertoy は、Pixar で働くデモ シーンの製品であるプロシージャルの天才、Inigo Quilezによって作成されました。彼はライブ コーディング セッションのYouTube ビデオ(素晴らしい例) をいくつか持っており、私もこれらをお勧めします。
プレート テクトニクス、侵食、雨影などのワールド ジェネレーター シミュレーションの例が必要な場合は、 https ://github.com/ftomassetti/lands をご覧ください。
さらに、文明の進化シミュレーターもあります。
https://github.com/ftomassetti/civs
興味深いリソースが満載のブログは次のとおりです。
dungeonleague.com/
現在は放棄されていますが、すべての投稿を読む必要があります
このトピックに関する優れた本があります。
http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486
非リアルタイムの視覚効果とアニメーション生成に偏っていますが、理論とアイデアはこれらの分野以外でも使用できると思います。
また、SideFX の Houdini と呼ばれる完全な手続き型ワークフローを実装するプロフェッショナル ソフトウェア パッケージがあることにも言及する価値があります。これを使用して、後でコードに変換できる、問題に対する手続き型ソリューションを発明およびプロトタイプ化できます。
かなり高価なパッケージですが、無料の評価ライセンスがあり、非常に優れた教育および/またはエンジニアリング ツールとして使用できます。
手続き型生成はデモシーンで頻繁に使用され、小さな実行可能ファイルで複雑なグラフィックスを作成します。Will Wright は、Spore の制作中にデモシーンに触発されたとさえ言っています。そこから始めるのが最適かもしれません。
私はこれに関する専門家ではありませんが、いくつかの回答を試して貢献できます。
NetHack とその兄弟はオープン ソースであり、レベル (マップ) の手続き型生成に大きく依存しています。それのダウンロードへのリンク。ランドスケープ/テクスチャ/クラウドの生成にもっと興味がある場合は、これらのテーマに関する記事がかなりあるGamasutraとGameDevを検索することをお勧めします。
私の知る限り、言語間に大きな違いはないと思います。表示されるコードのほとんどは C/CPP になります。C/CPP は依然としてゲーム開発者の公式言語ですが、必要なものは何でも使用できます...
そのようなテクノロジーの恩恵を受けることができるプロジェクトがあるかどうかによって異なります。手続き型生成が軍隊のシミュレーターで使用されているのを見ました (これはゲームと見なすことができますが、あまりプレイすることはできません:))。
そして、ちょっとしたメモ - 手続き型生成が、少量のルールまたはパターンと多くのランダム性から大量のデータを生成するものである場合、私の定義では、結果は異なる場合があります:)