Penyimpanan Data Dunia
DataStorage ZEPETO adalah basis data jarak jauh yang menyimpan dan mengelola data permainan pengguna berdasarkan dunia.
Ini cocok untuk menyimpan data permainan pengguna yang perlu dipertahankan atau diperbarui di berbagai sesi permainan, karena disimpan dan dikelola berdasarkan UserID.
Kelola data permainan pengguna Anda menggunakan API yang tersedia di server Multiplay ZEPETO.
Anda dapat melihat dan memodifikasi data permainan spesifik pengguna yang disimpan di Data Storage dari menu Manajemen Data Dunia di ZEPETO Studio.
📘 Silakan merujuk ke panduan berikut. [Manajemen Data Dunia]
API Penyimpanan Data
📘 Silakan merujuk ke referensi API berikut. API ZEPETO.Multiplay.DataStorage
- Silakan isi kode server index.ts Sandbox.
- Di server lokal dalam lingkungan Unity Editor, data tidak disimpan saat server dimatikan dan dijalankan kembali.
- Setelah penyebaran Dunia, data disimpan di ZEPETO DB dan dipelihara.
- Data tidak akan disimpan jika aturan di bawah ini tidak dipenuhi:
- Tidak ada nilai yang diberikan
- Sebuah nilai yang tidak dapat disimpan dimasukkan
- Keterbatasan Penyimpanan Data
- Batas panjang kunci: 50 karakter
- Hanya huruf, angka, dan garis bawah (_) yang diizinkan dalam kunci
- Jumlah maksimum kunci: 1000 per ID Pengguna
- Ukuran data nilai maksimum: 500.000 karakter
- Perhatikan bahwa data nilai diserialisasi bersama dengan pengidentifikasi internal saat disimpan di server yang sebenarnya. Gunakan dengan margin keamanan.
Baca / Tulis / Hapus data untuk satu kunci
Anda dapat membaca, menulis, dan menghapus data untuk satu kunci di DataStorage pemain lokal menggunakan DataStorage.get, DataStorage.set dan DataStorage.remove.
import { DataStorage } from 'ZEPETO.Multiplay.DataStorage';
export default class extends Sandbox {
//...
async onJoin(client: SandboxPlayer) {
// Muat penyimpanan data pemain lokal
const playerStorage: DataStorage = client.loadDataStorage();
// Dapatkan nilai yang terkait dengan kunci 'level'
let playerLevel = await playerStorage.get("level") as number;
if (playerLevel == null) {
playerLevel += 1;
}
// Simpan nilai yang ditingkatkan
await playerStorage.set("level", playerLevel);
// Hapus data
await playerStorage.remove("level");
}
}
Baca / Tulis data untuk beberapa kunci
Anda dapat membaca, menulis, dan menghapus data untuk beberapa kunci di penyimpanan data pemain lokal menggunakan DataStorage.mget dan DataStorage.mset.
import { DataStorage } from 'ZEPETO.Multiplay.DataStorage';
export default class extends Sandbox {
//...
async onJoin(client: SandboxPlayer) {
const storage = client.loadDataStorage();
// mset (multi key-value) store
const success = await storage.mset<number>([
{ key: 'key1', value: 1 },
{ key: 'key2', value: 2 }
]);
// Jika berhasil
if (success) {
// Dapatkan nilai dari key1 dan key2 sekaligus
const keys = ['key1', 'key2'];
const keyValeus = await storage.mget(keys);
keys.forEach(key => {
const value = keyValeus[key];
console.log(value);
});
}
}
}
Penanganan Kesalahan
Anda dapat menerapkan penanganan yang sesuai untuk pengecualian yang terjadi saat memanggil API DataStorage dengan merujuk pada jenis kesalahan yang didefinisikan di DataStorageError.
import { DataStorage } from 'ZEPETO.Multiplay.DataStorage';
export default class extends Sandbox {
//...
async onJoin(client: SandboxPlayer) {
// Muat penyimpanan data pemain lokal
const playerStorage: DataStorage = client.loadDataStorage();
try {
let playerLevel = await playerStorage.get("level") as number;
} catch (error) {
let systemError = (error as SystemError);
if (systemError.code === DataStorageError.Unknown || systemError.code === DataStorageError.NetworkError) {
// Kesalahan sistem atau kesalahan jaringan
console.log(systemError.message);
} else if (systemError.code === DataStorageError.KeyConstraintViolated) {
// Pelanggaran batas kunci
console.log(systemError.message);
} else if (systemError.code === DataStorageError.ValueConstraintViolated) {
// Pelanggaran batas nilai
console.log(systemError.message);
}
}
}
}
Akses Penyimpanan Data berdasarkan ID Pengguna
Juga dimungkinkan untuk mengakses Penyimpanan Data pengguna tertentu berdasarkan UserID menggunakan DataStorage.loadDataStorage, alih-alih Penyimpanan Data pemain lokal.
const userStorage: DataStorage = await loadDataStorage(userId);
👍 Tip