- 90s.dev adalah API game maker baru yang berjalan berbasis web, menghadirkan pengalaman membuat aplikasi GUI bergaya tahun 90-an
- Platform ini bukan game engine atau game maker secara langsung, melainkan menyediakan API untuk membuat game, game engine, dan alat pembuatan game
- Berbasis HTML Canvas, layar 320x180, dukungan WebGL2, serta keamanan dan performa melalui web worker menjadi ciri utamanya
- Dengan SDK TypeScript-first dan dukungan impor modul wasm dari berbagai bahasa, prototyping cepat dan skalabel dapat dilakukan
- Pengguna dapat membuat aplikasi mereka sendiri lalu membagikan atau memuatnya dari GitHub atau NPM, dengan tujuan mendorong kolaborasi komunitas pengembang dan skalabilitas
Makna perilisan 90s.dev
- 90s.dev adalah platform API game maker bentuk baru yang berjalan di web
- Platform ini menyediakan lingkungan pembuatan aplikasi GUI bergaya tahun 90-an, dengan API yang ditujukan untuk membuat game, game engine, dan alat game maker
- Tujuannya adalah membentuk ekosistem di mana siapa pun dapat dengan mudah membuat dan membagikan aset serta alat game seperti pixel art, sprite, dan map di atas HTML Canvas
Fitur utama dan visi
Pengenalan dasar platform
- 90s.dev berjalan di browser, dengan tampilan yang memenuhi jendela web pada resolusi 320x180 (16:9)
- Semua aplikasi berjalan di lingkungan web worker untuk memberikan keamanan dan performa yang lebih baik
- Melalui WebGL2 offscreen canvas, game dapat berjalan hingga 60fps
- Modul aplikasi yang di-host di GitHub dan NPM dapat dimuat dan didistribusikan secara bebas
- SDK TypeScript yang ramah VSCode mendukung prototyping cepat
- Memiliki kompatibilitas dengan berbagai modul bahasa yang dibangun sebagai WebAssembly (wasm)
Aplikasi bawaan
- Secara bawaan tersedia aplikasi dasar untuk membuat aset game seperti pixel art, alat pembuatan sprite, dan editor map
- Alat pengeditan suara dan musik belum tersedia, tetapi siapa pun dapat mengembangkannya sendiri lalu mempublikasikan/membagikannya
- Aplikasi dan alat yang dibuat dapat dibagikan ke semua pengguna melalui iframe atau tautan
Inspirasi dan pembeda
Alat pengembangan game yang menjadi referensi
- pico8: berorientasi minimalisme, mendukung satu bahasa
- tic80: membuka berbagai batasan pico8
- love2d: memerlukan IDE eksternal
- picotron: mengadopsi arsitektur sistem operasi
- 90s.dev adalah pico8 yang lebih meta, dan lebih dekat ke love2d dengan TypeScript atau tic80 yang berfokus pada ekspansi vertikal
Inovasi GUI dan detail teknis
Sistem layout
- Sistem auto-layout yang sederhana namun kuat diimplementasikan untuk mengurangi kerepotan penempatan manual dan resizing
- View (API) menggambar layar secara langsung dan memanfaatkan struktur tree view anak
Sistem Ref
- Properti view (ukuran, anak, warna latar, dll.) dikelola melalui watchable pointer (ref)
- Setiap properti diberi objek referensi (ref), sehingga perubahan properti terdeteksi dan diterapkan secara otomatis
- Dirancang sepenuhnya terpisah dari ref pada React/Vue yang sudah ada
Composites (konsep view komposit)
- Di JSX, tag string (huruf kecil) dan tag nilai (huruf besar) dibalik untuk memperkuat pemisahan antara implementasi dan penggunaan
- View abstrak didaftarkan ke tabel global dan dapat dimanfaatkan secara bebas oleh bagian lain dari sistem
- Contoh: view colorpicker menyediakan implementasi default, tetapi dapat diganti oleh pengembang dengan gaya yang diinginkan
- Memberikan fleksibilitas dan skalabilitas tinggi dalam pengembangan aplikasi GUI
Distribusi aplikasi dan kolaborasi komunitas
Perubahan cara distribusi aplikasi
- Sebelumnya menggunakan shared drive
net/ berbasis database internal
- Baru-baru ini mendukung hosting dan pengambilan modul langsung dari NPM/GitHub melalui CDN
- Contoh:
/os/fs/ghb/someuser/project@1.0.0/some/file.js
- Dengan memanfaatkan service worker, mekanisme pemuatan dari berbagai sumber menjadi lengkap
Partisipasi dan kolaborasi
- Dengan desain bergaya sistem operasi, pengembangan aplikasi komunitas di luar aplikasi wajib (aplikasi dasar) didorong
- Komunikasi dan kolaborasi didukung melalui issue tracker, forum, dan wiki (semuanya repo GitHub)
- Issue: permintaan fitur dan pelaporan bug
- Forum: pengumuman dan diskusi proyek
- Wiki: kumpulan dan kurasi proyek
Berbagi aplikasi
- Aplikasi dapat dibagikan melalui tautan berformat
/os/#app
- Berfokus pada komunitas untuk mendorong pembuatan dan penyebaran bebas aplikasi, library, dan aset
Kesimpulan dan arah pengembangan
- 90s.dev adalah platform API yang merancang dan mendefinisikan ekosistem game maker itu sendiri
- Platform ini mengejar lingkungan pembuatan game web yang dapat diperluas, tempat siapa pun bisa dengan mudah membuat, mendistribusikan, dan memanfaatkan aplikasinya sendiri
- Ini adalah alat pengembangan game berorientasi masa depan yang berlandaskan kolaborasi komunitas dan filosofi platform terbuka
2 komentar
Jadi penasaran seperti apa engine gamenya sendiri.
Komentar Hacker News
Berbagi pengalaman suatu hari bangun jam 2 pagi di bulan Februari lalu langsung mulai ngoding, sudah bosan menunggu lebih lama, terus menulis kode hingga akhirnya membuat alat pembuat game berbasis API, game engine, dan gamenya sendiri, lalu menyadari bahwa passion sejatinya ada pada perancangan API, serta membagikan perasaan bahwa orang-orang yang menemukan passion lalu mendedikasikan diri seperti itu terasa sangat keren
Mengucapkan terima kasih atas pujiannya, menyesalkan bahwa esensi proyeknya tidak berhasil dijelaskan dengan baik, padahal sebenarnya API adalah bagian yang paling menarik tetapi tidak tampak dari luar sehingga terasa frustrasi, dan berpikir seharusnya menunggu sampai ada lebih banyak contoh yang menunjukkan kemudahan penggunaan API yang inovatif itu, serta menyesal karena merilisnya terlalu terburu-buru
Mengungkapkan bahwa dirinya adalah penulis proyek ini, menyampaikan terima kasih atas masukan yang diberikan, benar-benar merasakan bahwa rilis ini terlalu dini, dan menyatakan tekad untuk memperbaiki berbagai hal yang disorot lalu kembali lagi dalam beberapa bulan
Tidak merasa rilis ini terlalu dini sama sekali, memuji proyek ini sebagai sesuatu yang sangat keren dan sangat overengineered, menyebutnya puncak dari analogi bike shed yang terkenal, serta sangat takjub karena bahkan sistem reaktif buatan sendiri pun diimplementasikan
Menilai ini adalah timing yang pas untuk Show HN, mengatakan bahwa dengan melihat tur Hello World orang bisa langsung memahami proyek ini secara intuitif, dan jika sudah punya pengalaman dengan PICO-8 dan React maka proyek ini akan terasa lebih menyenangkan, serta menganggap pemilihan rasio 16:9 sebagai keputusan yang bijak, dengan opini bahwa rasio persegi PICO-8 terasa canggung
Berterima kasih karena sudah merilis lebih awal, sangat merekomendasikan strategi sering merilis, dan menekankan bahwa 10.000 kali pengulangan adalah jalan menuju keberhasilan, sehingga satu kali percobaan hanyalah permulaan
Pesan penyemangat bahwa ini sama sekali bukan rilis yang terlalu awal, serta dukungan bahwa penulisnya sudah melakukan pekerjaan yang sangat baik
Meski tidak dibahas secara mendalam, ada pengakuan bahwa daya tarik retro ini diam-diam justru makin memikat, mungkin karena rasa nyaman dari masa lalu yang lebih sederhana dan tenteram terasa hidup kembali ketika melihat proyek seperti ini sekarang
Bertanya apakah aplikasi paint seharusnya berfungsi, karena sudah dicoba di Firefox dan Chrome tetapi setelah memilih warna lalu mengeklik tidak ada apa pun yang tergambar, dan tidak ada error di console, lalu di luar itu juga mengagumi keberhasilan proyek ini mereproduksi nuansa 90-an, awalnya sempat terasa seperti terminal tahun 70-an atau 80-an, tetapi setelah diperhatikan memang tepat seperti beginilah tampilan 90-an, serta menyatakan antusiasme terhadap perkembangannya ke depan
Menyebut minta maaf karena menimbulkan kebingungan, menjelaskan bahwa baru pemilih warnanya saja yang dibuat dan selebihnya belum diimplementasikan, rasanya bisa diselesaikan dalam waktu kurang dari satu jam, sekaligus mengungkap bahwa niat pengembangannya memang untuk menghadirkan kembali kesenangan dan kekuatan membuat aplikasi GUI dengan nuansa 90-an, hanya ingin mempertahankan rasa takjub tanpa ketidaknyamanannya, dan karena itulah namanya dipilih menjadi 90s.dev
Menyebut kemungkinan memang belum diimplementasikan, dan jika mengeklik tombol “hash” di kiri atas jendela lalu memilih “View Source”, akan terlihat bahwa yang ada baru mock UI, sementara di area scroll hanya ada kode yang menggambar pola sederhana
Pada dirinya juga tidak berfungsi
Mengakui belum sepenuhnya memahami proyek ini sendiri, tetapi sangat jatuh hati pada nuansanya, dan merasa menarik bahwa hanya dengan atmosfer emosional dan elemen visual tertentu saja bisa memberi pengaruh besar pada perasaan orang dan memancing lebih banyak perhatian
Secara pribadi mencoba memikirkan cara menjelaskannya, mengatakan bahwa ia ingin membuat pico8 yang lebih nyaman dipakai sehingga membuat desain dan prototipe 320x180, lalu karena juga ingin mendapatkan semua kemudahan VS Code beserta dukungan TypeScript, akhirnya proyek ini dirancang sebagai platform tempat hal-hal yang ada di tab pico8 bisa dibuat dan didistribusikan, dan kini kalau dipikir-pikir ini pun terasa seperti dirilis terlalu cepat
Secara pribadi menyukai nuansanya, tetapi berpendapat bahwa rasio 16:9 dan kombinasi PC tahun 90-an terasa kurang cocok, dan lebih menyukai nuansa khas monitor CRT yang bentuknya lebih mendekati persegi
Mengucapkan terima kasih, lalu mengeluhkan bahwa menjelaskan sesuatu adalah pekerjaan yang sangat sulit, mengaku bahwa tulisan kali ini pada akhirnya juga hanya usaha untuk menjelaskan sesingkat mungkin apa yang dibuatnya, tetapi walaupun versinya sudah singkat isinya tetap terasa samar sehingga secara jujur ia merasa ingin menyerah saja
Menganggap proyek ini sangat keren tetapi awalnya terasa agak sulit dimulai, dan menyarankan akan bagus jika ada walkthrough singkat tentang cara membuat mini game
Mengucapkan terima kasih, lalu menjelaskan bahwa cara membangun game saat ini sama seperti tutorial membangun aplikasi, hanya saja bisa dilakukan dengan membuat custom view dan menimpa method
draw, untuk performa akan lebih baik jika membuat dan memanfaatkanOffscreenCanvas, dan saat ini belum ada API yang membungkus WebGL2 agar lebih mudah digunakan, tetapi berjanji ke depannya pasti akan membuat tutorial agar pemula pun bisa membuat keseluruhan game sendiri, serta menjelaskan bahwa untuk sekarang fokusnya masih pada aplikasi sehingga prioritasnya lebih dulu pada pengembangan alat game maker seperti sprite dan map, lalu membagikan tautan tutorial Hello WorldMenganggap proyek ini sangat menarik, langsung merasa kembali ke masa kecil, menyukai pico8 juga tetapi merasa dirinya tumbuh lebih dekat dengan desktop dan GUI sehingga pico8 terasa seperti satu generasi terlalu awal, sedangkan proyek ini memicu nostalgia seperti membeli CD lagi
Juga memperkenalkan Picotron buatan pengembang Pico8, menjelaskannya sebagai OS desktop yang mirip Pico8 tetapi dengan sedikit lebih sedikit batasan, mengaku belum pernah mencobanya sendiri dan hanya pernah melihat GIF-nya, namun merasa paradigma proyeknya mirip, karena sama-sama mengarah pada “platform” tempat pico8 bisa dibuat di dalamnya, dan berpikir keduanya mengejar ideal yang sama dengan cara yang berbeda
Tersendat pada langkah pertama panduan Getting Started, setelah mengunduh
helloworld.zipke lokal lalu membukafiler.app.jsdi web dan menekan tombol mount dengan memasukkanhelloworld/appsebagai drive name, tidak terjadi apa-apa, sehingga bingung bagaimana cara mengunggah file zip ke instance 90s.devMengucapkan terima kasih atas masukannya, kemungkinan besar pengguna memakai Firefox, dan menjelaskan bahwa fungsi tersebut bergantung pada
showDirectoryPickeryang belum didukung Firefox sehingga menyarankan memakai Chrome, juga menambahkan bahwa drive name seharusnya hanya diisi nama tanpa path (misalnyafoo) dan berjanji akan segera memperbarui panduannya, lalu menjelaskan bahwafoo/helloworld.app.jsnantinya akan terhubung ke path lokal yang sebenarnyaMengatakan sangat menyukai nuansa 90-an ini, terutama font-nya yang sangat berkesan, serta menyadari bahwa seleranya jauh lebih tertarik pada desain 90-an daripada pixel art bergaya 80-an
Mengkritik landing page, merasa penjelasannya membingungkan karena proyek ini disebut sebagai ‘game maker’ tetapi sekaligus dijelaskan ‘bukan game maker’, sehingga istilah yang dipakai terasa tidak konsisten
Mengingatkan bahwa penamaan memang masalah yang sangat sulit, dan menganggapnya sebagai salah satu tugas tersulit dalam ilmu komputer, bersama invalidasi cache