Menyalin 'Angry Birds' hanya dengan AI
(twitter.com/javilopen)- Javi Lopez membuat Angry Pumpkins, game fisika 2D bergaya Angry Birds, dengan menghasilkan kode lewat GPT-4 dan membuat grafis lewat Midjourney·DALL·E 3
- Hasilnya bisa dimainkan di web, tetapi tidak berjalan di perangkat mobile, dan dengan mengikuti penjelasan di bawah layar game, pemain juga bisa membuat level mereka sendiri
- Sebagian besar grafis dibuat dengan generator gambar AI, lalu beberapa sprite dirapikan agar sesuai untuk game melalui penghapusan latar belakang dan crop di Photoshop/Photopea
- Kode dimulai berbasis matter.js dan p5.js, lalu diperluas melalui revisi berulang bersama GPT-4 untuk mekanisme peluncuran, tabrakan, partikel, bentuk monster, dan penilaian dampak tidak langsung
- Total kode sekitar 600 baris; ia memang tidak menulis kode secara langsung, tetapi alih-alih mendapatkan game jadi dari satu prompt, tetap diperlukan proses berulang untuk menjelaskan error dan memperbaikinya
Hasil Angry Pumpkins
- Angry Pumpkins adalah game fisika 2D yang bekerja mirip Angry Birds, dibuat dengan memanfaatkan GPT-4, Midjourney, dan DALL·E 3
- Game yang bisa dimainkan dapat dilihat di Angry Pumpkins
- Saat ini tidak berjalan di mobile
- Jika membaca penjelasan di bawah layar game, Anda bisa mengetahui cara membuat dan memainkan level sendiri
- Javi Lopez melihat bahwa cara kerja baru untuk membuat sesuatu hanya dengan bahasa alami kini mulai memungkinkan, dan ia menyebutnya sebagai “momen bersejarah”
Alur pembuatan grafis dan kode
-
Pembuatan gambar dan pekerjaan sprite
- DALL·E 3 digunakan untuk membuat layar beranda bernuansa Halloween, logo “Angry Pumpkins”, dan layar judul dengan tombol Play
- Midjourney dipakai untuk membuat latar kuburan, medan 2D, karakter labu, monster hijau, peti kayu, tulang, batu, dan objek game seperti papan kayu
- Objek dibuat dalam bentuk “sprite stylesheets”, lalu di-crop dan latar belakangnya dihapus dengan Photoshop/Photopea
- Detail-detail kecil dilengkapi dengan inpainting dari Midjourney
-
Logika game yang dibuat dengan GPT-4
- Seluruh source code dibuka di sketch.js
- Kode game sekitar 600 baris, dan Javi Lopez menyatakan tidak ada kode yang ia tulis sendiri
- Prompt awalnya adalah membuat game sederhana dengan matter.js dan p5.js, di mana bola ditembakkan dengan mengatur sudut dan kekuatan lewat mouse untuk mengenai kotak-kotak yang ditumpuk dengan fisika 2D
- Setelah itu, ia berulang kali meminta mekanisme peluncuran mouse ala Angry Birds, perbaikan error
Uncaught ReferenceError: Constraint is not defined, efek partikel obor, penanganan monster berbentuk lingkaran, dan penilaian dampak tidak langsung
Iterasi berulang lebih penting daripada satu prompt tunggal
- Intinya bukan meminta game selesai dalam sekali jalan, melainkan memulai dari perilaku sederhana lalu terus memperluas dan memperbaikinya
- Setiap kali muncul masalah, ia menjelaskan error dengan jelas lalu meminta GPT-4 memperbaikinya
- Saat ini GPT-4 memang belum sampai pada tahap menghasilkan seluruh game hanya dari satu prompt, tetapi ada harapan bahwa ke depannya game video kelas AAA bisa dibuat hanya lewat permintaan
1 komentar
Komentar Hacker News
Saya pernah bekerja sebagai PM di Angry Birds, dan ini benar-benar demo yang luar biasa
Gim aslinya menggunakan Box2D dan scripting Lua, dan tentu saja musuh serta level juga harus dibuat sendiri
Dengan kondisi teknologi saat ini, saya tidak berharap ini akan menghasilkan gim hit; kemungkinan besar akan lebih terikat oleh batasan teknologi daripada kemampuan sendiri
Meski begitu, untuk validasi ide cepat, prototipe, dan game jam, ini adalah alat yang mengubah permainan, dan juga terlihat bagus sebagai alternatif Scratch agar anak-anak bisa bermain-main dengan ide mereka
Belakangan saya melakukan eksperimen serupa karena harus membuat REST API dasar dan frontend CRUD dengan dua framework yang belum begitu saya kenal, dan saya meminta GPT-4 membuat semua kode
Kemungkinan besar lebih lambat daripada menulis sendiri sambil membaca dokumentasi, dan sepertinya orang yang familier dengan framework tersebut akan jauh lebih cepat
Bagian yang rumit membutuhkan prompt yang sangat spesifik dan panjang; seluruh aplikasi memakan waktu sekitar 5 jam, dan cukup banyak waktu dihabiskan menunggu output ChatGPT yang lambat
Kalau framework-nya sudah saya kenal, rasanya bisa selesai dalam kurang dari 2 jam
Ini jelas berguna untuk memastikan apakah saya melakukannya dengan cara yang benar, rasanya seperti ada pakar yang siap ditanyai
Ini juga bagus untuk menghasilkan kode boilerplate yang formatnya rapi, tetapi saya rasa saya tidak akan memakainya lebih banyak daripada sekarang untuk pengembangan sehari-hari
Dalam kebanyakan kasus, lebih cepat memahami framework dengan baik lalu menulisnya sendiri
Saya jadi sering bertanya hal seperti “apa struktur direktori yang baik untuk proyek platform {foo}?” atau “bagaimana cara idiomatis melakukan {x} di {language y}?”
Karena punya keunggulan sudah melihat banyak proyek dalam berbagai bahasa, untuk pertanyaan tertentu hal itu sendiri menghasilkan jawaban yang cukup bagus
Tetap harus memahami pemrograman, hanya saja seperti mengetik kode dalam bahasa Inggris alami
Kalaupun Anda mengawasi GPT-4 selama 3 jam agar menulis kode, pada hari itu Anda mungkin masih punya 3 jam produktivitas coding puncak yang belum “terpakai”
Kalau lewat API, saya juga penasaran biasanya Anda mengaksesnya dengan alat apa
Hasilnya bisa mengejutkan
Ini lebih menarik daripada banjir tulisan seperti “Membuat aplikasi iOS dengan ChatGPT dalam 30 menit!”
Tulisan seperti itu bisa saja hanya membuat Hello World sederhana, jadi tidak terlalu bermakna, tetapi yang ini setidaknya menunjukkan hasil jadi dan memang cukup mengesankan
Namun detail yang perlu diketahui adalah waktu yang dibutuhkan, jumlah prompt, berapa kali perlu koreksi arah, dan seberapa mahir pembuatnya dalam teknologi terkait
Secara pribadi, saya merasa ChatGPT sangat membantu dalam banyak situasi, tetapi pembuatan kode bukan salah satunya
Isinya kira-kira “gamenya hanya 600 baris dan saya tidak menulis satu baris pun, tetapi [coding game] adalah bagian tersulit”
Ini bukan Hello World, tetapi sulit juga untuk menyebutnya jauh lebih rumit daripada daftar belanja
Meski begitu, hal paling mengesankan adalah Angry Birds bisa dibuat dengan 600 baris dan beberapa library
Ada sekitar 5 ribu baris kode yang berjalan di produksi, dan semuanya berfungsi. Trafiknya tidak besar, tetapi tetap lingkungan produksi
Mengetahui batasannya, menulis prompt dengan lebih baik, mengenali kemungkinan halusinasi, dan menanyakan risikonya adalah faktor yang sangat besar
Ini paling bagus terutama untuk teknologi yang tidak terlalu saya kuasai. Saya developer Android, dan saya memakainya untuk membuat situs web yang sudah sekitar 15 tahun tidak saya kerjakan langsung
Bagian paling keren adalah bantuan administrasi sistem dan operasi server, dan kemampuannya men-debug error gunicorn bagus
Saat proyek membesar dan konteks hilang, kode keluaran harus diperbaiki, tetapi hambatan terbesar pada proyek yang lebih besar adalah batas panjang konteks, dan sepertinya ini akan segera berkurang
Situs yang baru-baru ini saya buat adalah https://cosmictrip.space/, sekitar 95% kodenya ditulis oleh ChatGPT; saya membuat prompt dengan GPT-4 lalu membuat gambar luar angkasa dengan DALL-E
Itu situs sederhana, tetapi sekarang saya juga sedang membuat game petualangan AI terbuka berbasis GPT+DALL-E untuk gambar+teks
Jika API DALL-E 3 keluar, saya berharap bisa merilisnya sebelum 6 November, dan untuk game petualangan ini juga lebih dari 95% kodenya ditulis oleh ChatGPT
Pembuatan kodenya berjalan sangat baik sampai saya memakai API GPT-4 untuk agen yang saya buat sendiri
Saya membuat subtugas terstruktur dengan function calling, membiarkan agen menulis kodenya, lalu menambahkan kemampuan untuk menyertakan file sebagai konteks atau bercakap-cakap dengan kode
Belum pada level untuk dipublikasikan, tetapi kemampuan GPT-4 dalam menghasilkan kode benar-benar hebat, hanya saja perlu pengalaman membuat prompt
Prompt pertama yang ditulis kecil kemungkinan bagus, jadi saya berharap agen yang saya buat bisa mengatasi bagian itu dengan baik
Idenya adalah menugaskan AI coder ke pekerjaan di board bergaya Jira/Kanban, manusia menyetujui dan memperbaiki, lalu tiket otomatis berpindah kolom ketika AI memeriksa pekerjaannya
Memprogram game baru yang tidak punya puluhan template yang sudah ada akan menjadi uji lakmus yang lebih baik
GPT-4 memang bagus untuk pekerjaan seperti ini, tetapi berdasarkan pengalaman saya, perbaikan iteratif tidak berjalan dengan baik
Semakin panjang percakapan, semakin ia kehilangan konteks sebelumnya dan kode yang dihasilkan menyimpang dari perilaku sebelumnya
Misalnya, “tolong perbaiki bug ini” bisa dengan mudah berujung pada solusi yang merusak fitur lain
Kode di thread (1) tampaknya ada di hasil akhir (2), dan karena letaknya di bagian paling atas kode, ini bisa berarti ChatGPT diminta membuat ulang dalam satuan lebih dari 600 baris secara berulang
Ini cukup mencurigakan
Membuat Slingshot baru di baris 20 setelah didefinisikan di baris 500 sangat kecil kemungkinannya kecuali secara spesifik diperintahkan begitu
loadImage('stone2.png');juga apakah kebetulan memilih nama file dan ukuran sprite yang benar? Apakah semua itu diberikan di prompt lalu kodenya ditulis? Prompt yang benar-benar dipakai perlu diperlihatkanSkenario yang jauh lebih masuk akal adalah objek-objek class dibuat relatif independen, lalu manusia merakitnya menjadi file besar, menyalin semuanya sebagai input, kemudian membuat prompt kode seperti “tuliskan fungsi seperti ini”
Bukan mustahil hanya prompt yang dipakai seperti klaimnya, tetapi rasanya bagian “semua coding diserahkan ke AI” sangat dilebih-lebihkan demi like dan reputasi
Tampaknya lebih mungkin sebagian kode ditulis atau dirakit secara manual, lalu dimasukkan sebagai input dan diprompt seperti “tolong kerjakan ini juga”
Jadi output-nya bisa saja “100% dihasilkan”, tetapi mungkin bukan dengan cara yang diasumsikan orang-orang
Pendekatan seperti ini membuat GPT-4 menulis ulang kode yang sudah ada, tetapi jika tidak secara eksplisit meminta atau menambahkan komentar yang menjelaskan maksud di seluruh kode, fungsionalitas sebelumnya akan perlahan bergeser
Tanpa kumpulan tes, penyimpangan halus seperti ini tidak akan terdeteksi dan fitur akan rusak
Tidak ada juga penyebutan bahwa penulis melakukan hal seperti itu
Selain itu, orang ini punya kepentingan (4) karena menjual materi edukasi AI, jadi ia diuntungkan jika terlihat seperti pakar di bidang ini, dan ketika ditanya di X pun ia tidak memberikan detail tambahan, riwayat Git bertahap, atau prompt yang benar-benar dipakai
Melihat kurangnya detail dan hasil yang sulit dipercaya, masuk akal untuk bersikap skeptis dalam kasus ini
Model seperti CodeLlama 34B atau GPT-3.5 mungkin bisa membuat hasil semacam ini, tetapi bukan dengan cara yang dijelaskan
Saya juga tidak yakin apakah GPT-4 bisa melakukannya. Prompt-nya tampak terlalu asal sampai tidak terlihat seperti prompt sungguhan (5)
Namun saya akan senang jika ini dibantah dengan detail yang lebih banyak, dan GPT-4 memang alat yang bagus
[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] - “Sekarang, buat monster-monsternya berbentuk lingkaran, dan hati-hati sekali: terapkan teknik yang sama yang sudah ada untuk yang berbentuk persegi panjang terkait penskalaan dan area tabrakan, dan jangan mengacaukannya seperti sebelumnya.”
Saat melihat anak saya terus mengetuk loading spinner seolah kesal, saya dan GPT membuat game ini pada Minggu sore yang santai
https://spinner.franzai.com/
Menurut saya game loading spinner interaktif bisa menjadi pola UX yang menarik
Ia bisa memberi umpan balik bahwa tindakan pengguna tetap berpengaruh meski sedang menunggu sesuatu
Tentu saja maksud saya di ranah game indie, bukan game AAA
Saya jelas ingat pernah membaca berita bahwa paten ini sudah kedaluwarsa, tetapi setelah dicari, ternyata “dulu” itu sudah 8 tahun lalu
https://www.eff.org/deeplinks/2015/12/loading-screen-game-pa...
Setahu saya dimiliki oleh Namco, dan bisa dilihat di Ridge Racer
https://psycnet.apa.org/record/2014-37068-023
Bahwa AI mengubah cara pengembangan kini sudah tidak perlu diragukan lagi
Minggu lalu saja saya bisa membuat 2 layanan berskala menengah, dengan ribuan baris kode Python, padahal Python adalah bahasa yang sudah tidak saya pakai selama lebih dari 10 tahun
Yang benar-benar mengesankan adalah, secara umum kodenya lebih baik daripada kode yang akan saya tulis sendiri
Jika butuh README.md yang bagus, berikan saja source code yang berisi route, argumen CLI, dan sebagainya, lalu ia akan membuatkannya
Tes juga bisa dibuatkan jika diminta. Belum pernah ada masa yang semudah ini bagi developer
Dalam pembuatan kode, GPT-4 jauh mengungguli GPT-3.5
GPT-3.5 bisa menyalin dengan cukup baik jika diberi contoh yang sangat rinci, tetapi GPT-4 terasa sampai batas tertentu seperti “berpikir”
Dari pengalaman saya, konteks GPT-4 32k cukup sering gagal
Misalnya, jika menghasilkan lebih dari 10 ribu token, kira-kira lebih dari 30 ribu karakter, mungkin perlu mencoba ulang beberapa kali
Selain itu, ChatGPT bukan antarmuka ideal untuk pekerjaan yang tidak sepele
Lebih baik memakai API secara langsung, atau sesuatu seperti Azure OpenAI Chat Playground yang bisa memakai konteks 32k
Sekalian promosi, saya membuat aplikasi open source yang mengotomatiskan pekerjaan repetitif dalam pembuatan prompt: https://github.com/codespin-ai/codespin-cli
Selama 10 tahun terakhir ada investasi besar-besaran pada tool no-code, dan menarik bahwa sekarang ChatGPT menulis kode dengan begitu baik sehingga bagi orang yang punya naluri teknis tetapi tidak ngoding, kemungkinan ia menjadi lebih cepat, lebih fleksibel, dan mendekati tingkat kemudahan penggunaan yang serupa
Baru-baru ini saya harus membuat aplikasi demo di Mendix yang mengonsumsi dan menerbitkan layanan REST, dan butuh beberapa hari untuk memahami detailnya
Kalau pekerjaan yang sama dilakukan dengan ChatGPT dalam bahasa apa pun, misalnya bash, rasanya bisa selesai dalam hitungan menit
Deployment dan version control bisa diselesaikan lewat PaaS/IaaS tanpa kemampuan teknis besar, apalagi jika dibandingkan dengan biaya platform no-code untuk perusahaan
Ini mungkin bias pribadi, tetapi untuk pekerjaan serius saya selalu tidak suka platform no-code karena terasa lebih merepotkan, dan dengan alasan serupa saya juga tidak suka ActiveRecord ORM
Meski begitu, no-code tampaknya akan segera menjadi ketinggalan zaman
Siapa yang mau drag-and-drop kalau cukup bertanya lalu copy-paste?
No-code itu mudah tetapi kaku, sementara coding fleksibel tetapi membosankan dan rawan kesalahan
Jika kita bisa menjelaskan apa yang diinginkan dengan kata-kata lalu cepat mendapatkan kode, dan kodenya rapi, kita mendapat fleksibilitas untuk menyesuaikannya sesuai kebutuhan
Dalam beberapa kasus, seperti contoh ini, mungkin bahkan tidak perlu penyesuaian
Saya menantikan masa depannya
Sepertinya tidak akan lama
Ini adalah pencucian plagiarisme secara statistik, dan itu cukup keren
Secara pribadi, menurut saya mencegah gold rush pencucian ini adalah prioritas hukum yang lebih mendesak daripada berpura-pura menghentikan HAL sambil menciptakan parit pasar bagi para penjual beliung besar saat ini
Pasti ada freelancer atau pekerja jarak jauh yang meningkatkan produktivitasnya 100x dengan benar-benar memanfaatkan GPT-4 dan tool AI
Sulit membayangkan trik-trik keren seperti ini hanya ada di ruang hampa
Kalau memikirkan apa yang akan mungkin dalam 2 tahun, jin sudah keluar dari botol
Kalau tahu tips meningkatkan produktivitas “100x” dengan ChatGPT, saya ingin Anda membagikannya
Jujur saja, setiap melihat tulisan seperti ini saya makin khawatir dengan kelayakan kerja saya
Saya tidak punya rencana cadangan dan sudah menghabiskan terlalu banyak waktu untuk belajar software engineering, sementara situasinya tidak terlihat bagus
Seperti yang juga dikatakan orang lain, programmer akan bermasalah jika orang awam bisa menulis spesifikasi produk yang cukup rinci agar LLM dapat membuat software yang berjalan sesuai kebutuhan
Tapi itu terdengar cukup mirip dengan pemrograman
Menurut saya pekerjaan kita akan berubah. Waktu mengetik kode di keyboard akan berkurang, dan waktu memikirkan apa yang harus dibuat akan bertambah
Justru kemungkinan besar nilai kita akan meningkat, karena kita akan mampu menyelesaikan jauh lebih banyak pekerjaan
Saya mencoba mendapatkan sprite sheet animasi tampak atas untuk paladin, untuk kemungkinan game RPG, dan proses kegagalannya ada di sini: https://imgur.com/a/2uJyUT3
Urutan sebenarnya: pertama saya mencoba variasi tampak atas, lalu di akhir saya memasukkan sudut pandang samping karena penasaran
top down kadang berhasil kadang tidak, jadi sangat tidak stabil
Saya penasaran apakah DALL-E 3 juga membutuhkan arahan yang sama