制約がアイデアを生み、ゲームを完成させる

イデアを思いつくためのテクニックとして、なんらかの制約をあらかじめ自らに課してしまう、という方法がある。その制約の中でゲームを面白くするにはどうすれば良いかを考えることで、今までとは違った発想が生まれることが期待できる。また、その制約を逆に活かす方法を考えることで、アイデアの独自性を高めることができる。

制約とはどのようなものが考えられるだろうか。例として考えられるのは、ゲーム制作コンテストであるゲームジャムでのフォーマット、ルール、テーマだ。多くのゲームジャムでは、投稿できるゲームになんらかの制約を設けることで、参加者がその制約内にフォーカスしてゲームを作れるようにしている。

'Different Game Jam Formats' 1 というビデオの中では、その制約のタイプとして以下を挙げている。

  • ツール:利用できるゲームエンジンなどを規定する
  • アセット:ゲーム内で利用可能な画像などをあらかじめ与える
  • ビジュアル:解像度や色数を制限する
  • ゴール:「より多くのものを集める」などゲームの目的を規定する
  • インタラクト:「2つのボタンしか利用できない」などプレイヤーがゲームとインタラクトする手段を制約する
  • ジャンル:「プラットフォーマー」「ローグライク」などのジャンルを規定する
  • イムリミット:一定時間内にゲームを完成させる

イデアを生み出すために役立つ制約としては、インタラクト、ビジュアル、ゴールあたりだろうか。

インタラクトに関する制約としては、利用可能なボタン数を限定する、マウスだけを使う、キーボード全体を使う、ツインスティックなど、入力に用いるデバイスに制約を加えるのが一般的である。使えるボタンが限られていると、そのボタンにどのようなアクションを割り当てるかを熟慮する必要がでてくる。既存の方向キー+2ボタンを使っているゲームをワンボタンゲームにしなければいけない、などの無理難題をふっかけることで、強引な解決策を生み出す過程で、新たなアイデアが生み出せる可能性がある。

ワンボタンゲームについては、個人的に大量に作った経験があるので、ワンボタンにどれだけ多様なアクションを入れ込めるかについての記事 2 を書いた。動作のバリエーションだけでなく、地形やアイテムとの組み合わせなどを工夫することで、一つのボタンが生み出すインタラクションに対して、かなりのバリエーションを持たせることができる。

ビジュアルに関する制約は、基本見た目に影響があるだけでゲームのルールなどに影響を与えたりしない。だが、16x16ピクセルなどの非常に少ない画素数であったり、縦1ラインしか許容しない実質1次元のフィールドだったり、という極端な制約が与えられた場合、それを打破するためのアイデアが求められることもある。過去には、出力として1x1ピクセル2色のディスプレイしか許さないゲームジャム 3 もあった。

1次元のフィールドのゲームは、古くは1行しか表示できないポケコンなどのハードウェア制約のために強制的に生み出されていたこともあった。1次元という制約が、どのようなプリミティブなゲームを生み出すことができるかについての記事 4 も前に書いた。

ゴールについては、ありきたりのゴールを設定するだけではアイデア発掘にはつながらない。「自身を破壊せよ」「犠牲を払え」「勝つために敵を利用しろ」のような特殊なゴールを持つゲームを考えることで、あらたなゲームが発想できる。ちなみにこれら特殊なゴールはGame Jam Theme Generator 5 から出てきたものだ。このジェネレーターはゴールに限らずいろんなゲームジャムのテーマを出してくれるので、アイデアジェネレーター同様に発想の手助けに使える。

ツール、アセット、ジャンル、タイムリミットなどは、アイデア発想のためというよりは、限られた時間でゲームを完成させるためのものだ。ツールやアセットの選定に時間をかけることなく、決まったジャンルのゲームを、タイムリミット内に作る。このように作り方を定式化することで、ゲーム本体の制作にフォーカスして素早くゲームを作ることができる。

