読者です 読者をやめる 読者になる 読者になる

テキストエディタで完結したゲーム開発環境は無いかね

と書いたが要はテキストエディタだけを入力として完結したゲーム開発環境が欲しいなという話。グラフィカルなドット絵エディタや3Dモデラー、ミュージックシーケンサなどは無し、さらにいうと外部リソースインポートも無し、ゲームに必要なリソースは全てコードで示す。

ここまで制約を加えるとなかなか所望のものは見つからない。そもそもグラフィックスをコードで示そうとなると、ドット絵を文字列の配列で示すとか、モデルの頂点を数値配列で示すとか、えらく前時代的な作りになって、それはそれでどうかと思う。

他のアプローチとしては、グラフィックスを生成することだ。ドット絵で言えば

Procedurally generated enemies

Identicon

のように何もないところから敵っぽい形やアイコンを生成したり、

pixel-sprite-generator

のように大まかな形を与えるとそれっぽい形にしてくれる方法がある。

3Dでも

Spaceship Generator

のような宇宙船ジェネレータがあったりする。あとは

Supershapes Generator

のような数式による形状作成という方法もあるな。シェーダもこの手の話の一種。

POV-Ray

POV-Rayのようにプリミティブの配置をテキストで記述する方法もある。

こういった方法を使えば、ランダムシードや数式、または種となる簡単なパターンのみをコードに記述して、そこからキャラクタのグラフィックスを生成することができる。ただ作られる形のバリエーションにはかなりの制約があり、人手で作られたコンテンツのレベルには遠くおよばない。

音の方はどうだろう。テキストでの音記述と言えば、もちろんMMLがある。

Music Macro Language

音符はもちろん、ものによってはFM音源パラメタや波形データなども書けたはず。歴史のある伝統的な手法だ。

音をごくコンパクトな数式で表す方法もある。

Bytebeat

デモとかで使われることのあるBytebeat。時間を入力とした数式の出力をほぼそのまま波形にするという乱暴な方法だが、数式を工夫することで長時間の展開を含む複雑な曲を作ることもできる。ただちゃんと曲の鳴る数式を作るのはかなり大変。適当な式を入れると大抵はとんでもない騒音が出てくる。もうちょっと整った方法だとSuperColliderなど。

SuperCollider

効果音だけならパラメタの組み合わせで簡単に作れる方法がいろいろある。

jsfx

ChipTone

この辺の話はまとめるとGenerative artの一種ということにはなるんだよな。

Generative art

ただGenerative artはゲームに限った文脈ではないから、キャラクタとか効果音とかいう観点でのコンテンツ生成についてはそれほどカバーされてないかもしれん。

この辺の方法をうまく取り入れれは、コード一つでゲームロジックから絵から音から全て書けるようになって、プログラマにとってのお気楽なゲーム開発環境が手に入る。それを実現している一例としては、PuzzleScriptがあるな。

PuzzleScript (Objects, Sounds)

この手のお気楽さが他のジャンルのゲームでも使えるようになっくると嬉しいのだが。