3 ポイント 投稿者 GN⁺ 2023-11-01 | 1件のコメント | WhatsAppで共有
  • Javi LopezはGPT-4でコードを作成し、Midjourney・DALL·E 3でグラフィックを生成して、Angry Birds風の2D物理ゲームであるAngry Pumpkinsを制作した
  • 完成したものはWebでプレイできるが、モバイルでは動作せず、ゲーム画面下の説明に従えば自分だけのレベルも作成できる
  • グラフィックはAI画像生成で大半を作成し、一部のスプライトはPhotoshop/Photopeaで背景除去とクロップを行い、ゲームに合うよう整えた
  • コードはmatter.jsとp5.jsをベースに開始し、発射方式、衝突、パーティクル、モンスターの形状、間接的な衝撃判定をGPT-4と反復修正しながら拡張された
  • 全体のコードは約600行で、自分でコードを書いてはいないものの、1回のプロンプトで完成したゲームを得るというより、エラーを説明して修正する反復プロセスが必要だった

Angry Pumpkinsの成果物

  • Angry PumpkinsはAngry Birdsに似た方式の2D物理ゲームで、GPT-4、Midjourney、DALL·E 3を活用して制作された
  • プレイ可能なゲームはAngry Pumpkinsで確認できる
    • 現在モバイルでは動作しない
    • ゲーム画面下の説明を読むと、自分でレベルを作成してプレイする方法を確認できる
  • Javi Lopezは、自然言語だけで何かを作る新しい作業方式が可能になりつつあり、これを「歴史的瞬間」と見ている

グラフィックとコード制作の流れ

  • 画像生成とスプライト作業

    • DALL·E 3は、ハロウィンの雰囲気のホーム画面、「Angry Pumpkins」ロゴ、Playボタンのあるタイトル画面の生成に使われた
    • Midjourneyは、墓地の背景、2D地形、カボチャのキャラクター、緑のモンスター、木箱、骨、石、木の板といったゲームオブジェクトの作成に使われた
    • オブジェクトは「sprite stylesheets」形式で作成した後、Photoshop/Photopeaでクロップし、背景を除去した
    • 小さな細部要素はMidjourneyのinpaintingで補完した
  • GPT-4で作ったゲームロジック

    • 全ソースはsketch.jsで公開されている
    • ゲームコードは約600行で、Javi Lopezは自分で書いたコードはないと明かしている
    • 最初のプロンプトは、matter.jsとp5.jsを使い、マウスで角度と力を調整してボールを撃ち、2D物理で積まれた箱に当てるシンプルなゲームを作るというものだった
    • その後、Angry Birds式のマウス発射方式、Uncaught ReferenceError: Constraint is not definedエラーの修正、たいまつのパーティクル効果、円形モンスターの処理、間接的な衝撃判定などを繰り返し依頼した

単一プロンプトより重要な反復修正

  • 核心は、完成したゲームを一度に要求する方式ではなく、シンプルな動作基盤から始めて継続的に拡張・修正していく流れにある
  • 問題が起きるたびにエラーを明確に説明し、GPT-4に修正させた
  • 現在のGPT-4は単一プロンプトだけでゲーム全体を生成する段階ではないが、将来的には依頼するだけでAAA級ビデオゲームを作れるようになるという期待が込められている

