Motor Açık Cloud API'leri, web üzerinden Roblox oyunlarınızdaki Instance nesnelerini yönetmenizi sağlar.
Beta kısıtlamaları
Bu API'ler şu anda beta aşamasındadır ve aşağıdaki kısıtlamalara sahiptir:
Sadece Script, LocalScript ve ModuleScript nesnelerini okuyabilir ve güncelleyebilirsiniz.
Roblox Studio'da şu anda açık olan scriptleri güncelleyemezsiniz.
Bir paketin parçası olan scriptleri güncelleyemezsiniz.
Sadece API anahtarı kimlik doğrulamasını kullanabilirsiniz. universe-place-instances API sisteminin eklendiği bir API anahtarı oluşturun.
Anahtarın erişim sağlamak istediğiniz oyunları belirtmeli ve istediğiniz okuma ve yazma izin kapsamlarını tanımlamalısınız.

Erişim sağlamak istediğiniz oyunun işbirlikçi oturumunun etkin olması gerekmektedir.
Güncelleme Örneği gibi istek gövde boyutları 200 KB ile sınırlıdır.
Alt öğeleri listele
Belirli bir örneğin tüm alt öğelerini listelemek için bir örnek ID'si belirtin ve List Instance Children yöntemini çağırın.
import requests
# https://create.roblox.com/dashboard/credentials adresinde oluşturun
apiKey = "<API_KEY>"
# Bir oyun simgesinin taşma menüsünde https://create.roblox.com/dashboard/creations adresinde bulun
universeId = "<UNIVERSE_ID>"
# Bir oyun simgesinin taşma menüsünde https://create.roblox.com/dashboard/creations adresinde Başlangıç Yeri ID'sini bulun
placeId = "<PLACE_ID>"
# Herhangi bir yerin veri modelinin kökü için varsayılan ID
instanceId = "root"
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# Alt öğeleri listeleme yöntemi için uç nokta URL'si
listChildrenUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s:listChildren"
def ListChildren():
url = listChildrenUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
response = ListChildren()
print("İşlem Sonuçları:", response.status_code, response.text)
# İşlem nesnesinin yolunu ayrıştırarak daha sonra Instance kaynağını elde edin. Daha fazla bilgi için Sonuçlar için Polling bölümlerine bakın.
operationPath = response.json()['path']
Alt öğeleri listelemek yerine, yanıt, farklı bir uç noktayla birlikte bir Operation nesnesi içerir. Bu uç noktayı poll ederek gerçek alt öğeler listesini asenkron olarak geri alabilirsiniz. Daha kapsamlı bir kod örneği şöyle görünebilir:
import requests
import time
apiKey = "<API_KEY>"
universeId = "<UNIVERSE_ID>"
placeId = "<PLACE_ID>"
instanceId = "root"
apiKeyHeaderKey = "x-api-key"
listChildrenUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s:listChildren"
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
numberOfRetries = 10
retryPollingCadence = 5
doneJSONKey = "done"
def ListChildren():
url = listChildrenUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
def GetOperation(operationPath):
url = getOperationUrl % (operationPath)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
def PollForResults(operationPath):
currentRetries = 0
while (currentRetries < numberOfRetries):
time.sleep(retryPollingCadence)
results = GetOperation(operationPath)
currentRetries += 1
if (results.status_code != 200 or results.json()[doneJSONKey]):
return results
response = ListChildren()
print("İşlem Sonuçları:", response.status_code, response.text)
# Polling için kullanmak üzere İşlem nesnesinin yolunu ayırın.
operationPath = response.json()['path']
response = PollForResults(operationPath)
print("Yanıt:", response.status_code, response.text)
Son yanıt aşağıdaki gibi görünebilir:
{
"path": "universes/1234567890/places/98765432109/instances/root/operations/a1a2a3a4-a1a2-a1a2-a1a2-a1a2a3a4a5a6",
"done": true,
"response": {
"@type": "type.googleapis.com/roblox.open_cloud.cloud.v2.ListInstanceChildrenResponse",
"instances": [
{
"path": "universes/1234567890/places/98765432109/instances/b1b2b3b4-b1b2-b1b2-b1b2-b1b2b3b4b5b6",
"hasChildren": true,
"engineInstance": {
"Id": "b1b2b3b4-b1b2-b1b2-b1b2-b1b2b3b4b5b6",
"Parent": "a1a2a3a4-a1a2-a1a2-a1a2-a1a2a3a4a5a6",
"Name": "Workspace",
"Details": {}
}
},
...
]
}
}
JSON üzerinde bir örnek ID'si bulmak için döngü yapabilirsiniz:
instances = response.json()['response']['instances']replicatedStorageId = ""for i in instances:if i['engineInstance']['Name'] == "ReplicatedStorage":replicatedStorageId = i['engineInstance']['Id']if replicatedStorageId:# Şimdi bir örnek ID'sine sahipsiniz ve bunu alabilir veya güncelleyebilirsiniz.else:# İsim bulunamadı.
Scriptler, script tipi, kaynak ve etkin olup olmadıkları gibi ek bilgileri Details nesnesinde içerir.
Bir örneği alın
Bu yöntem bir Instance döndürür.
import requests
# https://create.roblox.com/dashboard/credentials adresinde oluşturun
apiKey = "<API_KEY>"
# Bir oyun simgesinin taşma menüsünde https://create.roblox.com/dashboard/creations adresinde bulun
universeId = "<UNIVERSE_ID>"
# Bir oyun simgesinin taşma menüsünde https://create.roblox.com/dashboard/creations adresinde Başlangıç Yeri ID'sini bulun
placeId = "<PLACE_ID>"
# Herhangi bir yerin veri modelinin kökü için varsayılan ID
instanceId = "<INSTANCE_ID>"
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# Get Instance yöntemi için uç nokta URL'si
getInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
def GetInstance():
url = getInstanceUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey}
return requests.get(url, headers = headerData)
response = GetInstance()
print("Yanıt:", response.status_code, response.text)
# Yanıttan İşlem nesnesinin yolunu ayrıştırın. Daha fazla bilgi için Sonuçlar için Polling bölümlerine bakın.
operationPath = response.json()['path']
List Instance Children yönteminde olduğu gibi, yanıt ayrıca gerçek örneği almak için polling yapmanız gereken bir Operation nesnesi içerir. Daha fazla bilgi için Sonuçlar için Polling bölümüne bakın.
Örnekleri güncelle
Uygun örnek ID'sini aldıktan sonra, bunu güncelleyebilirsiniz. İlk güncelleme isteğinde bulunduktan sonra Sonuçlar için Polling yapın.
import json
import requests
# https://create.roblox.com/dashboard/credentials adresinde oluşturun
apiKey = "<API_KEY>"
# Bir oyun simgesinin taşma menüsünde https://create.roblox.com/dashboard/creations adresinde bulun
universeId = "<UNIVERSE_ID>"
# Bir oyun simgesinin taşma menüsünde https://create.roblox.com/dashboard/creations adresinde Başlangıç Yeri ID'sini bulun
placeId = "<PLACE_ID>"
instanceId = "<INSTANCE_ID>"
instanceType = ""
propertyName = ""
propertyValue = ""
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
contentTypeHeaderKey = "Content-type"
contentTypeHeaderValue = "application/json"
# Update Instance yöntemi için uç nokta URL'si
updateInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
# JSON anahtarları
detailsJSONKey = "Details"
engineInstanceJSONKey = "engineInstance"
def GeneratePostData():
propertiesDict = {propertyName: propertyValue}
detailsDict = {instanceType: propertiesDict}
instanceDict = {detailsJSONKey: detailsDict}
outerDict = {engineInstanceJSONKey: instanceDict}
return json.dumps(outerDict)
def UpdateInstance(postData):
url = updateInstanceUrl % (universeId, placeId, instanceId)
headerData = {apiKeyHeaderKey: apiKey,
contentTypeHeaderKey: contentTypeHeaderValue}
return requests.patch(url, headers = headerData, data = postData)
postData = GeneratePostData()
response = UpdateInstance(postData)
print("Yanıt:", response.status_code, response.text)
# Yanıttan İşlem nesnesinin yolunu ayrıştırın. Güncellemeyi gerçekleştirmek için sonuçlar için polling yapın.
operationPath = response.json()['path']
Sonuçlar için Polling
Tüm mevcut Instance yöntemleri, talep ettiğiniz kaynağın yerine bir Operation nesnesi döndürür. Bu nesne, orijinal işlemi asenkron olarak gerçekleştirmenizi sağlar. Kaynağın hazır olduğu zamanı polling yapmak için Operation nesnesinin yolunu (ilk yanıtta dahil edilmiştir) kullanın.
Çeşitli polling stratejileri kullanabilirsiniz, örneğin, istekler arasına sabit bir gecikme veya üstel bir geri dönüş eklemeyi. Aşağıdaki örnek, her beş saniyede bir, 10 kez polling yapar.
import requests
import time
# https://create.roblox.com/dashboard/credentials adresinde oluşturun
apiKey = "<API_KEY>"
# İlk isteğinizden Operation yolunu kullanın
# "universes/<UNIVERSE_ID>/places/<PLACE_ID>/instances/<INSTANCE_ID>/operations/<OPERATION_ID>" biçimindedir
operationPath = "<OPERATION_PATH>"
# Polling sabitleri
numberOfRetries = 10
retryPollingCadence = 5
# İstek başlığı
apiKeyHeaderKey = "x-api-key"
# Uzun süren işlem polling'i için uç nokta URL'si
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
# JSON anahtarları
doneJSONKey = "done"
def GetOperation(operationPath):
url = getOperationUrl % (operationPath)
headerData = {apiKeyHeaderKey: apiKey}
results = requests.get(url, headers = headerData)
return results
def PollForResults(operationPath):
currentRetries = 0
while (currentRetries < numberOfRetries):
time.sleep(retryPollingCadence)
results = GetOperation(operationPath)
currentRetries += 1
if (results.status_code != 200 or results.json()[doneJSONKey]):
return results
response = PollForResults(operationPath)
print("Yanıt:", response.status_code, response.text)
İksir Dükkanı demosu
İksir Dükkanı Google Sayfaları demosu, bir oyunun scriptini webden nasıl güncelleyebileceğinizi gösterir. Demo şu bileşenlerden oluşur:
- Farklı iksirleri ve fiyatlarını sergileyen bir sahne ile korumasız bir yer.
- Oyun içindeki özellikler için değerleri tanımlayıp güncellemenizi sağlayan bir Google Sayfaları'na yüklediğiniz .ods dosyası.
- İksir Dükkanındaki ReplicatedStorage > ItemList scriptini güncelleyen Google Apps Script için kod.
Demo'yu kur
İksir Dükkanı Demo Keşfet sayfasına gidin. Taşma menüsüne tıklayın ve Studio'da Düzenle seçeneğini tıklayın. Studio, yerin bir kopyası ile açılacaktır.
Dosya → Roblox'a Kaydet seçeneğine tıklayın ve İksir Dükkanı Demo'sunu oyununuzun varsayılan yeri olarak kaydetmek için gerekli bilgileri doldurun. Oyunu test edin. İksir Dükkanı Demo'sunun UI'sını görmelisiniz. İkserlerin isimlerini, maliyetlerini ve renklerini not alın. Daha sonra bunları Open Cloud kullanarak değiştireceksiniz!
Sayfayı ayarlayın
- İksir Dükkanı elektronik tablo dosyasını indirin.
- Google Sayfaları sayfasına gidin ve Boş Elektronik Tablo seçeneğine tıklayın.
- Görünen sayfada Dosya > İçeri Aktar seçeneğine tıklayın ve Yükle sekmesini tıklayın.
- İksir Dükkanı elektronik tablo dosyasını yükleme penceresine sürükleyin.
- Elektronik tabloyu değiştir seçeneğini seçin ve ardından Verileri içe aktar seçeneğine tıklayın.
- Sayfanın AppScript sekmesinde, A1 hücresindeki kodu kopyalayın.
- Eklentiler > Apps Script menüsüne tıklayın ve kodu Code.gs dosyasına yapıştırın. Ardından projeyi kaydedin.
- Elektronik tabloda, İksir Dükkanını Güncelle sekmesini seçin. Scripti Güncelle butonuna tıklayın, taşma menüsüne tıklayın ve Script Ata seçeneğini seçin.
- Script Ata penceresine UpdateScript yazın ve Tamam'a tıklayın.
API anahtarı oluşturun
Yaratıcı Hub Açık Bulut API Anahtarları sayfasına gidin ve API Anahtarı Oluştur seçeneğini tıklayın.
Aşağıdaki bilgileri içeren formu doldurun.
- Ad: İksirDükkanı
- API Sistemi: universe-place-instances API sistemini ekleyin. İksir Dükkanınızı bu sisteme ekleyin. Deneyim İşlemleri için okuma ve yazma erişimini ekleyin.
- Kabul Edilen IP Adresleri: IP Adresi olarak 0.0.0.0/0 ekleyin.
- Son Kullanma Tarihi: Son Kullanma Tarihi Olmayan
- Kaydet & Anahtarı Oluştur'a ve ardından Anahtarı Panoya Kopyala'ya tıklayın.
API anahtarını, Google Sayfanızın Giriş sekmesindeki API Anahtarı hücresine (D2) yapıştırın.
Evrensel ve yer kimliklerini alın
- Yaratıcı Hub Oluşumları sayfasına gidin, İksir Dükkanının oyun simgesinin üzerine gelin ve taşma menüsüne tıklayın.
- Evrensel ID'yi Kopyala seçeneğini seçin ve bunu Google Sayfanızın Giriş sekmesindeki Evrensel ID hücresine (E2) yapıştırın.
- Başlangıç Yeri ID'sini Kopyala seçeneğini seçin ve bunu Google Sayfanızın Giriş sekmesindeki Yer ID hücresine (F2) yapıştırın.
Script değerlerini güncelle
- Sayfanın İksir Dükkanını Güncelle sekmesinde, istediğiniz değerleri değiştirin ve Scripti Güncelle butonuna tıklayın.
- Google Sayfaları sizden yetkilendirme istiyorsa, Tamam'a tıklayarak hesabınızın scripti çalıştırmasına izin verin.
- Studio'da, İksir Dükkanı'nda yansıtılan değişiklikleri görmek için oyun testi yapın. Keşfet penceresinden, değişiklikleri incelemek için ReplicatedStorage > ItemList scriptini de açabilirsiniz.