2 poin oleh GN⁺ 2023-09-27 | 1 komentar | Bagikan ke WhatsApp
  • Engine game ringan yang bertujuan menghidupkan kembali pengalaman Macromedia/Adobe Flash di masa lalu
  • Dirancang agar berjalan di semua platform, dengan satu-satunya target keluaran berupa WASM murni
  • Keluaran tidak menyertakan file executable, glue code, dan sejenisnya, serta tidak menggunakan Emscripten
  • Daftar import dan export didefinisikan dengan jelas di PlatformCommunication.hpp
  • Struktur yang mudah diimplementasikan di platform apa pun, termasuk browser

Gambaran Umum

  • Sebagai engine game ringan (light-weight), bertujuan mereplikasi pengalaman Macromedia/Adobe Flash di masa lalu

Arsitektur

  • Dibuat agar dapat berjalan di platform apa pun, dengan WASM murni sebagai satu-satunya target keluaran
  • Keluaran tidak menyertakan file executable, glue code, dan sejenisnya, serta tidak menggunakan Emscripten
  • Daftar import dan export didefinisikan dengan rapi di PlatformCommunication.hpp, sehingga mudah diimplementasikan di platform apa pun termasuk browser

1 komentar

 
GN⁺ 2023-09-27
Komentar Hacker News
  • Wah, ini orang-orang yang membuat Zero Engine, ya? Saya pernah memakainya di kamp musim panas DigiPen dulu, dan memprogram dengan Zilch benar-benar menyenangkan
    Saya juga membuat AI yang memainkan klon Galaga. Karena kisruh Unity ini, saya sempat penasaran apa kabar Zero, dan saya sangat antusias karena sepertinya akan hidup kembali

    • Keren! Zilch itu sesuatu yang saya buat dengan penuh sayang, jadi saya senang sekali mendengar Anda berkata begitu :D
  • Sebagai tambahan informasi, di laptop low-end sungguhan dengan grafis terintegrasi, ini berjalan seperti satu lagi slideshow keren
    Saya juga mencobanya di Mate 20 Pro lama, dan terlihat seperti berhenti di “Downloading runtime”. Sepertinya bukan karena 4G yang tidak stabil, jadi saya membuka chrome://inspect di laptop lewat USB untuk memeriksa tab, dan muncul error Uncaught (in promise) Error: Needs OES_texture_float_linear to function. Ini memang jadi pertanyaan filosofis apakah layak membuat layar error hanya untuk menampilkan pesan bahwa toh saya tidak bisa memainkannya

  • Saya suka konsepnya. Namun GPU dan browser saya menangis karena latensi, dan ini terlihat seperti slideshow yang mengesankan
    Setelah beberapa kali mencoba, akhirnya saya bisa memilih bola awal. Awalnya saya bahkan tidak yakin apakah loading sudah selesai. Tentu saja saya memakai Firefox di Celeron 1,8GHz, GPU terintegrasi, dan RAM 8GB, jadi jauh dari spesifikasi tinggi

    • Penasaran apakah di Chrome berjalan lebih baik. Sepertinya cukup banyak orang mengalami masalah Firefox. Ke depannya saya akan menguji Firefox secara rutin juga
    • Jika Anda bisa mencobanya lagi, perbaikan yang sangat meningkatkan performa di sebagian mesin baru saja dirilis
      Karena ini adalah porting game engine native ke WASM, masalahnya ada pada kode pembatas frame rate yang tidak cocok dengan timing API browser: https://raverie-us.github.io/raverie-engine/
    • Saya mengalami hal yang persis sama di M2 Pro, dan saya juga memakai Firefox
    • Mereka masih membuat Celeron ya?
  • Bagian “engine kami memiliki fitur unik bernama Spaces, dan bisa menginstansiasi world/level terpisah” menurut saya terlihat persis seperti yang dilakukan engine Godot[1]
    Engine itu juga punya target browser (WASM). [1]: https://godotengine.org/

    • Bukan hanya punya target WASM, tapi juga ada versi web: https://editor.godotengine.org/
      Sepertinya ini bukan prioritas tinggi dalam proyek. Setelah saya uji sedikit, tampaknya memang berjalan :), tetapi lebih lambat daripada menjalankan native
    • Saya juga tidak begitu paham bedanya dengan scene di Unity
  • Saya penasaran apakah ada alur pengembangan WASM yang memungkinkan Web API browser dan WASM murni berinteraksi tanpa lapisan JS, atau dengan biaya rendah
    Sesekali saya melihat https://github.com/WebAssembly/proposals dan itu sangat membingungkan. Proposal type imports tampaknya masih bertahun-tahun lagi, sedangkan proposal GC yang hampir selesai tampaknya untuk bahasa GC, bukan untuk browser↔WASM. Component model terlihat jauh dari use case browser, dan JS String Builtins mempercepat string JS, bukan DOM. Integrasi modul ECMAScript mengubah modul WASM menjadi modul ES, tetapi Web API bukan modul ES, jadi tidak membantu. Dari percakapan para kontributor, kadang terlihat bahwa penyediaan fitur seperti ini bukan prioritas dan bahkan tidak masuk rencana; bagi kebanyakan orang, WASI dan component model untuk penggunaan seperti cloud dan kriptografi tampaknya lebih penting

    • Saya juga sangat menginginkan ini. Saya ingin melihat browser wasm murni di mana halaman hanyalah WASM, dan “browser” menyediakan import platform seperti WASI
      Namun seperti yang Anda katakan, tampaknya itu bukan prioritas mereka. Semoga suatu hari bisa terwujud
    • Berkat reference types, secara teknis browser API sudah bisa dipanggil langsung. Sebab WASM bisa mengirim dan menerima objek JavaScript
      Jika semua Web API terkait diimpor, objek JS bisa diteruskan apa adanya di antara pemanggilan API individual, sehingga hampir tidak perlu JS perantara. Dalam praktiknya, JS hanya diperlukan saat menginisialisasi modul WASM pertama kali
    • Masalah WASM murni adalah ia bisa mengarah ke web tertutup dengan iklan yang tidak bisa diblokir
    • Setidaknya sebagian dari itu menurut saya adalah arah yang dituju proposal GC
  • Proyek yang keren. Apakah ada cara memperbesar UI di display beresolusi tinggi?
    Pada display 2:1, font terlihat bergerigi. Jika zoom browser saya set ke 50%, UI menjadi tajam, tetapi semuanya jadi terlalu kecil sehingga sulit dipakai

    • Untuk OP: cara memperbaikinya adalah mengatur lebar canvas ke window.innerWidth * window.devicePixelRatio, dan tingginya ke window.innerHeight * window.devicePixelRatio
      Setelah itu, maksimalkan canvas ke layar dengan CSS
    • Saya tidak mengerti mengapa tidak memakai rendering engine native browser untuk UI, atau setidaknya SVG
      Dari sisi resource (memori, jaringan, CPU) seharusnya lebih murah, lebih mudah menangani aksesibilitas, dan rendering juga lebih mudah
  • Trevor! Saya sangat menyukai mata kuliah pilihan CS di DigiPen yang membahas desain bahasa pemrograman lewat tata bahasa
    Banyak dari mahasiswa yang Anda ajar sekarang bekerja di Minecraft. Saat merancang Minecraft scripting API sekarang, saya memanfaatkan dasar-dasar yang saya pelajari saat itu dan banyak hal dari masa DigiPen. Senang melihat Anda masih berkarya dengan keren

    • Saya sangat senang itu membantu! Suatu hari nanti saya akan mengajar lagi ;)
      Saya juga benar-benar ingin melihat scripting interface yang sedang Anda kerjakan. Dulu saya membuat sangat banyak mod Minecraft, dan selalu menginginkan suatu bentuk dynamic scripting
  • Benar-benar keren. Senang melihat produk berbasis WASM murni di bidang ini. Namun di M1 Mac Pro saya, ini cukup tersendat

  • Saya punya satu pertanyaan: apakah ini juga berjalan di NES? Model front-loading yang sudah direfurbish, sebagian besar komponennya asli, tapi saya menambahkan sedikit RAM
    Saya menempelkannya di atas dengan lem tembak, mengecat casing-nya merah, lalu memasang beberapa mainan tentara

    • Kenapa membuat konverter WASM > NES terdengar seperti hal yang benar-benar seru ya…
  • Bahkan hanya dengan membuka scene bola default, ini menghantam GPU sangat keras di Radeon Pro 560X dan lingkungan hampir 4K
    Hanya memutar kamera saja membuat frame rate sangat rendah. Ada yang tahu apakah mungkin ada masalah optimasi WebGL?

    • Di Intel HD Graphics 620 saya berjalan sangat mulus. Ini grafis terintegrasi Intel generasi ke-7, jadi termasuk lama dan lambat, tetapi saat hanya melihat scene bola default, sistem berjalan sangat lancar sampai saya terkejut. Saya memakai Chrome
    • Jika Anda bisa mencobanya lagi, perbaikan yang sangat meningkatkan performa di sebagian mesin baru saja dirilis
      Karena ini adalah porting game engine native ke WASM, masalahnya ada pada kode pembatas frame rate yang tidak cocok dengan timing API browser: https://raverie-us.github.io/raverie-engine/
    • Kedengarannya mungkin tidak memakai kartu grafis dedicated. Apakah demo WebGL lain berjalan normal?