Pyxel作者です。
ちょっとした出来心で、3KBしか使えない、小さなゲームエンジンを作ってみました。
名前は「Playload(プレイロード)」。
GitHubにてオープンソースとして公開中です。ぜひスターで応援をよろしくお願いします。
Playloadの基本仕様は以下になります。
- JavaScript、圧縮後3KB(3,000バイト)まで
- 160×144ピクセル、8色、CRT表示付き
- 8×8ドットの文字・記号・Unicode絵文字
- ZX Spectrum 128のPLAY互換、3チャンネル
- 4方向+2ボタン
- 6関数、2変数、1コールバックのAPI
- 編集・実行・保存・共有までブラウザで完結
なぜ3KB?
かつてのホビープログラミングは32KB、64KBのような、小さな本体メモリとの戦いでした。プログラムのサイズの小ささを競う「一画面プログラム」みたいなジャンルもありました。
現代において、こうした容量との戦いはもう昔のものになったのでしょうか。いいえ違います。舞台は 「Xに投稿できるURL文字数」 との戦いへと移ったのです!
ということで、XにURLを投稿する際には、4096文字までのURLであれば23文字に縮めてくれます。本体URLの分を引いても、約4,000文字はデータとして使うことができます。Base64変換で増える分を逆算すると、圧縮後約3,000バイトまで。そこでコードの上限を圧縮後3KBにしました。
このサイズを守れば、URLのペイロードにゲーム全体を含めることができます。ゲームがペイロード、遊べるペイロード、つまり「Playload」というわけです!
PlayloadのゲームURLはこんな感じになっています。
https://kitao.dev/playload/app/#v1.圧縮したゲームコード
JavaScriptで書いたコードを圧縮し、Base64urlでエンコードしてURLにつける形です。
3KBでどこまで作れるのか?
シューティング、アクション、パズル。公式サンプルのゲームも当然どれも3KB以内です。
| Shooter・2.34KB | Jump・1.76KB | Lights Out・1.35KB |
|---|---|---|
![]() |
![]() |
![]() |
| インベーダー風ゲーム | ジャンプアクション | パズル「ライツアウト」 |
画像をクリックすると実際のアプリが起動します。コードも直接編集できます。
絵文字による現代版アスキーゲーム
画像がなくてもゲームを作れるように、Playloadには、Unicodeの絵文字に対応した8x8のドット絵が多数内蔵されています。
この文字をコードに書くと、ドット絵を表示できます。
例えば、ゲームステージなども👾や💎のような絵文字を使って、文字列で書けます。
const stage = [
'▓▓▓▓▓▓▓▓▓▓',
'▓👾 💎 ▓',
'▓ ▓▓ ▓',
'▓ 🏰 ▓',
'▓▓▓▓▓▓▓▓▓▓',
];
put(1, 1, stage.join('\n'));
function tick() {}
冒頭のサンプル、Glyph Questもこの作りになっています。3ステージ入って約2.05KBです。
音はZX Spectrum 128から
サウンドは、1980年代の英国のパソコン「ZX Spectrum 128」のPLAY命令に互換性を持たせました。
右側のヒートシンクから「トーストラック」と呼ばれる機種です。BASICから文字列を渡すだけで3チャンネルの音楽を鳴らせます。
Playloadではplay()に音符やテンポを書いた文字列を渡します。音楽も文字列で書く形です。
以下のサンプルで実際に音を再生することができます。
- Chiptuneサンプル:メロディー、ベース、ノイズドラムで1曲。約1.26KB。
- Music Boxサンプル:音符や休符を並べて作曲できる小さな音楽ツール。約0.90KB。
コードの保存はブックマーク
コード=URLなので、ブラウザのブックマークとして保存ができます。
編集内容は随時URLに反映されるので、「敵を追加する前」「ステージ2ができた版」と節目ごとにブックマークすれば、その版に戻れます。
(奇妙な)ユーザー作品が続々登場
ユーザーの方々も早速、3KBに無理やり収めた面白い作品を公開し始めてくれています。
frenchbreadさんの「Dungeon Escape」。一人称視点のダンジョン探索に、BGMまで入っています。
haruka_appsさんのメガデモ「rubble.」。ちょっと反則的なAPIの使い方です。こちらも音付きです。
みなさんも是非、Playloadで3KBの壁と戦ってみてください。
Xでの面白い作品のご投稿をお待ちしています!
Playloadの作品情報は私のXアカウントでも随時紹介していきます。よければフォローしてみてください。





