GenJam 2016
2016年11月19日に、サンフランシスコで最初の毎年恒例のGen Jam(手続き型世代のゲームジャム)が開催されました。 必要に応じて、土曜日に「オブジェクトを作成するオブジェクト」というグラフィックジェネレーターを作成するというアイデアがありました。
Oryx Design Labが提供するクリストファーの「Oryx」Barrett 16ビットスプライトの素晴らしいスタイルでキャラクタースプライトを描画するプログラムを作成しました。 プログラムの機能の例を見てください。

基本計画
本質的に、私はキャラクターのスプライトを取り、それらをパーツに分割し、カラーパレットを正規化し、それらのアセンブリのアルゴリズムを実装して、新しいユニークなスプライトを作成しました。
そこで、元のスプライトを、ヘルメット、髪、体、足、武器などのパーツに分割しました。 次に、それらをランダムに選択し、それらをまとめました。 それから色を変えました。 基本的な考え方は次のとおりです。

入力データ
基礎として使用した16ビットスプライトセットの元のスプライトは次のようになります(最初のスプライトセットは巨大です。ここに5つの例を示します)。

スプライトは、身体、頭、ヘルメット、盾、脚、髪、近接武器、弓の8つのグループに分けられました。 次に、Photoshopを使用して断片を切り取り、別のファイルに入れました。

アイデアは、異なるヘッド、異なる武器、シールドなどのセットを取得し、それらをランダムに結合することでした。
パレット
カラーパレットの一部である元の色に対応するように色を変更したかったのですが、同時により多くの可変性を作成しました。 トリックは、異なるスプライトで使用されている色を見つけ、それらを線形グラデーションとしてグループ化し、スプライトフラグメントの色をランダムに変更するためのカラーグラデーションを選択することです。
つまり、すべてのファイルを調べて、肌の色合いに使用されるすべての色、すべての緑、青などの色合いを収集しました。 衣服の場合、金属などのすべての色を使用して、パレットファイルに入れます。 線形グラデーションのセットは次のとおりです。
最初の行を除く各行は線形グラデーションです。 1つのグラデーションがランダムに選択されます。 最初の行は入力色です。 アルゴリズムがこれらの色のいずれかを検出すると、選択した線形グラデーションの同じ列の色に置き換えます。次に、スプライト自体を取り、それらを塗り直して「入力色」を使用します。これは線形グラデーションの色に置き換えることができます。 たとえば、青、緑、赤のシャツが3枚ある場合、それらをすべて赤にし、パレットファイルに青、緑、赤の線形グラデーションを追加し、アルゴリズムで赤をランダムに選択された線形グラデーションの色に置き換えます。
サンプル結果は次のとおりです。

素材
素材とは、衣服、着飾った革、金属、体、宝石など、描かれている素材のことです。 特定の色のみが特定の種類の素材に自然に見えるため、異なる素材には異なる色のグラデーションが必要でした。 たとえば、金属に似合う色は肌の色には適していません。逆もまた同様です。
さらに、さまざまな素材のグラデーションの色の違いが異なります。 たとえば、金属のグラデーションは、同じグラデーション内で明るい部分から暗い部分まで大きく異なり、衣服もそれほど変わりません。
作成されたパレットには、基本的な衣服、追加の衣服、髪の毛、キャラクターの肌、金属、木材、服を着た革、宝石、濃いアクセント色のマテリアルの線形カラーグラデーションのセットが含まれていました。
最終的なパレットは次のとおりです。

オブジェクトのグループ化
グループ化とは、入力データのセットを取得し、それらの一部を互換性があると宣言し、その他を非互換性と宣言することです。 たとえば、さまざまな美的スタイルで描かれたさまざまな国、善悪のキャラクターのグループ、金持ちと貧乏人などのためのスプライト「魔術師のスプライト」と「戦士のスプライト」のグループがあります。 その結果、美的アプローチに従ってスプライトを生成するための多くのオプションが得られます。
全体としてのプロセス
要するに、私は次のことをしました。
- スプライトの大規模なコレクションを、武器、頭、胴体などのパーツに分割しました。
- 入力色をマテリアルの「標準」色に変更しました(衣服の5シェード、金属の5シェード、革の4シェードなど)。
- 彼は、各セットから1つのパーツを選択し、それらを上下にレンダリングするためのアルゴリズムを作成しました。
- パレットから「標準」色をいくつかの色セット(「線形グラデーション」と呼ばれる)の1つに変更するためのアルゴリズムを作成しました。
以上です! そのため、数千のユニークで興味深いスプライトが判明しました。
Github、結論と感謝
土曜日を過ごすのは非常に興味深い方法でした。イベントを企画し、敷地内での
GameNestの共同作業をしてくれた
Galaxy Kate(Kate Compton)と
Ben Grue(Ben McGraw)に
感謝します。
私の個人的なブログ
http://davideyork.comにアクセスできます。ここでは、手続き型生成とインディーゲーム開発について書いています。
このプロジェクトの実装コードは、
Githubからダウンロードできます。 私はそれをC#で書きましたが、Unityと互換性がなければなりません。 完全なパレットとサンプル画像を含めましたが、ソーススプライトと
16ビットスプライトのセットから取得した画像はありません。 これらのスプライトは、
Oryx Design Labの Christopher Barrett別名Oryxから入手できます。 彼らは部分に分割されていません、私はそれを自分でやりました。 これは巨大なスプライトのセットであり、ほとんど無料です。 Oryxは多くの時間を費やしました。評価することをお勧めします(いいえ、これらの単語の支払いは受けていません)。
楽しんでください!