Pengguna dan ID pengguna yang diproyeksikan dalam domain

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Roblox memberikan setiap pengguna sebuah ID pengguna yang diproyeksikan dalam domain yang unik per permainan atau aplikasi yang mereka interaksikan. Halaman ini menjelaskan cara kerja pengidentifikasian yang diproyeksikan dalam domain dan bagaimana menggunakan tipe User dalam kode permainan Anda.

Konsep berikut adalah pusat dari pengidentifikasian pengguna:

KonsepDeskripsi
PenggunaSebuah akun persisten di Roblox.
PemainRepresentasi pengguna dalam model data permainan yang sedang berjalan (lihat Pemain).
tipe data UserSebuah tipe data yang mewakili identitas pengguna dalam domain tertentu. Ini adalah pengidentifikasi standar untuk mereferensikan pengguna dalam kode permainan.
ID pengguna yang diproyeksikan dalam domainPengidentifikasi numerik yang secara unik mengidentifikasi pengguna dalam domain tertentu. Pengidentifikasi ini berbeda dalam setiap permainan dan aplikasi.

ID pengguna yang diproyeksikan dalam domain

ID pengguna yang diproyeksikan dalam domain adalah pengidentifikasi unik yang diberikan kepada pengguna dalam permainan atau aplikasi tertentu. Tidak seperti ID pengguna global, ID pengguna yang diproyeksikan dalam domain hanya berarti dalam domain yang mengeluarkannya, jadi pengguna yang sama memiliki ID pengguna yang diproyeksikan dalam domain yang berbeda di setiap permainan atau aplikasi yang mereka interaksikan. Pemain yang bergabung dengan permainan Anda sebelum peluncuran ID yang diproyeksikan tetap mempertahankan ID pengguna global aslinya di permainan tersebut (lihat Pemain yang Kembali).

Jenis domain diwakili oleh Enum.DomainType:

Jenis domainDiproyeksikan untukContoh
Enum.DomainType.EXPERIENCESebuah permainan (alam semesta) tertentuID pemain di permainan Anda
Enum.DomainType.OAUTHSebuah aplikasi OAuth tertentuID pengguna di alat eksternal Anda

Cara kerja ID yang diproyeksikan dalam domain

Ketika seorang pemain bergabung dengan permainan Anda, mereka menerima ID pengguna yang diproyeksikan dalam domain yang unik untuk permainan tersebut. Pemain yang sama yang bergabung dengan permainan yang berbeda menerima ID pengguna yang diproyeksikan dalam domain yang berbeda. Ini berarti:

  • ID pengguna yang diproyeksikan dalam domain adalah bilangan bulat, mirip dengan ID pengguna global yang ada.
  • ID pengguna yang diproyeksikan dalam domain tidak bertabrakan dengan ID pengguna global yang ada.
  • Nilai numerik yang sama dapat muncul di domain yang berbeda untuk pengguna yang berbeda. Kunci unik adalah kombinasi jenis domain, ID domain, dan ID pengguna yang diproyeksikan dalam domain.

Contoh skenario

Contoh berikut menunjukkan bagaimana permainan yang berbeda mereferensikan pengguna yang sama:

SkenarioKonteks penggunaID pengguna yang dilihat oleh permainan
Pengguna terhubung ke Permainan APemain yang kembali (mengunjungi sebelum ID yang diproyeksikan)123 (ID global, tidak berubah)
Pengguna terhubung ke Permainan BKunjungan pertama setelah peluncuran ID yang diproyeksikan500789 (ID pengguna yang diproyeksikan dalam domain untuk Permainan B)
Pengguna terhubung ke Permainan CKunjungan pertama setelah peluncuran ID yang diproyeksikan302441 (ID pengguna yang diproyeksikan dalam domain untuk Permainan C)

Pemain yang Kembali