もしあなたがゲームをたくさん作ることを目指すのであれば、自分なりの作り方の定式、レギュレーションを決めるのも良い手だ。作るもの、作り方をパターン化して、開発にかかる手間をなるべく減らすのだ 6

上記のビデオには含まれていないが、ゲームのバイナリやソースコードのサイズに制約を加えることも多い。13キロバイト以内のWebゲームを作るjs13kGamesなどが有名である。ゲームジャムではないが、古くマイコンの時代には、1画面に収まるソースコードでゲームを作る 7 という投稿プログラムもあった。

限られたサイズでゲームができているということは、その中のルールやメカニクスもかなり絞られているわけで、そのような制約の元できている面白いゲームは良質なアイデアの宝庫である。ただ、自分で作る際のサイズ制約はどちらかというと単なる足かせにしかならず、早期の完成には寄与しない。なので純粋にサイズの制約を乗り越えるのが楽しい、という人にしかおススメはしない。サイズ圧縮のためのライブラリやテクニックは大量にあるので 8 、これらを覗いてみて面白いと思えるか、あなたの適性を測ろう。

ゲーム制作に対していくつかの制約を課すことは、新たなアイデアを発想したり、素早くゲームを完成させることに役立つ。あまりにきつい制約を加えると、今度はそれを乗り越えるのが苦しくなるので、自分の感性に合う制約を見つけて、うまく活用しよう。

1.

2.

3.

4.

5.

6.

7.

8.

小さなゲームのアイデアって、どうやって思いつくの

さあ小さなゲームを作る準備は整った。じゃあどういったゲームを作ろうか。

ゲームのアイデア出しは一番楽しく一番苦労するポイントである。ここで良いアイデアが思いつけば制作はとんとん拍子に進む。逆にここで微妙なアイデアをつかむといばらの道だ。まあ小さなゲームの場合、ちょっと作ってダメだったら単に捨てればよいのだけど。

ゲームのアイデア発想法はWeb上にたくさん記事がある。なので適当に検索して自分に合いそうなものをピックアップしてみるのも良い。私が探した中で気に入ったものを例に挙げよう。

redditのr/gamedevにあったスレッド'How do you guys come up with ideas for your games?' 1 では、以下のプロセスが書いてあった。

  1. あなたが好きな既存のゲームからインスピレーションを得よう。

  2. 奇妙に見えるものを組み合わせてみよう。カードゲーム + 釣り、タワーディフェンス + マインクラフト、FPSとしてのパックマンなど。

  3. 他のゲームを分析し、その制作過程を考えてみよう。もしあなたがそれを作るなら、どう違うものにするだろうか。

  4. 自分の創造的なアイデアを、実際に制作可能なサブセットに落とし込もう。「作りたいもの」と「作れるもの」の交差点に集中しよう。

  5. 制限を受け入れよう。アイデアからいろんな複雑さを取り除いて、その過程で新しいものを作り上げよう。

既存ゲームの要素を組み合わせ、そぎ落とし、自分なりに改良し、新しいゲームにする。これは新しいゲームを考えるときの鉄板プロセスで、特に小さなゲームでは極限まで要素をそぎ落とすことで、面白いコアメカニクスを持つゲームを作ることができる。


