7 poin oleh gogoj2 2026-01-19 | 14 komentar | Bagikan ke WhatsApp

Pada musim panas 2004, saat saya sedang menjalani masa-masa akhir wajib militer, saya mulai merancang game sambil memikirkan apa yang bisa saya lakukan di waktu luang. Saat itu adik saya sedang mengambil jurusan desain grafis game, jadi saya berpikir akan menyenangkan kalau setelah saya selesai dinas kami bisa membuat sesuatu bersama. (Ah... saya hanyalah lulusan humaniora biasa. Soal teknis sama sekali tidak bisa.)

Karena ini tantangan amatir, saya ingin membuat sesuatu yang kecil dan sederhana. Saya mengambil dasar game pemecah bata (Arkanoid), lalu menambahkan cara bertanding yang baru. Memang sudah banyak orang merilis versi baru dari game ini, tetapi sepertinya belum ada yang membuatnya seperti yang saya bayangkan.

Setelah keluar dari militer, saya mengumpulkan adik saya dan teman-teman adik saya lalu dengan ambisi besar membentuk tim, tetapi tidak lama kemudian masing-masing punya keadaan sendiri dan tim itu pun cepat bubar. Saya pikir akan membuatnya kalau ada kesempatan lagi, tetapi kesempatan itu tidak pernah datang. Waktu terus berlalu, dan bahkan saat saya menjalani kehidupan kerja saya kadang masih teringat. Pernah juga ada masa ketika saya mencoba belajar Python dan menjadikannya sebagai tujuan, tetapi itu tugas yang terlalu sulit bagi saya.

Lalu setelah lebih dari 20 tahun berlalu, pada musim panas tahun lalu, setelah rapat saya makan malam bersama, dan para CEO perusahaan yang ikut rapat berkata bahwa sekarang terlalu banyak hal yang bisa dibuat dengan AI sehingga mereka semua ingin mendirikan startup lagi. Saya yang terpicu hari itu pulang ke rumah malamnya lalu memasang Claude Code yang selama ini hanya saya dengar namanya. Dan 2 jam kemudian… bam!!

Saat memikirkan proyek pertama apa yang harus saya minta ke Claude Code, saya menelusuri kembali ide 20 tahun lalu dan memberikan instruksi. Sekitar 2 jam kemudian, di depan mata saya paddle dan bola bergerak sambil menghancurkan bata. Getaran saat itu sungguh luar biasa. Kisah kesaksian seperti ini mungkin sekarang sudah sangat umum sehingga Anda pun terbiasa mendengarnya, tetapi sekarang, setelah setengah tahun berlalu, saya merasa tidak bisa hidup tanpa Claude Code.

Selama ini saya terus sedikit demi sedikit memoles game ini, dan sekarang rasanya sudah mencapai tingkat yang setidaknya layak disebut demo, jadi saya memberanikan diri untuk membagikannya. Bahkan di GeekNews yang selama ini hanya saya baca diam-diam!! Awalnya game ini dirancang sebagai game versus 2 pemain, tetapi fitur multi-user adalah rintangan yang terlalu tinggi bagi saya, jadi saya membuatnya dalam bentuk bertanding melawan komputer.

Sebagai perkenalan singkat,

  • Untuk komputer. Versi mobile belum didukung.
  • Ini adalah game pemecah bata untuk 2 pemain yang bermain saling membelakangi dalam satu ruang. Pihak yang lebih dulu menghancurkan semua bata akan menang.
  • Jika saya gagal menangkap bola, bola akan berpindah ke area lawan. Jika lawan gagal menangkapnya, bola akan kembali ke saya.
  • Saya memasukkan konsep fisika dunia nyata seperti berat, benturan, percepatan, dan inersia. Ternyata lebih sulit dari yang dibayangkan.
  • Karena ini versi demo, setelah satu ronde selesai permainan bisa terus dimainkan dengan memulai ulang.
  • Seperti mesin arcade zaman kecil dulu, jika membuat rekor Anda bisa mengukir nama Anda.

