Kompatibilitas SDK
Ada tiga nomor versi, dan masing-masing menjawab pertanyaan yang berbeda.
| Nomor | Di mana | Menjawab |
|---|---|---|
| Versi SDK platform | SDK_VERSION di host-shell |
Kemampuan apa yang tersedia saat ini? |
| Versi SDK game | ikut ter-bundle di main.js |
Game ini dibangun dengan SDK yang mana? |
Rentang sdk di ralyoo.json |
ditulis developer game | Platform mana saja yang boleh memuat game? |
Aturan
- Mayor = kontrak pesan. Game dan platform bicara lewat pesan (
ToGame/FromGame). Selama mayornya sama, arti pesan yang ada tidak pernah berubah dan tidak ada pesan yang dihapus. - Minor hanya menambah. API baru selalu opsional. Kedua sisi mengabaikan tipe pesan yang tidak dikenalnya, jadi:
- game 1.0 di platform 1.3 jalan persis seperti dulu;
- game 1.3 di platform 1.0 tetap jalan, hanya fitur barunya tidak berefek.
- Game menyatakan kebutuhannya. Game yang membutuhkan fitur minor tertentu menulis batas bawahnya:
"sdk": ">=1.1 <2". Game yang hanya memakai API 1.0 cukup">=1 <2". - Diperiksa dua kali. Registry menolak unggahan yang rentangnya tidak memuat versi SDK platform. Host-shell memeriksa lagi sebelum memasang game, dan menampilkannya sebagai "butuh versi Ralyoo yang lebih baru" kalau tidak cocok.
- Mayor baru tidak mematikan game lama. Saat mayor 2 terbit, platform tetap menyajikan runtime mayor 1 untuk bundel yang rentangnya
<2. Bundel lama tidak perlu dibangun ulang. - Deprekasi. API yang akan dihapus ditandai
@deprecatedminimal satu minor sebelum mayor berikutnya, dan dicatat di CHANGELOG.
Yang termasuk kontrak
- Semua yang diekspor
@ralyoo/sdk,@ralyoo/sdk/governor,@ralyoo/sdk/testing,@ralyoo/sdk/vite,@ralyoo/sdk/manifest,@ralyoo/sdk/bundle,@ralyoo/sdk/widgets. - Bentuk
ralyoo.json(MANIFEST_SCHEMA). Field yang tidak dikenal hanya jadi peringatan, supaya manifest untuk SDK baru tetap terbaca SDK lama. - Format bundel dan aturan sandbox (lihat dokumentasi developer, bab Bundel).
- Pustaka bersama di
/vendor(@ralyoo/sdk/vendor). Menaikkan mayor salah satu pustaka adalah perubahan mayor SDK; versi lama tetap disajikan di URL lamanya (immutable).
Yang bukan kontrak
@ralyoo/sdk/platform dipakai host-shell dan Ralystudioo. Bentuknya boleh berubah di minor mana pun; game tidak boleh mengimpornya.
Cara menaikkan versi
- Ubah
versiondipackages/sdk/package.jsondanSDK_VERSIONdisrc/version.ts(tes gagal kalau berbeda). - Tulis CHANGELOG: Ditambahkan, Diubah, Dihapus, plus bagian Kompatibilitas.
- Perubahan pesan: tambahkan tipe baru, jangan ubah yang ada. Tes
sdk.test.tspunya kasus game 1.0 terhadap platform sekarang; biarkan hijau.