ゲームエンジンGameMakerのサイト内にある'14 WAYS TO GENERATE S-TIER VIDEO GAME IDEAS' 2 も良い記事だ。小さなゲーム向けにも大切と思う部分を取り出すと、以下の内容が挙げられる。

  • 過去の名作をプレイする。スーパーマリオブラザーズをプレイするとき、あなたは将来のすべての2Dプラットフォーマーの基礎を築いたゲームをプレイしている。新しいプレイヤーために、その土台をどのように拡張し、現代化するか?

  • 何もないところからゲームのコンセプトを引き出すのは難しい。まずゲームのジャンルを選び、それを中心にアイデアを構築してみる。

  • ジャンルにこだわるのが苦手なら、キャラクターにこだわる。キャラクターの特徴を活かし、彼らを中心とした世界を展開する。

  • マインドマップでアイデアを紙に書き出す。マインドマップは、ジャンルやメインキャラクターなど、ゲームの核となる部分から始め、思いついたキーワードやアイデアを書き留めていく。ゲームプレイのメカニズム、特徴、ストーリーのテーマ、アートスタイルなど。

  • ひらめきはふとした瞬間に生まれる。いつでも手の届くところにメモ帳を置き、一日を過ごす中で頭に浮かんだアイデアを書き留める。

  • SCAMPERメソッドを使う。既存ゲームに対して、どこが代替できるか、どこを組み合わせられるか、何が追加できるか、修正できるか、削除または簡略化できるか、ある側面を別の用途で利用できるか、ある側面を逆にできるか。

  • 他のメディアに目を向ける。テレビ、映画、音楽、本、伝統的な芸術作品など、すべてがビデオゲームのアイデアをかき立ててくれる。

  • 現実世界からインスピレーションを得る。現実世界にはゲームを作るに値する信じがたいコンセプトが満載だ。

  • 自分の経験を生かす。あなたは、他の誰も経験したことのない方法で世界を見てきた。それがポジティブなものであれ、ネガティブなものであれ、そうした経験は素晴らしいビデオゲームのアイデアの基礎となり、あなたにしか語れない物語となる。

  • ゲームアイデアジェネレーター(ゲームのジャンルやルール、テーマなどをランダムに表示してくれるもの)を使う。

  • テーマが決まっているゲームジャムに参加する。ゲームジャムは、テーマが決まっていて締め切りが厳しい、短期間のゲーム制作コンテストだ。ゲームジャムに参加することで、集中力が研ぎ澄まされ、創造性が高まる。

  • ゲームコミュニティーに参加し、ゲーマーに直接質問する。スレッドに目を通し、質問を投げかけ、ゲーマーが何を求めているのか、何が好きで何が嫌いなのかを知る。

イデアを得るためのテクニックや普段の習慣まで、広い範囲をカバーしている良いリストだ。小さなゲームを作る場合、ここまで頑張る必要はないかもしれないが、こういった方法があるということを頭の片隅に入れておくと、アイデア出しに役立つだろう。


手前味噌ながら、自分がアイデア出しのために行ってきたことについても書こうと思う。

私が大量のミニゲームを作ったときの、評判が良かったゲームの特性や、実際にアイデア出しをした経験から、このような方法でアイデアを考えればよいのではということを、ブログに書いた 3 4 。その内容が以下だ。

  • 既存ゲームのモチーフやルールをうまく借用する。
  • 既存ゲームはテレビゲームに限らず既存スポーツなども視野に入れる。
  • レトロゲームからつまみ食う。レトロゲームの一部分だけを別のゲームとして仕立てる。
  • 誘爆、重力などの定番メカニクスを取り入れる。
  • まとめて取る・倒すと高得点を楽しさの基本に置く。
  • 自然現象や幾何学などから面白い挙動を転用する。
  • 物理挙動を操作にリンクさせて楽しさを生み出す。
  • うまくプレイできていることを視覚的に示して達成感を増す。
  • ワンボタンでの操作などの制約を活かしたインタラクションを取り入れる。
  • リスクとリワードのバランスを常に考える。
  • リスク駆動開発。どういったリスクをプレイヤーに与えようか、という点から新たなメカニクスを考える。
  • 爽快感と緊張感のバランスを考える。
  • ゲームテンポを高めるためのルールを探す。
  • ゲームの背景や舞台設定などのモチーフを提示して、ゲームと物語をリンクさせる。
  • 斬新さを少しずつ削る。最初に考えた斬新なアイデアを少しずつ削って、保守的な作りによせる。

前述2つのスレッド、記事と被る部分もあるが、このリストは私の実開発経験に基づいているので、小さなアクションゲームにフォーカスしたリストになっていると思う。