Jika seorang pemain sudah bergabung dengan permainan Anda sebelum peluncuran ID pengguna yang diproyeksikan, mereka mempertahankan ID pengguna global aslinya di permainan tersebut. Ini memastikan kunci data penyimpanan yang ada, papan peringkat, dan inventaris terus berfungsi tanpa perubahan.

Bekerja dengan Tipe Pengguna

User adalah cara standar untuk mengidentifikasi pengguna dalam kode permainan. Nilai User membawa ID pengguna yang diproyeksikan dalam domain bersama jenis domain dan ID domain, sehingga konteks identitas selalu berjalan dengan pengidentifikasi. Untuk rincian API lengkap, lihat referensi User.

Mendapatkan Pengguna dari Pemain

Cara utama untuk memperoleh User adalah dari Player yang terhubung melalui Player.User:


local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("ID pengguna domain:", user.Id)
print("Jenis domain:", user.DomainType)
print("ID domain:", user.DomainId)
end)

Membangun Pengguna dari ID

Untuk membuat User dari ID pengguna yang diketahui dalam permainan saat ini, gunakan User.fromId():


local user = User.fromId(knownUserId)

Menggunakan Pengguna dengan API mesin

API mesin yang menerima parameter ID pengguna juga menerima nilai User secara langsung. Menggunakan User sangat dianjurkan:


-- Kedua bentuk berfungsi:
BadgeService:AwardBadge(player.User, badgeId) -- Dianjurkan
BadgeService:AwardBadge(player.UserId, badgeId)

-- Kedua bentuk berfungsi:
local target = Players:GetPlayerByUserId(player.User) -- Dianjurkan
local target = Players:GetPlayerByUserId(someUserId)

Ketika ID pengguna numerik diteruskan ke API mesin yang menerima ID pengguna, itu secara otomatis dibungkus menjadi User secara internal.

API mesin yang mengembalikan ID pengguna

API mesin yang mengembalikan ID pengguna numerik terus menggunakan nama dan tipe bidang yang sama. Setiap ID yang dikembalikan adalah ID global atau ID pengguna yang diproyeksikan dalam domain tergantung pada apakah pengguna bergabung dengan permainan sebelum atau setelah peluncuran ID yang diproyeksikan:

  • Pemain yang Kembali (pertama bergabung sebelum peluncuran ID yang diproyeksikan) — API mengembalikan ID pengguna global pengguna.
  • Pemain Baru (pertama bergabung setelah peluncuran ID yang diproyeksikan) — API mengembalikan ID pengguna yang diproyeksikan dalam domain untuk pengguna.

Baik ID pengguna global maupun ID pengguna yang diproyeksikan dalam domain adalah bilangan bulat standar yang tidak bertabrakan, sehingga kode yang ada yang membaca bidang numerik ini terus berfungsi.

Menyimpan identitas pengguna

Untuk kunci penyimpanan data dalam satu permainan, gunakan user.Id secara langsung:


local key = ("player_%d"):format(player.User.Id)
PlayerDataStore:SetAsync(key, data)

Untuk nilai yang mungkin dibaca oleh sistem lain atau memerlukan konteks domain penuh, serialisasikan User dengan ToString():


local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- Nantinya, kembalikan dari string
local user = User.fromString(encoded)

Untuk rincian lebih lanjut tentang jaminan serialisasi, lihat referensi User.

Praktik terbaik

  • Gunakan Player.User sebagai pengidentifikasi standar dalam kode baru.
  • Gunakan ToString() dan fromString() saat menyimpan atau mengirim nilai User.
  • Jangan gunakan ID pengguna numerik dari satu domain untuk mengidentifikasi pengguna di domain lain.

Kapan harus menggunakan Pengguna atau Pemain

  • Gunakan Player untuk tindakan di server: gerakan karakter, GUI, teleport, chat, inventaris.
  • Gunakan User untuk identitas yang bertahan setelah sesi: penyimpanan data, alat Open Cloud, referensi lintas permainan.
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.