「コーディング不要でゲーム開発!」っていうウリのツールはあるが「デザイン不要!全てをコードでねじ伏せる」ツールはなかなか見かけない
— ABA (@abagames) 2016年11月5日
グラフィックスもサウンドもコードでなんとかしてもらいたい
— ABA (@abagames) 2016年11月5日
テキストエディタだけでグラフィックス作ろうと思ったら何が使えるだろう。SVG, 3D API/シェーダ各種, LOGO, PostScriptとか?サウンドだとMML, ByteBeat。あまり思いつかんな
— ABA (@abagames) 2016年11月6日
と書いたが要はテキストエディタだけを入力として完結したゲーム開発環境が欲しいなという話。グラフィカルなドット絵エディタや3Dモデラー、ミュージックシーケンサなどは無し、さらにいうと外部リソースインポートも無し、ゲームに必要なリソースは全てコードで示す。
ここまで制約を加えるとなかなか所望のものは見つからない。そもそもグラフィックスをコードで示そうとなると、ドット絵を文字列の配列で示すとか、モデルの頂点を数値配列で示すとか、えらく前時代的な作りになって、それはそれでどうかと思う。
他のアプローチとしては、グラフィックスを生成することだ。ドット絵で言えば
Procedurally generated enemies
のように何もないところから敵っぽい形やアイコンを生成したり、
のように大まかな形を与えるとそれっぽい形にしてくれる方法がある。
3Dでも
のような宇宙船ジェネレータがあったりする。あとは
のような数式による形状作成という方法もあるな。シェーダもこの手の話の一種。
POV-Rayのようにプリミティブの配置をテキストで記述する方法もある。
こういった方法を使えば、ランダムシードや数式、または種となる簡単なパターンのみをコードに記述して、そこからキャラクタのグラフィックスを生成することができる。ただ作られる形のバリエーションにはかなりの制約があり、人手で作られたコンテンツのレベルには遠くおよばない。
音の方はどうだろう。テキストでの音記述と言えば、もちろんMMLがある。
音符はもちろん、ものによってはFM音源パラメタや波形データなども書けたはず。歴史のある伝統的な手法だ。
音をごくコンパクトな数式で表す方法もある。
デモとかで使われることのあるBytebeat。時間を入力とした数式の出力をほぼそのまま波形にするという乱暴な方法だが、数式を工夫することで長時間の展開を含む複雑な曲を作ることもできる。ただちゃんと曲の鳴る数式を作るのはかなり大変。適当な式を入れると大抵はとんでもない騒音が出てくる。もうちょっと整った方法だとSuperColliderなど。
効果音だけならパラメタの組み合わせで簡単に作れる方法がいろいろある。
この辺の話はまとめるとGenerative artの一種ということにはなるんだよな。
ただGenerative artはゲームに限った文脈ではないから、キャラクタとか効果音とかいう観点でのコンテンツ生成についてはそれほどカバーされてないかもしれん。
この辺の方法をうまく取り入れれは、コード一つでゲームロジックから絵から音から全て書けるようになって、プログラマにとってのお気楽なゲーム開発環境が手に入る。それを実現している一例としては、PuzzleScriptがあるな。
PuzzleScript (Objects, Sounds)
この手のお気楽さが他のジャンルのゲームでも使えるようになっくると嬉しいのだが。