ちなみに今まで私が作ってきたゲームがどんなものかという記事 5 もあるので、興味があれば参照いただきたい(Flashで作ったゲームは残念ながら今は遊べなくなってしまった)。


また、それらゲームを、いくつかの仕組みに分解して解析してみる 6 ということも行ってみた。今まで作ったゲームが、どのようなプレイヤーキャラクタ、武器、障害物、フィールド、ルール、操作から構成されているかを、カテゴリごとのタグで整理した。これらのタグを使って、以下のように新しいゲームを発想することを想定している。

  • タグ一覧ページを見てゲームに組み込める仕組みを把握する
  • タグ詳細ページを見てその仕組みを使った別のゲームを考える
  • 複数のタグを適当に組み合わせてそれら仕組みを使ったゲームを考える


ランダムに、こういうテーマでゲームを作ってみては?などを出してくれるスロットマシンのようなものを、ゲームアイデアジェネレーターと呼ぶ 7 。これは発想の取っ掛かりを得るにはいいツールではあるが、小さなゲームに使うにはちょっと漠然とした内容であることも多い。なので、私も小さなアクションゲームに特化したゲームアイデアジェネレーター 8 を作った。「ミサイル を 打ち払う」「屋根 が 戦う」「電気 を 拡大する」などの突拍子もないアイデアが次々に出てくるので、それを何とかしてゲームにすることで、斬新なゲームが作れる、かもしれない。


ゲームのアイデアを考えるテクニックは色々あるし、先人の知恵を利用することで効率的に思いつくこともできるだろう。だけど一番いいのは、たくさん考えて、たくさん作ってみることだ。幸いにして小さなゲームを作る場合、アイデアを考えるのも、そのアイデアをゲームにするのも、短時間で行えるだろう。失敗したら捨てればいい。そういった軽い気持ちでトライしてはいかがだろうか。

1.

2.

3.

4.

5.

6.

7.

8.

小さなゲームを作るとして、ターゲットデバイスと開発環境、何向けに何で作るのがいいんだろう

じゃあ小さなゲームを作ってみようか、と思ったときに、まず考えないといけないことの一つに、PC、スマホ、ゲーム機などなど、どのデバイスで動くゲームを作るかということがある。

特にこだわりがないのであれば、PCのWebブラウザ向けのゲームを作るのがおススメだ。今のブラウザは様々な開発環境で開発されたゲームを動作させるためのプラットフォームとして成熟しているし、他の人にプレイしてもらうにも、ネット上のURL告知からシームレスに遊んでもらえてお手軽だ。

ゲーム作りを楽しむ、という面では、どの開発環境・プログラミング言語ゲームエンジンでゲームを作りたいか、から考える手もある。これについては小さなゲームだからどうこう、ということは特になくて、自分の好みで決めて良いと思う。ただ、重厚な3Dゲームを主なターゲットとしているUnreal Engineなどは小さなゲームを作るにはリッチすぎる、などは考慮しても良いかもしれない。

ブラウザ向けに作るとして、開発環境の選択肢は色々ある。

ブラウザで動くプログラムはJavaScriptで書く。だからゲームもJavaScriptで書こう、というのは自然な発想だ。p5.jsPhaserなどのライブラリを利用することで、画面描画などの面倒な部分を楽して書くことができる。p5.jsなら、文系大学生のためのp5.js入門p5.js日本語リファレンスを見ながら、p5.js web editorを使えば、すぐに始めることができる。

ゲームの実行環境と開発環境、キャラクタ・レベル・音のエディタなどを内包した、軽量なゲームエンジンをファンタジーコンソールと呼ぶ。代表的なものとしてはPICO-8PyxelTIC-80などがある。オールインワンの環境で、機能も意図的に絞られているため、小さなゲームを作るには良い選択だ。それぞれ使えるプログラミング言語などが異なるので、自分の好みのものを見つけると良い。PICO-8を試してみるなら、PICO-8日本語版マニュアルPICO-8 API早見表を見ながら、PICO-8 Education Editionを使ってみよう。

