Saya mengodekan game tower defense dengan AI dan mendokumentasikan seluruh prosesnya
(github.com/maciej-trebacz)- Meskipun merupakan pengembang perangkat lunak dengan pengalaman 20 tahun, ini adalah pertama kalinya membuat game, dan ia menyelesaikan game tower defense berbasis Phaser.js "Tower of Time" dengan memanfaatkan agen coding AI
- Tujuannya adalah menguji kemampuan nyata AI dalam pengembangan game, dan kode beserta semua prompt AI dan proses kerja didokumentasikan di GitHub
- Lebih dari 95% kode ditulis oleh AI, dengan menggabungkan berbagai alat AI seperti Augment Code, Cursor, dan Claude Sonnet 4
- Game ini menghadirkan keseruan unik melalui strategi berbasis fitur memundurkan waktu (rewind), beragam tower, sistem manajemen energi, dan kemunculan musuh per wave
- Streaming langsung, pemanfaatan aset art dan sound, serta pelajaran dan tips praktis dari proses pengembangan menjadikannya bahan belajar yang berguna bagi pemula game maupun AI
Gambaran umum Tower of Time
- Proyek ini dijalankan dengan tujuan menguji apakah pengembangan game yang nyata dimungkinkan dengan alat coding AI
- Dengan pertama kali mempelajari game engine Javascript bernama Phaser.js, ia mengikuti Beginner's Jam Summer 2025 dan menyelesaikan 'Tower of Time' dalam 25~30 jam
- Seluruh proses pengembangan, semua prompt, kode, dokumentasi, dan tautan bermain dicatat di GitHub
Pengenalan game
- Tower of Time adalah game tower defense bertema perjalanan waktu, di mana pemain menahan musuh yang datang dalam bentuk wave, dan dalam situasi genting dapat memundurkan waktu untuk menyusun ulang strategi
- Game ini menggabungkan berbagai jenis tower (dasar, sniper, slowdown, splash, dll.) dengan sistem energi (digunakan untuk membangun tower dan memundurkan waktu)
- Fitur utama
- Memundurkan waktu: pada momen yang merugikan, pemain bisa kembali ke keadaan sebelumnya dan menata ulang strategi pertahanan
- Beragam tower: penempatan tower dengan karakteristik berbeda memungkinkan berbagai strategi pertahanan
- Manajemen energi: elemen pengelolaan sumber daya yang menuntut pertimbangan matang atas penggunaan energi
- Cara bermain
- Mendukung keyboard/gamepad (bergerak: tombol arah/stick, aksi: spasi/tombol gamepad, rewind: backspace/trigger)
Eksperimen coding AI dan proses pengembangan
- Sekitar 95% dari seluruh kode ditulis oleh AI (Claude Sonnet 4, OpenAI, Augment Code, Cursor, dll.)
- Semua prompt utama, trial and error, dan hasil akhir dicatat di repositori dalam PROMPTS.md
- Kelebihan pembuatan kode otomatis oleh AI: prototyping cepat, otomatisasi pekerjaan kode yang berulang, kemudahan dokumentasi
- Keterbatasan dan hal yang perlu diperhatikan: AI cenderung menghasilkan kode berlebihan, saat muncul isu implementasi tertentu perlu mendesain ulang prompt atau rollback, dan disarankan memanfaatkan log debugging
Pelajaran yang didapat dari pengembangan
- Bahkan hanya dengan AI coding, sangat mungkin menyelesaikan game yang menyenangkan
- Kualitas prompt, pemberian konteks yang jelas, dan strategi debugging sangat penting
- Perlu terus memeriksa agar jumlah kode tidak bertambah secara tidak perlu
Tumpukan teknologi
- Engine: Phaser 3 (v3.90.0) + Phaser Editor v4
- Bahasa: TypeScript
- Build tool: Vite
- Aset art: itch.io, sebagian disesuaikan sendiri
- Sound: freesound.org
Coba mainkan di browser: Tower of Time
3 komentar
Sepertinya ini bisa menjadi referensi yang bagus.
Saya juga sedang giat memanfaatkan AI untuk membuat game web.
Komentar Hacker News
Seru membaca prompt yang digunakan dalam pengembangan satu per satu
Tulisan tentang "contoh sukses vibe coding" sering memberi ilusi seolah dengan banyak agen, orkestrasi kode yang rumit, dan aturan buatan LLM saja, sebuah game bisa langsung jadi hanya dari satu baris prompt seperti “buat game tower defense yang memundurkan waktu dan pastikan tanpa cacat maupun bug”
Namun, prompt yang benar-benar dipakai di proyek ini justru selaras dengan cara yang paling efektif untuk AI coding
Memecah ide yang jelas dan rinci menjadi ratusan masalah kecil, lalu memberi panduan arsitektural yang konkret pada bagian yang benar-benar penting, adalah pendekatan yang efektif
Dari sudut pandang orang yang merangkap peran tech lead dan product owner, cara ini juga merupakan praktik yang benar saat bekerja dengan manusia
70% pekerjaanku adalah mengubah permintaan abstrak eksekutif seperti “game tower time travel, tanpa bug” menjadi serangkaian prompt yang memuat visi arsitektur yang kuat, agar tim bisa bekerja tanpa saling tumpang tindih sambil tetap mempertahankan abstraksi tingkat tinggi
Aku sempat mencoba membuat game HTML sederhana untuk board game Just One, tetapi bug input box yang bergerak tidak bisa diperbaiki meskipun sudah ku-prompt terus ke empat LLM
Semua orang bilang mereka bisa membuat game sekaligus, sedangkan aku bahkan tidak bisa memperbaiki gerakan textbox, jadi rasanya aneh juga
Setelah prompt “tanpa celah keamanan, tanpa bug”, kita juga wajib menambahkan “tanpa halusinasi”
Ini syarat dasar untuk pemula AI
Cara yang paling berhasil buatku dalam AI coding adalah membuat fungsi dasar atau kerangka gameplay dengan AI secara ‘one-shot’ terlebih dahulu, lalu menumpuk perbaikannya secara iteratif di atas itu
Jika hasil one-shot-nya tidak langsung meyakinkan, aku segera mencoba prompt lain sampai keluar hasil yang cukup bagus untuk dijadikan fondasi
Aku sangat setuju dengan pendekatan ini
Sebenarnya postingan terbaruku juga berangkat dari konsep ini
Kalau AI disuruh menulis spesifikasi dulu sebelum coding, beban manusia untuk menulis spec dari nol berkurang, sehingga peluang spec benar-benar ditulis jadi jauh lebih besar
Setelah lebih dari 20 tahun di industri software, aku merasa kebanyakan rekan kita cukup skeptis terhadap AI coding
Belakangan ini aku mencoba mengembangkan aplikasi besar sekitar 34.000 baris terutama dengan AI, dan efisiensinya meningkat secara eksponensial tergantung kualitas instruksi yang kuberikan, struktur interaksi, dan seberapa besar perhatian yang kuberikan pada hasil outputnya, termasuk koreksi arah
Sampai rasanya seperti, “pada akhirnya ini sama saja seperti semua alat lainnya!”
Bedanya, alat ini benar-benar memberi leverage 10x, lebih besar daripada alat “10x” mana pun yang pernah kutemui
Hal yang dilewatkan banyak orang skeptis adalah bahwa alat seperti ini tidak boleh diperlakukan sebagai sesuatu yang sepenuhnya eksternal
Kalau tujuan dijelaskan dengan samar lalu semuanya diserahkan begitu saja, hasilnya akan berantakan
Mungkin suatu hari AI bisa langsung membaca pikiran kita, tetapi sekarang belum
Untuk saat ini, kekuatannya muncul ketika kita merapikan pikiran dengan jelas, belajar hal baru, dan menyelesaikan bagian-bagian yang merepotkan dengan cepat
Untuk mendapatkan leverage maksimal, alat ini harus diintegrasikan dengan baik ke dalam proses berpikirmu
Pengalaman programming-ku sudah lama, tetapi untuk game aku nyaris hanya pernah membuat Hunt the Wumpus saat SMA, lalu belakangan mulai membuat game baru dengan bantuan AI
AI berperan besar dalam tiga hal
(1) Alat belajar - ini peran terpenting karena AI bisa menangkap maksud pertanyaanku meski aku tidak tahu istilahnya, memberi titik awal, bahkan memberitahuku hal-hal yang sebelumnya tidak kuketahui
(2) Menangani pekerjaan berulang atau membosankan - komentar kode, penulisan file konfigurasi, dan sejenisnya bisa kulakukan sendiri, tetapi AI menanganinya dengan cukup baik agar tidak memperlambatku
(3) Pencarian - seperti di poin (1), AI memahami apa yang sebenarnya kuinginkan lalu membantu memfilter atau merekomendasikan hal yang relevan
Kamu memang bisa menyerahkan “pemikiran” pada AI, tetapi sebenarnya tidak perlu
AI tidak lebih pintar dari manusia; ia hanya lebih cepat dan tahu lebih banyak, seperti semacam FPU
Menurut standar HN aku termasuk cukup skeptis, tetapi pada praktiknya aku terus mendorong adopsi AI di perusahaan, dan bahkan sekarang sedang menulis komentar ini sambil menyuruh Claude mengerjakan sesuatu
Alasan skeptisnya adalah adanya jarak antara bagaimana solusi AI saat ini “dijual” dan apa yang sebenarnya mereka lakukan
Semua solusi AI, terutama agen, hanya menghasilkan hal-hal yang tidak berguna tanpa panduan dari orang yang terampil
Hampir tidak ada unsur yang benar-benar “otonom”
Bahkan orang yang menciptakan istilah ‘vibe coding’ pun mengatakan bahwa industri menjalankan urutannya secara terbalik
Mengabaikan fakta bahwa alat seperti ini memang fantastis tetapi harus dikendalikan dengan ketat, pada dasarnya sama saja dengan berbohong
Dalam beberapa bulan terakhir aku juga sampai pada kesimpulan yang mirip
Dulu aku sering meninggalkan komentar kritis tentang AI, tetapi alat-alat terbaru jelas sudah berkembang jauh
Pekerjaan yang dulu butuh beberapa minggu, sekarang bisa selesai dalam beberapa jam
Tentu saja, prompt harus dipikirkan dengan baik, dipecah sedetail mungkin, dan terintegrasi rapi dengan IDE
Bagian yang paling revolusioner adalah saat berhadapan dengan library atau framework yang benar-benar baru
Dulu aku harus mencari cara pakainya lalu membongkar contoh kode, tetapi AI memberikan pendekatan yang jauh lebih intuitif dan beragam, dan itu sering kali sangat mengejutkan
Buat orang yang masih skeptis, mungkin sekarang waktunya mencoba lagi
Sebagai contoh leverage 10x, kita bisa melihat bahasa pemrograman
Dulu orang bilang Lisp dan semacamnya membuat kita bisa melakukan lebih banyak hal lebih cepat, tetapi sekarang kita bisa menulis lebih sedikit kode sambil menghasilkan output dalam bahasa yang cepat dan berperforma tinggi
Namun ada ‘jebakan’ berupa kebutuhan untuk meninjau dengan saksama bagian-bagian kode hasil generasi yang tidak mudah diverifikasi
Sama seperti bahasa dengan daya ekspresi tinggi dulu bisa membuat orang yang tidak punya rencana awal menghasilkan codebase yang berantakan, hal yang sama juga akan terulang dengan alat AI
Tetapi penghematan waktu terbesarku justru bukan saat menulis kode yang sepenuhnya baru, melainkan saat mengintegrasikan atau memperbaiki kode lama dan baru
Di debugging, lompatan besarnya terasa sekali
Tidak seperti dulu yang hanya mengandalkan print, sekarang cukup copy-paste kode lalu bertanya ke AI, “kenapa output-nya seperti ini, bukan seperti itu?” dan kita bisa cepat mendapat penyebab serta alternatif solusinya
Cara ini sangat berguna terutama untuk pekerjaan seperti SQL, IaC, dan build script yang sulit dipasangi debugger
Satu hal lagi, kurva belajar dan batas atas tingkat kesulitannya jauh lebih tinggi dari yang dibayangkan
Menggunakan Claude Opus sebagai framework otomasi yang kompleks menghasilkan sesuatu yang sangat berbeda dibanding sekadar copy-paste ke GPT-4o di browser
Keren sekali karena proses pengembangannya dibuka secara transparan dan bahkan prompt-nya dibagikan, jadi aku langsung memberi star di GitHub
Baik kode maupun hasil akhirnya terasa indah
Jelas bukan hanya AI yang bekerja; pasti ada banyak keterlibatan langsung dari pembuatnya juga
Aku sendiri sempat lama berhenti coding, lalu atas saran teman-teman mencoba membuat kode sederhana dengan memanfaatkan AI
Yang berhasil kuselesaikan baru semacam Bubble Wrap popper dan silencer (tekan tombol lalu tidak ada suara)
Bubble Popper
Silencer
Apakah ada rencana menerima PR?
Indie game tampaknya memang contoh penggunaan AI coding yang sangat bagus
Risiko yang rendah dan sifatnya yang berorientasi pada kesenangan sangat cocok
Commit pertama memang sudah berisi banyak kode, tetapi
PROMPTS.mdbelum ada saat ituMisalnya EnergySystem.ts sudah ada di commit pertama, tetapi di
PROMPTS.mdbelakangan terlihat seolah AI membuatnya dari awalAku penasaran apakah bagian ini bisa dijelaskan lebih detail lewat histori repositorinya
tautan commit pertama
Prompt juga tidak langsung kutulis saat itu; setelah game selesai, aku menelusuri riwayat tool chat yang kupakai lalu menyalinnya ke file
PROMPTS.mdKalau ingin melihat proses pembuatan proyeknya, cara terbaik adalah membaca file prompt dari awal sampai akhir
Sebagai contoh, file EnergySystem.ts adalah bagian yang dibuat AI sepenuhnya dari baru setelah implementasi pathfinding musuh, spawning, penembakan tower, dan lain-lain selesai, melalui prompt “aku ingin mengimplementasikan subsistem energi”
Aku baru pertama kali mendengar alat bernama Augment Code
Aku penasaran alat ini dipakai untuk apa dan kenapa dipilih, apa bedanya dengan alat pesaing, bagaimana pengalaman pemakaian nyatanya, dan apakah kamu merekomendasikannya
Apakah keduanya sama-sama berbayar?
Mencatat prompt seperti ini terasa mengesankan dan memotivasi
Dalam pengalamanku, ‘vibe coding’ kadang melaju sangat cepat, kadang juga bisa melambat tanpa batas
Kalau punya instruksi yang ringkas dan jelas, code review yang cepat, dan kemampuan memahami arsitektur, ini benar-benar bisa meningkatkan kecepatan pengembangan
Aku juga pernah membuat game tower defense, dan belakangan sempat terpikir untuk memakai AI sampai ke generasi wave baru dan tuning balance
Agar AI bisa ‘merasakan’ game, kupikir mungkin diperlukan protokol yang mengubah status game yang terlihat di layar menjadi token yang terenkode
Termasuk medan, posisi entitas game, dan atribut lain yang bisa dilihat pemain
Menaruh semuanya ke autoencoder mungkin kurang bagus, tetapi tokenisasi dalam bentuk daftar per elemen game tampaknya punya potensi
Jika game engine menyediakan gambar layar, dan token itu langsung dipetakan ke AI, AI mungkin bisa memahami keadaan permainan yang sebenarnya dengan lebih dalam
Aku belum yakin berapa banyak dataset yang dibutuhkan agar token seperti ini bisa benar-benar dimanfaatkan, tetapi mungkin saja ruang embedding saat ini sudah cukup untuk merepresentasikannya dalam beberapa token saja
Kalau ada dataset pelatihan yang menggabungkan log game dan penilaian keseruan dari pengguna, mungkin akan muncul banyak data yang menarik
Menemukan klaster selera pemain lalu membuat game untuk berbagai tipe yang berbeda juga tampaknya akan menjadi mungkin
Terima kasih sudah membagikan workflow seperti ini
Aku juga sedang memikirkan cara menghadirkan keterlacakan dan transparansi ke workflow pemanfaatan LLM
Jika prompt dibagikan dan disimpan sebagai riwayat, ada keuntungan besar karena kita bisa langsung melihat masalah inti yang mula-mula ingin dipecahkan developer, lalu bagaimana masalah itu berubah dan isu baru muncul di sepanjang proses
Proyek yang keren
posting tentang pemanfaatan LLM yang bertanggung jawab
Sudah lebih dari 20 tahun aku berkecimpung di dunia tech, dan belakangan sedang bereksperimen dengan berbagai hal sambil menggamifikasi alat integration testing aplikasi enterprise menggunakan Gemini-cli
Saat digabungkan dengan server MCP, hasil terbaik muncul ketika masalah dipecah langkah demi langkah dan prompt dibuat lebih jelas
AI bisa melakukan kesalahan atau terjebak dalam loop, terutama di area seperti routing aplikasi, dan dalam situasi seperti itu pendekatan ‘pair programming’ yang aktif terasa sangat berguna
Hal lain yang kuperhatikan adalah bahwa prinsip seperti larangan duplikasi kode jauh lebih mudah dijaga daripada sebelumnya
Jika tidak, AI mudah sekali hanya mengubah satu bagian lalu melewatkan file-file terkait
Ini bukan hanya berlaku untuk logika pemrograman, tetapi juga kebenaran yang sama untuk UX dan perilaku aplikasi
Bersama AI, pekerjaan yang dulu memakan waktu berminggu-minggu sekarang bisa selesai dengan menyenangkan hanya dalam beberapa jam
Fakta bahwa Gemini bisa diberi kepribadian, dan file GEMINI.md bisa dibawa apa adanya ke berbagai perangkat lalu dituning, adalah keunggulan yang sangat besar