1件のコメント

 
GN⁺ 2023-11-01
Hacker News のコメント
  • Angry Birds で PM として働いていましたが、これは本当に優れたデモです
    オリジナルは Box2D と Lua スクリプティングを使っており、当然ながら敵やレベルも手作業で作る必要がありました
    現在の技術水準でヒットゲームを作れるとは期待しておらず、自分の実力よりも技術的な限界に縛られる可能性が高いでしょう
    それでも、素早いアイデア検証、プロトタイプ、ゲームジャムにはゲームチェンジャーとなるツールで、子どもたちがアイデアで遊べる Scratch の代替としても良さそうです

  • 最近、よく知らないフレームワーク2つで基本的な REST API と CRUD フロントエンドを作る必要があり、似たような実験をして、GPT-4 にすべてのコードを生成させました
    ただドキュメントを見ながら自分で書くより遅かった可能性が高く、そのフレームワークに慣れている人ならずっと速かったと思います
    複雑な部分にはかなり具体的で長いプロンプトが必要で、アプリ全体を作るのに約5時間かかり、そのかなりの時間は遅い ChatGPT の出力を待つことに費やしました
    慣れたフレームワークなら2時間以内でも終わった気がします
    正しいやり方で進めているか確認するには確かに有用で、質問できる専門家が待機しているような感覚でした
    形式の整ったボイラープレートコードを生成するのにも良かったですが、日々の開発で今以上に多用することはなさそうです
    ほとんどの場合、フレームワークをよく理解して自分で書くほうが速いです

    • 正しいやり方か確認する用途では驚くほど良かったです
      「{foo} プラットフォームのプロジェクトではディレクトリ構造はどうするのがよいか?」や「{language y} で {x} を慣用的に行う方法は?」のような質問をよくするようになりました
      多くの言語の多くのプロジェクトを見ているという強みがあるので、質問によってはそれ自体がかなり良い答えにつながります
    • 私の経験も似ています
      依然としてプログラミングを理解している必要があり、単に自然言語の英語でコードをタイプしているようなものです
    • 見落とされがちなのは、ほとんどの人が1日に最高の生産性で集中してコーディングできる時間は数時間しかないという点です
      GPT-4 の面倒を3時間見ながらコードを書かせても、その日にはまだ「消耗していない」最高のコーディング生産性の3時間が残っているかもしれません
    • GPT-4 を ChatGPT Plus で使っているのか、API で使っているのか気になります
      API なら、普段どんなツールでアクセスしているのかも気になります
    • 自分で書くのにかかる時間を推測せず、実際に測ってみるとよいです
      結果は意外かもしれません
  • 「ChatGPTで30分でiOSアプリを作った!」みたいな記事の洪水より、これはずっと興味深い
    そういう記事は単なる Hello World を作っただけかもしれず大した意味はないが、これは少なくとも完成物を見せていて、実際かなり印象的
    ただし知っておくべき細部は、かかった時間、プロンプト数、必要だった方向修正の回数、そして作った人が関連技術にどれだけ熟練していたか
    個人的には ChatGPT がいろいろな場面で大きな助けになると感じているが、コード生成はその一つではなかった

    • https://twitter.com/javilopen/status/1719363669685916095 が関連している
      「ゲームは600行だけで、自分は1行も書いていないが、[ゲームのコーディング]が最も難しい部分だった」という内容
      Hello World ではないが、買い物リストよりはるかに難しいとも言いにくい
      それでも 600行 といくつかのライブラリで Angry Birds を作れるという点が最も印象的
    • ChatGPT のコード生成で Flask、Python、HTML+JS+CSS、SQLite ベースのサイト全体を作ってみたが、驚いた
      運用中のコードが 5千行 ほどあり、全部動いている。トラフィックは多くないが、それでも本番環境
      限界を理解してプロンプトをよりうまく書くこと、幻覚の可能性を見抜いてリスクを尋ねることが非常に大きな要素
      特によく知らない技術で最も良かった。Android 開発者だが、15年ほど自分では直接やっていなかった Web サイト制作に使っている
      一番すごかった部分はシステム管理とサーバー運用の支援で、gunicorn エラーのデバッグ能力が高い
      プロジェクトが大きくなってコンテキストを失うと出力コードを修正する必要があるが、より大きなプロジェクトで最大の障害は コンテキスト長の制限 で、近いうちに緩和されそう
      最近作ったサイトはコードの約95%を ChatGPT が書いた https://cosmictrip.space/ で、GPT-4 でプロンプトを生成したあと DALL-E で宇宙画像を作っている
      シンプルなサイトだが、今は GPT+DALL-E ベースのオープンエンドな画像+テキスト AI アドベンチャーゲームも作っている
      DALL-E 3 API が出たら11月6日までのリリースを期待していて、このアドベンチャーゲームもコードの95%以上を ChatGPT が書いている
      コード生成があまりにうまくいくので、自作エージェントに GPT-4 API を使っている
      関数呼び出しで構造化されたサブタスクを作り、エージェントにそのコードを書かせ、ファイルをコンテキストとして含めたりコードと対話したりする機能も付けた
      まだ公開できるレベルではないが、GPT-4 のコード生成能力は本当にすごい。ただしプロンプトの経験が必要
      最初に書いたプロンプトが良い可能性は低いので、自分の作っているエージェントがそこをうまく解決してくれることを期待している
      アイデアは Jira/カンバン風ボード で AI コーダーをタスクに割り当て、人間が承認・修正し、AI が作業を確認しながらチケットが自動的にカラムを移動する方式
    • オープンソースの Angry Birds クローンは多いので、見た目ほど印象的ではない
      既存テンプレートが何十個もない 新しいゲーム をプログラミングするほうが、より良いリトマス試験紙になるだろう
    • もう一つ興味深い問いは、「動画に出ていない他のすべての場合にはどう動くのか」
    • 正直、少し信じがたい
      GPT-4 はこうした作業をうまくこなすが、自分の経験では 反復的な改善 はうまくいかない
      会話が長くなるほど以前のコンテキストを失い、生成コードが以前の動作から外れていく
      たとえば「このバグを直して」が、別の機能を壊す解決策につながることは簡単にある
      スレッドのコード(1)が最終結果(2)に存在しているように見えるが、コードの最上部にある点を見ると、ChatGPT に600行以上の単位で繰り返し生成させたという意味かもしれない
      これはかなり疑わしい
      500行目で定義されたあと20行目で新しい Slingshot を作るのは、そうするよう具体的に指示しない限り、非常に起こりにくい
      loadImage('stone2.png'); も偶然に正しいファイル名とスプライトサイズを選んだということなのか? それをすべてプロンプトで与えてコードが書かれたということなのか? 実際に使ったプロンプトを見せるべき
      はるかにありそうなシナリオは、クラスオブジェクト群を比較的独立に生成したあと人間が大きなファイルに組み立て、全体を入力としてコピーし、それから「このような関数を書いて」のような コードプロンプト を作ったというもの
      主張どおりプロンプトだけを使った可能性が不可能ではないが、いいねや評判のために「コーディングを全部やらせた」という部分を大きく誇張しているように感じる
      手で一部のコードを書いたり組み立てたりしたあと、入力として入れて「これもやって」のようにプロンプトした可能性が高そう
      だから出力は「100%生成」かもしれないが、人々が想定している方式ではないかもしれない
      このアプローチは GPT-4 に既存コードを書き直させるが、コード全体に意図を説明するコメントを明示的に要求または追加しないと、以前の機能から徐々に漂流していく
      テストスイートがなければ、こうした微妙な漂流に気づかず機能が壊れる
      作者がこうしたことをしたという言及もない
      さらにこの人は AI 教材を販売する利害関係(4)があるので、この分野の専門家のように見えることが利益になり、X で質問されたときも追加の詳細、段階的な Git 履歴、実際に使ったプロンプトを提供しなかった
      詳細不足と信じがたい結果を考えると、このケースでは懐疑的に見るのが妥当
      CodeLlama 34B や GPT-3.5 のようなモデルでこの種の成果物を作ることはできるだろうが、説明された方式ではないはず
      GPT-4 でも可能か確信が持てない。プロンプトが本物らしくないほど雑に見える(5)
      ただ、より多くの詳細で反論してくれるならよいし、GPT-4 が良いツールであることは確か
      [1] - https://nitter.net/pic/orig/media%2FF9xoI8mXgAAn7v9.jpg
      [2] - https://bestaiprompts.art/angry-pumpkins/sketch.js