UnityGameMakerGodot、など多くのゲームエンジンは、ブラウザ (HTML5)向けにゲームをエクスポートすることができ、ブラウザ上で作ったゲームを遊ぶことができる。画像や音などのアセット管理機能が充実していたり、ブラウザだけでなくPC・スマホ向けにもゲームをリリースできるなど、採用するメリットは大きい。

  • ツクール

RPGが作りたい、ノベルゲームが作りたい、などのジャンルが決まっているのであれば、専用のツールが使える。RPGツクールMVに代表されるツクールが歴史的にも有名なため、このカテゴリのツールは伝統的にツクールと呼ばれがちだ。RPGツクール以外にもWOLF RPGエディターなどもあるし、ノベルゲームならティラノスクリプトなどがある。最近の多くのツクールはブラウザ向けのエクスポート機能を備えている。

テキストベースのプログラムにそもそも慣れていない場合は、ScratchMakeCodeなどのビジュアルプログラミング言語が利用できる。複雑なゲームを作ることは大変だが、あらかじめ絵や音なども用意されていて、小さなゲームであれば十分に制作することができる。

今のブラウザは、JavaScript以外の言語もWebAseemblyなどの技術を活用することで動作させることができる。ただし動作させるためのコンパイルなどの作業が複雑なことも多く、可能であれば上記ファンタジーコンソールやゲームエンジンの助けを借りた方が良い。Pythonで作りたかったらPyxel、C#で作りたかったらUnity、など。HSPなど、オフィシャルで対応している言語は手間は少なくて済みそうだ。


ブラウザ向けに作る場合、タッチ操作(PC上ではマウス操作)のみでゲームを操作可能にすることで、スマホ対応を行うこともできる。より多くの人に遊んでもらいたい場合は検討したい。

ゲームを作る体験それ自身を楽しみたい、という面では別にブラウザ向けにこだわる必要もない。PC用アプリやスマホ用アプリでもよい。プチコン4などを使ってSwitch向けゲームを作っても良い。MakeCodeで作ったゲームは好きなハンドヘルドデバイスで遊ぶこともできる。PICO-8用ゲームをハンドヘルドデバイスで動かしている人もいる。多くの人に手軽に遊んでもらいたい!という考え方だけでなく、このデバイス向けに作ってみるのが面白そう!というモチベーションで作るのも楽しい。自由に作ろう。

小さなゲームを作ること、それ自身が楽しいのだ

小さなゲームとは何か。スモールゲームマニフェスト(宣言書) 1 によれば、1プレイが10分以内に終わる、ブラウザなどで手軽に遊べるゲームを指す。

その定義で言うと、私は小さなゲームをすでに350個以上 2 作っていることになる。1年間で139個作ったこともある 3 。無類の小さなゲーム好きだ。

小さなゲームの何が良いって、短時間で作れるのが良い。速くて2時間、ちょっと苦戦しても10時間くらいではできるだろう。アートワークなどを凝り始めるといくらでも時間はかけられるが、ここでは1週間に1つゲームを作る、Game a week 4 のような取り組みでできる規模の、開発者目線でも小さなゲームとしたい。

短時間で作れるということは、いろんなアイデアを簡単に試すことができるということだ。「ヘンテコにおもしろい小さなゲームを作ろう」 5 というエッセイを、「ゲームクリエイターが知るべき97のこと2」という本に寄稿したのはだいぶ昔の2013年のことだが、そのころから私はちょっと変わったゲームを、いろいろ作って試してみるのが好きなのだ。

なぜ小さなゲームを作るのか。それは小さなゲームを作ることが、より大規模で完成度の高いゲームを作るための準備として大切である、のような話がよくある。ちょっと前に、初めてゲームを作る人向けのアドバイスとして、まず小さなゲームを作れという意見が圧倒的に多いという記事 6 があった。