Kalau menuliskan pelajaran dari proses pengembangannya,

  • Refactoring! Refactoring! Refactoring!
  • Saya akhirnya paham apa itu refactoring yang selama ini hanya saya dengar, dan saya jadi berpikir mungkin benar ada yang namanya neraka refactoring di antara sekian banyak neraka.
  • Di awal, dengan penuh impian saya membayangkan Battle.net lalu memecah fitur ke mana-mana dan terus membesarkannya, tetapi akhirnya semuanya saya reset di tengah banjir bug, lalu saya pecah lagi dan satukan lagi... itu sebelum Opus 4.5 keluar.
  • Hanya dengan membuat hal kecil ini saja sudah seperti ini, jadi saya jadi memiliki rasa hormat yang besar kepada para programmer.

Syukurlah sekarang saya sudah sedikit tahu diri, dan menjadi orang yang membagi pekerjaan menjadi bagian-bagian kecil, membuat dokumen workflow, serta rajin mencatat log pengembangan dan git commit. Hasil terbesar yang saya dapat adalah saya jadi punya jauh lebih banyak hal yang ingin saya coba. Saya sedang giat memikirkan cara membuat sendiri alat-alat yang saya butuhkan dalam pekerjaan.

Saya juga sedang bingung game ini sebaiknya dibawa ke mana. Dengan kondisi saya sekarang, sulit untuk mengembangkannya secara serius, tetapi rasanya sayang juga kalau dibiarkan terkubur begitu saja. Saya berharap ini bisa menjadi game yang menyenangkan untuk dimainkan anak-anak.

Saya selalu banyak belajar dari kabar-kabar di GeekNews, dan selalu membacanya dengan penuh rasa terima kasih. Terima kasih.

14 komentar

 
colus001 2026-01-22

Konsepnya menarik, tetapi kontrolnya terasa sangat buruk. Menerapkan inersia pada kontrol di game seperti ini sepertinya bukan ide yang bagus. Rasanya ini agak berbeda dari persoalan tingkat kesulitan.

 
gogoj2 2026-01-28

Terima kasih atas masukannya. Saya sudah mempertimbangkan poin yang Anda sampaikan, dan mengurangi inersia menjadi setengah agar kontrolnya sedikit lebih mudah. Awalnya saya memprioritaskan konsep fisika yang saya bayangkan, tetapi jadi berpikir lebih jauh tentang kemudahan kontrol permainan dan bagaimana seharusnya menanganinya saat terjadi benturan. Saya akan terus memperbaikinya. (Penerapannya terlambat karena pekerjaan utama saya sedang sibuk.)

 
gogoj2 2026-01-20

Siapa FURY ya.. meninggalkan skor yang luar biasa tinggi.;;

 
bsh998 2026-01-20

Ada konsep fisika dunia nyata seperti berat, benturan, percepatan, dan inersia. Ternyata lebih sulit dari yang dibayangkan.

Komentarnya terasa menunjukkan pemahaman yang kurang mendalam tentang fisika game, jadi akan lebih baik jika bisa dirapikan sedikit.

 
cucumber9 2026-01-20

Tolong poles sendiri ya wkwk. Jangan sok keren di depan anak jurusan humaniora.

 
gogoj2 2026-01-20

Terima kasih sudah mengkhawatirkan hati para anak jurusan non-sains. hehe ^^

 
bsh998 2026-01-20

Alasan saya sulit membantu merapikan redaksinya adalah karena saya belum melihat kode yang Anda buat, jadi saya tidak tahu dengan cara apa Anda mengimplementasikan physics engine tersebut.

 
bsh998 2026-01-20

Saya meminta maaf atas bagian yang menyampaikan kritik yang tidak diinginkan.
Banyak orang melakukan promosi produk, tetapi karena sering ada kasus promosi memakai AI atau menyertakan penjelasan yang kurang tepat, saya pun meninggalkan komentar. Itu bukan komentar yang saya tulis untuk membuat orang marah.

 
gogoj2 2026-01-20

