Instancje silnika

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Interfejsy API Open Cloud silnika pozwalają zarządzać obiektami Instance w twoich grach Roblox z poziomu sieci.

Ograniczenia beta

Te interfejsy API są obecnie w wersji beta i mają następujące ograniczenia:

  • Możesz tylko odczytywać i aktualizować obiekty Script, LocalScript i ModuleScript.

  • Nie możesz aktualizować skryptów, które są obecnie otwarte w Roblox Studio.

  • Nie możesz aktualizować skryptów, które są częścią pakietu.

  • Możesz używać tylko uwierzytelniania za pomocą klucza API. Utwórz klucz API z universe-place-instances dodanym jako system API.

    Musisz określić gry, do których chcesz, aby klucz miał dostęp, a także pożądane zakresy uprawnień do odczytu i zapisu.

    Ekran klucza API Kreatora

  • Musisz mieć włączoną sesję kolaboracyjną dla gry, do której chcesz uzyskać dostęp.

  • Treści żądań, takich jak przy Aktualizacji instancji, są ograniczone do 200 KB.

Lista dzieci

Wylistuj wszystkie dzieci konkretnej instancji, podając identyfikator instancji i wywołując metodę List Instance Children.


import requests
# Generuj w https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Znajdź pod adresem https://create.roblox.com/dashboard/creations w menu rozwijanym kafelka gry
universeId = "<UNIVERSE_ID>"
# Znajdź identyfikator miejsca Start w https://create.roblox.com/dashboard/creations w menu rozwijanym kafelka gry
placeId = "<PLACE_ID>"
# Domyślny identyfikator dla korzenia modelu danych dowolnego miejsca
instanceId = "root"
# Nagłówek żądania
apiKeyHeaderKey = "x-api-key"
# URL punktu końcowego dla metody List Children
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("Wyniki operacji:", response.status_code, response.text)
# Parsuj ścieżkę obiektu operacji, aby później uzyskać zasób instancji. Zobacz sekcję Polling for Results, aby uzyskać więcej informacji.
operationPath = response.json()['path']

Zamiast tylko wylistować dzieci, odpowiedź zawiera obiekt Operation z innym punktem końcowym. Polluj ten punkt końcowy, aby asynchronicznie pobrać aktualną listę dzieci. Bardziej kompletny przykład kodu wygląda tak:


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("Wyniki operacji:", response.status_code, response.text)
# Parsuj ścieżkę obiektu operacji, aby użyć jej w pollingu dla zasobu instancji.
operationPath = response.json()['path']
response = PollForResults(operationPath)
print("Odpowiedź:", response.status_code, response.text)

Ostateczna odpowiedź może wyglądać mniej więcej tak:


{
"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": {}
}
},
...
]
}
}

Możesz następnie iterować po JSON, aby znaleźć konkretny identyfikator instancji:


instances = response.json()['response']['instances']
replicatedStorageId = ""
for i in instances:
if i['engineInstance']['Name'] == "ReplicatedStorage":
replicatedStorageId = i['engineInstance']['Id']
if replicatedStorageId:
# Teraz masz identyfikator instancji i możesz go uzyskać lub zaktualizować.
else:
# Nazwa nie została znaleziona.

Skrypty zawierają dodatkowe informacje w obiekcie Details, takie jak typ skryptu, źródło oraz czy są włączone.

Pobierz instancję

Ta metoda zwraca pojedynczą Instancję.


import requests
# Generuj w https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Znajdź pod adresem https://create.roblox.com/dashboard/creations w menu rozwijanym kafelka gry
universeId = "<UNIVERSE_ID>"
# Znajdź identyfikator miejsca Start w https://create.roblox.com/dashboard/creations w menu rozwijanym kafelka gry
placeId = "<PLACE_ID>"
# Domyślny identyfikator dla korzenia modelu danych dowolnego miejsca
instanceId = "<INSTANCE_ID>"
# Nagłówek żądania
apiKeyHeaderKey = "x-api-key"
# URL punktu końcowego dla metody Get Instance
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("Odpowiedź:", response.status_code, response.text)
# Parsuj ścieżkę obiektu operacji z odpowiedzi. Zobacz sekcję Polling for Results, aby uzyskać więcej informacji.
operationPath = response.json()['path']

Podobnie jak w przypadku metody List Instance Children, odpowiedź zawiera obiekt Operation, który pollujesz, aby uzyskać rzeczywistą instancję. Zobacz Poll for results, aby uzyskać więcej informacji.

Aktualizuj instancje

Po uzyskaniu odpowiedniego identyfikatora instancji, możesz go zaktualizować. Poll for results po dokonaniu początkowego żądania aktualizacji.


import json
import requests
# Generuj w https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Znajdź pod adresem https://create.roblox.com/dashboard/creations w menu rozwijanym kafelka gry
universeId = "<UNIVERSE_ID>"
# Znajdź identyfikator miejsca Start w https://create.roblox.com/dashboard/creations w menu rozwijanym kafelka gry
placeId = "<PLACE_ID>"
instanceId = "<INSTANCE_ID>"
instanceType = ""
propertyName = ""
propertyValue = ""
# Nagłówek żądania
apiKeyHeaderKey = "x-api-key"
contentTypeHeaderKey = "Content-type"
contentTypeHeaderValue = "application/json"
# URL punktu końcowego dla metody Update Instance
updateInstanceUrl = "https://apis.roblox.com/cloud/v2/universes/%s/places/%s/instances/%s"
# Klucze JSON
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("Odpowiedź:", response.status_code, response.text)
# Parsuj ścieżkę obiektu operacji z odpowiedzi. Poll for results, aby wykonać
# aktualizację.
operationPath = response.json()['path']