「小規模でシンプルなもので構わないから、とにかく完成させリリースするんだ」とアドバイスする。そうした経験を重ねることで、開発のプロセスやツールの扱いに慣れていくとのこと。

'Make and release lots of small games before making a big one'というブログ記事 7 でも、大きなゲームを作る前に多くの小さなゲームを作る重要性を述べている。

最初のゲームとして大きなゲームにいきなり飛び込むのは、モチベーションを失い、そのゲームを最後までやり遂げることができなかったり、何年もかけて作ったものを見るのも嫌になったりすることにつながる。

でもそれだけじゃないんだ。小さなゲームには小さなゲームにしかない、ある種の魅力がある。そう私は思っている。

'How To Make Good Small Games'というブログ記事 8 がある。この記事では、小さなゲームでも優れたものはあり、それをどうやって作るかについて述べている。

このマニフェストのようなものである「優れたスモールゲームの作り方」は、この視点(小さなゲームは簡単な気晴らしにしかならず、「本物の」ゲームと同列に考えるべきではない)と折り合いをつけようとする試みである。それは12の考えに分かれており、主に難解な創造的理論(なぜ私は小さなゲームが好きなのか、なぜ私は小さなゲームを作るのが好きなのか)と、少し実践的なアドバイスで構成されている。あなたに「小さなゲームを作ろう」と言っても、最初から小さなゲームも良いものになると信じていないのであれば、あなたが本当に作りたいゲームを作る前にやらなければならない宿題だとしか聞こえないだろう。

12の考えとは以下の内容だ。

  1. ゲームの質はその規模とは無関係だ:小規模なゲームは作るのが簡単なだけでなく、うまく作るのも簡単である。ゲームが大きければ大きいほど、ゲーム内で気にかけなければならない部分が多くなり、失敗する可能性も高くなる。

  2. ゲームの質はその感情的な広がりとは無関係だ:短編小説が長大な小説や叙事詩とは機能が異なるのと同じように、小規模ゲームでは「成功」を構成する条件が異なる。

  3. ゲームは自らの成功の条件を定義する:あるがままを受け入れる。そして、そのあるがままが良いかどうかを判断する。

  4. ゲームはその約束を果たすことで成功する:新しいキャラクター、新しいメカニクスの登場はすべて約束だ。面白いアイデアを導入してすぐに放棄するのではなく、そのアイデアが発展し、ゲーム全体の展開に関わるものであることを約束する。

  5. 小さな約束をしたほうがゲームは成功しやすい:メカニクス、敵、アセット、キャラクター、ステージを少なくする。3つのアイデアを導入し、満足のいくクライマックスへと発展させるのは、10や100のアイデアよりも簡単だ。

  6. 面白く楽しい方法で約束を果たす:何があなたを笑顔にするのか?自分らしいゲームを作るという、あなたの個人的なスタイルが発揮される場所だ。

  7. 約束を過剰に果たさないこと:ゲームは長すぎることなく、適切なタイミングで終わること。

  8. フォームファクターはゲームの約束事の一部だ:プレイヤーに与える情報を少なくし、ゲームを起動してすぐにプレイを始められるようにすることで、プレイヤーの期待をかわす。

  9. ゲームを完成させてからリリースすること:「体験版」と銘打ったり、サブタイトルに「プロローグ」と入れたりしてリリースする前に、なぜゲームが完成する前にリリースしたいのか、自問するべき。

  10. 連作は近道ではない:ゲームをエピソードごとに2回以上に分けて、長い期間にわたってリリースすること。これはほとんど常に悪いアイデアだ。

  11. 流行る流行らないを心配する必要はない:ゲームで小さく具体的な目標を追求することは、小さく具体的な観客を呼び込むことでもある。

  12. 良いものは十分良い:自分が満足できるゲーム、心の底から良いと思えるゲームをコンスタントに作れるようになれば、大多数のゲーム開発者よりも何光年も先に進んでいることになる。