Terima kasih atas perhatiannya. Saya sama sekali tidak tersinggung. Saya selalu berterima kasih atas saran. Justru saya kurang memahami bagian mana dan bagaimana yang harus diperbaiki, jadi akan lebih baik jika Anda bisa menjelaskannya sedikit lebih rinci.

Untuk menjelaskan lebih lanjut soal penerapan fisika dunia nyata, game seperti ini biasanya hanya menerapkan deteksi tabrakan dan pantulan yang sangat sederhana. Namun saya ingin saat bola atau bata bertabrakan, pemain bisa merasakan energi benturan dari bobot dan kecepatan yang nyata seperti pada game pinball sungguhan, jadi saya mencari dan menggunakan Planck.js yang lebih presisi dibanding library game biasa. Saya juga mengekspresikan bahwa saat bata terkena bola, bata itu terdorong oleh benturan dan berputar. Di pengaturan, bobot bola, bobot bata, redaman energi benturan, hambatan, dan hal-hal semacam itu bisa diubah, sehingga pengalaman bermainnya berbeda tergantung pengaturannya.
(Ada pengaturan yang saya sebut mode gila; jika bobot bola dinaikkan ke maksimum dan bobot bata diturunkan ke minimum, gamenya menjadi sangat dinamis.)

Kodenya juga ada di GitHub.
https://github.com/gogodevelop2/mirror-breakout

 
bsh998 2026-01-20

Ya, kalau saya boleh berkomentar,
pertama-tama, sepertinya Anda sudah mencurahkan lebih banyak usaha pada desain tumbukan, pengaturan koefisien restitusi, dan hal-hal semacam itu.
Dan khususnya, tumbukan dihitung dan terjadi berdasarkan massa serta koefisien restitusi masing-masing; kalau saya menyebutkan bagian yang berbeda dari tujuan yang Anda maksud,

karena hal-hal seperti massa atau kecepatan paddle maupun brick pada dasarnya hanya memengaruhi momentum ball,
secara esensial ini lebih dekat pada pendekatan yang terinspirasi dari model fisika untuk mekanisme tumbukan,
dan Anda menuliskan secara berbeda tumbukan antara bola dan masing-masing (brick, paddle, wall).

Karena itu, alih-alih menyebutnya sebagai fisika dunia nyata, menurut saya akan lebih baik jika dijelaskan bahwa Anda mengadopsi elemen-elemen mesin fisika untuk merancang tumbukan dan perubahan momentum secara dinamis.

Khususnya, karena proses tumbukannya tidak realistis sehingga perubahan momentum tertentu diterapkan sebagai koreksi kecepatan, dari sisi rasa kontrol ini bisa terasa seperti sesuatu yang tersembunyi, dan juga bisa terasa agak tidak ramah bagi pemain.

 
bsh998 2026-01-20

Kalau dijelaskan sedikit lebih mudah,
meskipun rumus dan metode perhitungan fisika digunakan, pada akhirnya ini adalah
model yang tidak realistis, dan ada banyak penyesuaian yang dimasukkan untuk mencegah secara gameplay masalah yang muncul dari bagian-bagian yang tidak realistis tersebut (kecepatan tak terbatas, berhenti, pengaturan arah, dan lain-lain).

 
gogoj2 2026-01-20

Terima kasih atas penjelasan yang detail. Saya jadi jauh lebih paham. Karena ini pertama kalinya saya membuat game, saya belum begitu memahami dunia fisika game maupun ketepatan penggunaan istilah, jadi ternyata tulisan saya sempat ditulis dengan cara yang bisa menimbulkan salah paham. Setelah mendengar penjelasannya, rasanya saya jadi sedikit mengerti pada tingkat seperti apa para praktisi di lapangan memandang hasil-hasil semacam ini. Saya belum menemukan cara untuk mengedit isi tulisan utama.. akan saya cari tahu lalu saya perbaiki. Terima kasih.

 
[Komentar ini disembunyikan.]
 
gogoj2 2026-01-20

Terima kasih. Haha, saya juga akan mendukung kegiatan hobi Anda!