FOR CREATORS
指示文のコピーから、AIでの生成・修正、投稿、フィード公開まで。実際の画面の実録でたどるチュートリアルです。
<iframe sandbox="allow-scripts">(opaque origin)と厳格なCSPの下で動きます。fetch / eval / document.cookie は実行時に無効です。localStorageはメモリ上だけの実装に差し替わり、リロードのたびに中身が空になります。ハイスコアなどの保存には使えません。外部リンクや画面遷移(window.open / location)もブロックされます。遷移はゲーム内の画面切り替えで表現してください。
parent.postMessage({ type: 'gameOver', score }, '*') を呼び出してください。この呼び出しはリザルト画面へ移る合図も兼ねています。PUNIPOは受け取った直後から画面を監視し、動きが止まった時点(最長3秒)でリザルトを重ねます。爆発や崩壊などの終了演出を見せたい場合は、演出を見せ切ってから呼び出してください。
上の技術要件をまとめた指示文です。AIチャットにそのまま貼り付けてゲームを生成させてください。
HTML5のミニゲームを1つ作ってください。以下の条件をすべて満たしてください。
- 1ファイルで完結するHTMLにすること。CSSとJavaScriptは同じファイルの中に書き、外部ファイルを読み込まないこと
- 完成したHTMLファイルは1MB以内に収めること
- 画面サイズを固定pxや固定のアスペクト比で決め打ちにせず、実際の画面の縦横比に追従させること(縦長・横長のどちらでも黒帯や見切れが出ないようにする)
- fetch・XMLHttpRequest・evalなど、外部通信やeval系の機能は使わないこと(実行環境で無効化されます)
- localStorageは実行環境ではメモリ上だけの実装に差し替えられ、リロードのたびに中身が空になること。ハイスコアやセーブデータの保存には使わないこと
- 外部リンクや画面遷移(window.open・location での遷移)は使わないこと。フレームの外へ出る遷移はブロックされます。参考ページを見せたいときも含め、すべてゲーム内の画面切り替えで完結させること
- ゲームが終了したら parent.postMessage({ type: 'gameOver', score }, '*') を呼び出し、scoreに数値のスコアを入れること。この呼び出しの直後にリザルト画面が重なるので、ゲームオーバーの演出がある場合は演出が終わってから呼ぶこと
完成したら https://punipo.com/create から投稿してください。 fetchでデータを取りに行こうとする(CSPにより実行時に通信できない)。window.open / location は遷移がブロックされる。ゲーム内の画面切り替えで表現する)。準備ができたら投稿ページからゲームを送信してください。 よくある疑問はよくある質問にまとめています。 他の投稿先と比べたい人向けに、7サイトの比較記事(Zenn)も書きました。