ちなみにこの記事には13個目があって、それは'Have fun :)'だ。新しいメカニクスを考えて、それを自分らしい方法でゲームにする。その過程が楽しいから、小さなゲームを作るのだ。それが一定数の人に届いて楽しんでもらえれば、それはさらに嬉しい。

小さなゲームを作ることは、ゲーム開発のスキルアップの文脈で語られることが多い。だけど、いろんなゲームのアイデアを考えて、実験して、うまくいったいかなかったと一喜一憂して、たまにみんなにお披露目する。そういったプロセスそれ自身が楽しめるに越したことはないよね。


1.

Manifesto Jamという、まずマニフェストを書いてからゲームを投稿しろという、特殊なGame Jam向けに書かれた、小さなゲームのマニフェスト

Small Games should be 10 minutes or less and it's best if they're playable in a web browser.

2.

JavaScriptのゲーム今は亡きFlashのゲーム、合わせて350個以上ある。

3.

4.

5.

6.

7.

It's here because, jumping straight into a big game as your "first" game is exactly how you end up losing motivation and never finishing that game, or ending up with something that ate years of your life that you can't even stand looking at anymore.

8.

This manifesto of sorts, “How to Make Good Small Games”, is an attempt to meet this perspective halfway. It’s divided into twelve thoughts, made up mostly of esoteric creative theory (why do I like small games? why do I like making small games?), and hopefully a little actionable advice. I can tell you “scope small uwu”, but if you don’t believe small games can be good in the first place, all you’ll hear is a homework assignment you have to do before you can make the games you really care about.

コードを実行できるようになったChatGPTなら直接ジェネレーティブアートを生成できるのでは?

ChatGPTのCode Interpreter機能によって、チャットの中でプログラムを実行してその結果を表示することが可能になった。

じゃあ前にやったChatGPTにジェネレーティブアートを作ってもらう試み、プログラムコードではなくその結果の画像をいきなり作ってもらえるのでは?

プロンプトを以下に変えた。

I want you to act as a generative art programmer.
Conceive an unprecedented abstract and geometric graphics piece,
centered around the theme of "[Theme name]". 
Consider using noise, mathematical functions or fractals to achieve this task.
Generate and interpret the code and show me the outputed graphics.

テーマ名:colorful wavesの結果は以下。

テーマ名:recursive life formsの結果は以下。

うーん、テーマに沿った何かを出してはくれるけど、ジェネレーティブアートっぽいかと言われると、どうだろう。あまりそんな感じはしない。

原因は明らかで、Matplotlib使ってグラフィックスを生成しているんだよね。

Let's use Python with libraries like numpy for the mathematical part and
matplotlib for the graphics part.

現状のCode InterpreterPython+限られたライブラリしか実行できないので、p5.jsのようなジェネレーティブアート向けライブラリを使った出力はできない。グラフを作成するなど、Code Interpreterが想定しているコードはうまく実行できるが、それ以外の用途向けには実行可能な言語やライブラリの充実を待つしかないね。ジェネレーティブアート用ライブラリだけでなく、SuperColliderみたいなアルゴリズム作曲言語とかも動かせるようになるといいな。

簡単なファンタジーコンソールを作ってみて非実在マシンの妄想を形にしよう

ファンタジーコンソールは、こんなゲーム機があったら面白いなという開発者の妄想を具現化したものだ。実在しなかった別のゲームボーイファミコンを勝手に考えてPC上で実装して遊ぶ、それがファンタジーコンソール。

ファンタジーコンソールの代表例はなんといってもPICO-8だ。128x128ドットの画面、4音同時再生、256個の8x8スプライトを持ち、Luaでの開発環境やドット絵エディタ、音楽エディタ、マップエディタなどを含むとてもリッチなマシンだ。

ちょっと前にPICO-8 Education Edition: for Webというのがリリースされ、Webブラウザ上からも手軽に試せるようになった。