[3] - https://nitter.net/javilopen/status/1719363669685916095#m
[4] - https://javilopen.substack.com/
[5] - “では、モンスターを円形にしてください。そして十分注意してください。スケーリングと衝突領域については、長方形のものに対してすでに存在するのと同じ手法を適用し、以前のように台無しにしないでください。”

  • 息子がローディングスピナーを怒ったように何度もタップしているのを見て、暇な日曜の午後に私とGPTでこのゲームをコーディングした
    https://spinner.franzai.com/
    インタラクティブなローディングスピナーゲームは面白いUXパターンになり得ると思う
    何かを待っている間でも、ユーザーの行動が影響しているというフィードバックを与えられる

    • ローディング画面に対する面白いアプローチで、個人的にはこういう機能を使うゲームがもっとずっと多いと思っていた
      もちろんAAAゲームではなく、インディーゲームの話
      以前この特許が失効したというニュースを見たはっきりした記憶があるが、調べてみるとその「以前」はもう8年前だった
      https://www.eff.org/deeplinks/2015/12/loading-screen-game-pa...
    • 面白い事実として、ローディング中のミニゲームには、そうした開発を妨げてきた特許があった
      Namcoが保有していたと理解していて、Ridge Racerで見ることができる
    • フィンガータッピングテスト:
      https://psycnet.apa.org/record/2014-37068-023
    • Budokai 3(PS2)のローディング画面で、アナログスティックをぐるぐる回しながらSaibamenが育つのを見ていた記憶がある
  • AIが開発を変えていることは、もはや疑いようがない
    先週だけで中規模のサービスを2つ作ることができ、数千行のPythonコードだったが、Pythonは10年以上使っていなかった言語だった
    本当に印象的なのは、たいてい自分で書いたであろうコードより良い点だ
    立派なREADME.mdが必要なら、ルートやCLI引数などが入ったソースコードを渡せば生成してくれる
    テストも望めば作ってくれる。開発者にとって、これほど楽な時代はなかった
    コード生成ではGPT-4がGPT-3.5を圧倒している
    GPT-3.5は非常に緻密な例を与えればコピーはそれなりにうまくやるが、GPT-4はある程度「考えている」感じがする
    経験上、GPT-4 32kコンテキストはかなり頻繁に失敗する
    たとえば1万トークン以上、おおよそ3万文字以上を生成するなら、何度か再試行が必要になるかもしれない
    またChatGPTは、些細でない作業には理想的なインターフェースではない
    APIを直接使うか、32kコンテキストを使えるAzure OpenAI Chat Playgroundのようなものを使うのがよい
    宣伝も兼ねると、プロンプト生成の反復的な雑務を自動化するオープンソースアプリを作った: https://github.com/codespin-ai/codespin-cli

  • この10年、ノーコードツールには莫大な投資が行われてきたが、今やChatGPTがあまりに上手にコードを書くので、技術的な勘はあるがコーディングはしない人にとっては、おそらくより速く、より柔軟で、使い勝手も同程度に近づいているという点が興味深い
    最近、MendixでRESTサービスを利用・公開するデモアプリを作る必要があったが、細部を把握するのに数日かかった
    同じことをChatGPTで、どんな言語でも、たとえばbashでやっていたら、数分で済んだ気がする
    デプロイとバージョン管理はPaaS/IaaSで大した技術力なしに解決できるし、特にエンタープライズ向けノーコードプラットフォームの費用と比べればなおさらだ
    個人的な偏りかもしれないが、真面目な仕事をするにはノーコードプラットフォームのほうが煩わしく感じられて、ずっと好きではなかったし、似た理由でActiveRecord ORMも嫌いだ
    それでもノーコードはかなり近いうちに時代遅れになりそうに見える
    質問してコピー&ペーストするだけでいいのに、誰がドラッグ&ドロップをしたがるだろうか?

    • 概念的には、ほぼ完璧に近い解決策のように思える
      ノーコードは簡単だが硬直的で、コーディングは柔軟だが退屈でミスが起きやすい
      欲しいものを言葉で説明して素早くコードを得られ、そのコードがきれいでさえあれば、必要に応じて調整する柔軟性が生まれる
      場合によっては、この事例のように調整すら不要かもしれない
      これからが楽しみだ
    • 本当に数分だったのだろうか? 実際にやってみて、推測ではなく実際のフィードバックをくれるとありがたい
      それほど時間はかからないと思う
  • これは統計的な盗作ロンダリングで、なかなか見事だ
    個人的には、HALを阻止するふりをしながら現在の大きなツルハシ販売業者に市場の堀を作ってやることより、ロンダリングのゴールドラッシュを止めることのほうが、法的にはより緊急の優先事項だと思う

  • GPT-4とAIツールをきちんと使って生産性を100倍にしたフリーランサーやリモートワーカーは、きっといるはずだ
    こうした見事な裏技が真空の中にだけ存在しているとは想像しにくい
    2年後に何が可能になるかを考えると、すでに魔人は瓶から出てしまっている

    • 100倍というなら、もともとそれほど生産的ではなかったのではないだろうか
      ChatGPTで生産性を「100倍」に上げるコツを知っているなら共有してほしい
  • 正直、こういう記事を見るたびに自分の雇用可能性がますます心配になる
    バックアッププランもないし、ソフトウェアエンジニアリングを学ぶのにあまりに多くの時間を費やしてきたが、状況は良さそうに見えない

    • その点は本気で心配していない
      他の人たちも言っているように、一般の人々がLLMに必要な動作するソフトウェアを作らせられるほど詳細な製品仕様を書けるようになったら、プログラマーは困るだろう
      だがそれは、プログラミングとかなり似ているように聞こえる
      私たちの仕事は変わると思う。キーボードでコードを打つ時間は減り、何を作るかを考える時間が増えるだろう
      むしろ私たちは、より価値のある存在になる可能性が高い。はるかに多くのことを成し遂げられるようになるはずだから
  • 潜在的なRPGゲーム用に、パラディンのトップダウン・アニメーションスプライトシートを得ようとしてみたが、その失敗の過程はここにある: https://imgur.com/a/2uJyUT3
    実際の順序としては、まずトップダウンのバリエーションを試し、最後に気になって側面視点を入れてみたものだ

    • 以前MidjourneyでTTRPGトークンを作ったことがあるが、最も効いた方法はaerial viewと書くことだった
      top downはうまくいくときもあればそうでないときもあり、非常に不安定だった
      DALL-E 3にも同じような指示が必要なのか気になる