Godot Engine oferuje różne funkcje i klasy, które pozwalają na obsługę zasobów sieciowych, takich jak HTTP, WebSocket czy integracja z przeglądarką internetową. Poniżej znajdziesz szczegółowy przegląd funkcji sieciowych dostępnych w Godot (w szczególności dla wersji 4.x).
1. HTTP Request – Pobieranie zasobów przez HTTP
Klasa HTTPRequest
pozwala na wysyłanie zapytań HTTP (GET, POST itp.) i odbieranie danych z serwera.
- Metody HTTP obsługiwane:
GET
– pobieranie danych.POST
– wysyłanie danych na serwer.PUT
,DELETE
, i inne.
Przykład: Wykonywanie zapytania HTTP GET
extends Node
@onready var http_request = HTTPRequest.new()
func _ready():
add_child(http_request)
http_request.request("https://api.example.com/data")
func _on_request_completed(result, response_code, headers, body):
if response_code == 200:
var response = body.get_string_from_utf8()
print("Response: ", response)
else:
print("Error: ", response_code)
Parametry konfiguracyjne:
- Możesz wysyłać dane w formacie JSON:
var data = {"key": "value"}
http_request.request(
"https://api.example.com/data",
["Content-Type: application/json"],
true,
HTTPClient.METHOD_POST,
JSON.print(data)
)
2. WebSocket – Komunikacja w czasie rzeczywistym
Godot obsługuje WebSockety za pomocą klas WebSocketClient
i WebSocketServer
.
Klient WebSocket:
extends Node
@onready var ws = WebSocketClient.new()
func _ready():
ws.connect("connection_established", self, "_on_connection_established")
ws.connect_to_url("ws://echo.websocket.org")
func _on_connection_established(protocol):
print("Connected to WebSocket!")
ws.send_text("Hello, WebSocket!")
func _process(delta):
ws.poll() # Obsługuje przychodzące wiadomości
func _on_data_received(data):
print("Received: ", data)
- Zastosowanie: Idealne do gier wieloosobowych w czasie rzeczywistym lub aplikacji korzystających z serwisów live (np. chaty, giełdy danych).
Serwer WebSocket:
Możesz również hostować serwer WebSocket w Godot:
extends Node
@onready var server = WebSocketServer.new()
func _ready():
server.listen(12345) # Otwórz port 12345
server.connect("client_connected", self, "_on_client_connected")
func _on_client_connected(client_id):
print("Client connected: ", client_id)
func _process(delta):
server.poll()
3. JSON, REST API i Webhooks
Godot ułatwia pracę z formatami JSON, które są powszechne w komunikacji z serwerami REST API.
Obsługa JSON:
- Parsowanie danych JSON:
var json_string = '{"name": "Godot", "version": 4}'
var result = JSON.parse(json_string)
if result.error == OK:
var data = result.result
print(data["name"]) # Wyświetli: Godot
else:
print("Error parsing JSON")
Praca z REST API:
Użyj klasy HTTPRequest
w połączeniu z JSON do komunikacji z serwerami REST.
- Wysyłanie i odbieranie JSON:
var payload = {"username": "admin", "password": "1234"}
http_request.request(
"https://api.example.com/login",
["Content-Type: application/json"],
true,
HTTPClient.METHOD_POST,
JSON.print(payload)
)
4. WebAssembly i Web Export
Godot pozwala na eksportowanie projektów do przeglądarek za pomocą WebAssembly. Możesz tworzyć gry i aplikacje, które działają bezpośrednio w przeglądarce.
Funkcje specyficzne dla przeglądarki:
JavaScript.eval()
: Wysyła polecenia JavaScript do przeglądarki.if OS.has_feature("JavaScript"): JavaScript.eval("alert('Hello from Godot!')")
- Integracja z przeglądarką: Możesz wymieniać dane między grą a środowiskiem przeglądarki.
Przykład: Wywołanie funkcji w przeglądarce:
if OS.has_feature("JavaScript"):
var js_function = "function greet() { return 'Hello, Godot!'; } greet();"
var result = JavaScript.eval(js_function)
print(result) # Wyświetli: Hello, Godot!
5. Obsługa plików zdalnych
Godot pozwala na pobieranie plików (np. obrazów lub danych) z zewnętrznych serwerów za pomocą HTTPRequest
.
Przykład pobierania obrazu:
extends Sprite
@onready var http_request = HTTPRequest.new()
func _ready():
add_child(http_request)
http_request.request("https://example.com/image.png")
func _on_request_completed(result, response_code, headers, body):
if response_code == 200:
var image = Image.new()
image.load_png_from_buffer(body)
var texture = ImageTexture.new()
texture.create_from_image(image)
self.texture = texture
6. Zabezpieczenia i HTTPS
Godot obsługuje HTTPS, ale pamiętaj o skonfigurowaniu certyfikatów SSL, jeśli Twoje zapytania wymagają szyfrowania.
- Certyfikaty SSL: Możesz skonfigurować je za pomocą
HTTPClient
lubHTTPRequest
. - Upewnij się, że Twój serwer ma poprawnie skonfigurowane certyfikaty, aby uniknąć problemów z połączeniem.
Podsumowanie
Godot Engine oferuje szeroki wachlarz narzędzi do obsługi sieci, takich jak:
HTTPRequest
do zapytań HTTP.WebSocketClient
iWebSocketServer
do komunikacji w czasie rzeczywistym.JSON
do pracy z danymi w formacie JSON.- WebAssembly do eksportowania gier do przeglądarek.
Dzięki tym funkcjom możesz tworzyć zarówno gry sieciowe, jak i aplikacje internetowe oparte na Godot.