コンソール(Video game console = ゲーム機)という名前にもかかわらず、ファンタジーコンソールは開発環境を内包した作りになっていることが多い。どちらかというとMSXのようなマイコンファミリーベーシックっぽいものになっている。Switch用のBASICであるプチコンもファンタジーコンソールの一種といえよう。

PICO-8レベルのファンタジーコンソールを作るのはとても大変だ。でも自分でもファンタジーコンソールを作ってみたい。ならば思いっきり仕様を絞る必要がある。例えばそうカセットビジョンみたいに、と言うのはカセットビジョンに失礼だ。カセットビジョンはドットの代わりに三角形などのキャラクタが表示できたり、ちゃんとスプライトを持っていたり、パドルコントローラが付いていたり、結構リッチなのだ。

もっと限られた仕様、ごく小さな画面、単純な音出力、簡素な入力手段しか持たないファンタジーコンソールを目指した結果、PEEKPOKEというファンタジーコンソールを作ってみた。

PCやスマホのブラウザで遊べます(下の画面をクリック)。

BOMB SNAKE

サンプルのスネークゲーム。上下左右 or WASDキーで蛇を動かして赤い爆弾を取って。スマホでも画面下のバーチャルパッドで操作できる。

PEEKPOKE memory map

PEEKPOKEではpeek命令とpoke命令しかマシンの制御に使えない。32x30ドット8色の画面と8x5のテキスト画面、7つのキー入力、単音ブザーのみ、という限定された機能を、メモリから操作できるメモリマップドI/Oです。開発環境は入ってません。普通にJavaScriptで書きます

コンソール独自の機能はすべてメモリに押し込んだうえで、開発環境はJavaScriptに丸投げしたので、作りはかなり簡単にできた。作れるゲームもかなり簡単なものに限られるが、ぎりぎりファンタジーコンソールを名乗れるのではないか。まあファンタジーコンソールに厳密な定義が無いから言える話でもある。あと起動時にスプラッシュスクリーンを入れると、なんとなくファンタジーコンソールっぽくなる。

開発環境抜きであればファンタジーコンソールを作る手間はだいぶ削減できるので、何か面白いスペックのコンソールを妄想して作ってみるのも楽しいかも。今回作ったものはだいぶ素直なアーキテクチャになったけど、もっとユニークな、それこそカセットビジョンのグラフィックスのような、独特の機能を持つコンソールを考えてみるのも良さそう。

Twitterがインターネットから切り離されてしまったが、だからといっていまさらブログ+RSSには戻れないので困った

ツイートやタイムラインが、Twitterにログインしないと見られなくなった。

前からログアウトした状態での検索ができなくなっていたが、これで本格的にTwitterはlogin wallの向こう側へ行ってしまい、インターネットから切り離されてしまった。上の埋め込みツイートだって今は見えているが、この調子だといつ見えなくなってもおかしくない。

インターネット上にログを残す用途にTwitterが使えなくなった今、代替手段として何があるだろう。昔に立ち戻るのであれば、ミニでない普通のブログに記録し、RSSリーダなどのアグリゲータで更新情報を得る、という方法になる。

ただもうSNSにどっぷりと浸かってしまった私にはこの方法は面倒くさすぎる。ちょっとした情報をいちいちブログに起こすのも面倒、RSSのリストを整備するのも面倒、リンク先のブログにいちいち飛ぶのも面倒、ブログにコメントを残すのはハードルが高い、リツイートはできない。

ログとアグリゲートを同時に扱うことで得られるSNSの利便性を、分散型のログと個人ごとのアグリゲータで実現するのは色々と難しそうだ。ただSNSがクローズドになっていっている今、オープンなSNS代替として、SNSと同等の使い勝手を目指したブログ+アグリゲータが出てきたりしたら面白いのだが。

(追記)

ログアウト時にコンテンツが見えないのは「一時的な緊急措置」とのこと。