Poll for results

Wszystkie aktualne metody Instance zwracają obiekt Operation zamiast żądanego zasobu. Obiekt ten umożliwia asynchroniczne wykonanie oryginalnej operacji. Użyj ścieżki obiektu Operation (zawartej w początkowej odpowiedzi), aby pollować, kiedy zasób będzie gotowy.

Możesz użyć różnych strategii pollingu, takich jak wykładnicze opóźnienie lub stałe opóźnienie między żądaniami. Poniższy przykład polluje co pięć sekund, przez maksymalnie 10 razy.


import requests
import time
# Generuj w https://create.roblox.com/dashboard/credentials
apiKey = "<API_KEY>"
# Użyj ścieżki operacji z początkowego żądania
# Ma formę "universes/<UNIVERSE_ID>/places/<PLACE_ID>/instances/<INSTANCE_ID>/operations/<OPERATION_ID>"
operationPath = "<OPERATION_PATH>"
# Stałe pollingu
numberOfRetries = 10
retryPollingCadence = 5
# Nagłówek żądania
apiKeyHeaderKey = "x-api-key"
# URL punktu końcowego dla długoterminowego pollingu operacji
getOperationUrl = "https://apis.roblox.com/cloud/v2/%s"
# Klucze JSON
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("Odpowiedź:", response.status_code, response.text)

Demo sklepu z miksturami

Demo sklepu z miksturami Google Sheets pokazuje, jak aktualizować skrypt gry z poziomu sieci. Demo składa się z następujących elementów:

  • Niezablokowane miejsce z moim interfejsem użytkownika, który wyświetla różne mikstury i ich ceny.
  • Plik .ods, który importujesz do Google Sheets. Ten arkusz kalkulacyjny pozwala ci określać i aktualizować wartości dla właściwości w grze.
  • Kod dla skryptu Google Apps, który odczytuje dane z arkusza Google i aktualizuje skrypt ReplicatedStorage > ItemList w grze sklepu z miksturami.

Ustaw demo

  1. Przejdź do strony Demo sklepu z miksturami w języku Discover. Kliknij menu rozwijane, a następnie Edytuj w Studio. Studio otworzy się z kopią miejsca.

  2. Kliknij PlikZapisz w Robloxie i wypełnij wymagane informacje, aby zapisać demo sklepu z miksturami jako domyślne miejsce dla twojej gry. Przetestuj grę. Powinieneś zobaczyć interfejs użytkownika dla demo sklepu z miksturami. Zrób notatki dotyczące nazwy, kosztu i kolorów mikstur. Zmienisz je później przy użyciu Open Cloud!

Ustaw arkusz

  1. Pobierz plik arkusza dotyczącego sklepu z miksturami.
  2. Przejdź do Google Sheets i kliknij Nowy Arkusz.
  3. W arkuszu, który się pojawi, kliknij Plik > Importuj, a następnie kliknij zakładkę Prześlij.
  4. Przeciągnij plik arkusza sklepu z miksturami do okna przesyłania.
  5. Wybierz Zastąp arkusz i następnie Importuj dane.
  6. W zakładce AppScript arkusza skopiuj kod z komórki A1.
  7. Kliknij menu Rozszerzenia > Apps Script i wklej kod do pliku Code.gs. Następnie zapisz projekt.
  8. Wróć do arkusza, wybierz zakładkę Aktualizuj sklep z miksturami. Kliknij przycisk Aktualizuj skrypt, kliknij menu rozwijane i wybierz Przypisz skrypt.
  9. W oknie Przypisz skrypt wpisz UpdateScript i kliknij OK.

Utwórz klucz API

  1. Przejdź do strony Klucze API Open Cloud Kreatora i kliknij Utwórz klucz API.

  2. Wypełnij formularz następującymi informacjami.

    • Nazwa: PotionShop
    • System API: Dodaj system API universe-place-instances. Dodaj swoją grę sklepu z miksturami do systemu. W przypadku Operacji doświadczenia, dodaj dostęp do odczytu i zapisu.
    • Akceptowane adresy IP: Dodaj 0.0.0.0/0 jako adres IP
    • Wygaszenie: Brak wygaszenia
    • Kliknij Zapisz i wygeneruj klucz, a następnie Skopiuj klucz do schowka.
  3. Wklej klucz API do komórki Klucz API (D2) na zakładce Intro swojego arkusza Google.

Uzyskaj identyfikator uniwersum i miejsca

  1. Przejdź do strony Tworzenia Kreatora, najedź na kafelek gry sklepu z miksturami i kliknij menu rozwijane.
  2. Wybierz Kopiuj identyfikator uniwersum i wklej go do komórki Identyfikator uniwersum (E2) na zakładce Intro swojego arkusza Google.
  3. Wybierz Kopiuj identyfikator miejsca startowego i wklej go do komórki Identyfikator miejsca (F2) na zakładce Intro swojego arkusza Google.

Zaktualizuj wartości skryptu

  1. Na zakładce Aktualizuj sklep z miksturami arkusza, zmodyfikuj wszelkie wartości, które chcesz, i kliknij przycisk Aktualizuj skrypt.
  2. Jeśli Google Sheets poprosi o autoryzację, kliknij OK i pozwól swojemu kontu na uruchomienie skryptu.
  3. W Studio przetestuj grę sklepu z miksturami, aby zobaczyć wszelkie odzwierciedlone zmiany. Z poziomu okna Eksploratora możesz również otworzyć skrypt ReplicatedStorage > ItemList, aby sprawdzić zmiany.
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.