Einführung
Da Online -Spiele ihre Anforderungen an die Reaktionsgeschwindigkeit und Stabilität weiter verbessern, ist die verteilte Serverarchitektur nach und nach zur Mainstream -Lösung. In diesem Artikel wird ausführlich eingeführt, wie die PHP -Sprache verwendet wird, um mit Workerman Framework zusammenzuarbeiten, um Kommunikationslösungen mit Unity3D zu implementieren, um die Leistungs- und Parallelitätsfunktionen des Spielsystems umfassend zu verbessern.
Was ist Workerman?
Workerman ist ein ereignisorientiertes PHP-Socket-Framework mit leistungsstärkerem Bereich für die Entwicklung von Netzwerkdienstprogrammen, die eine hohe Parallelität unterstützen. Aufgrund seiner leichten, nicht blockierenden IO-, plattformübergreifenden Funktionen wird es in Bereichen wie sofortiger Kommunikation, Internet der Dinge und Gaming-Servern häufig verwendet.
Umweltvorbereitung
Vor der Entwicklung eines verteilten Gaming -Servers müssen Sie die folgende grundlegende Umgebung erstellen:
- PHP Ausführende Umgebung stellt sicher, dass PHP -Skripte ausgeführt werden können.
- Installieren Sie das Workerman Framework mit Composer:
composer require workerman/workerman
- Konfigurieren Sie die Unity3D -Entwicklungsumgebung, und die empfohlene Version ist neuer.
Erstellen Sie einen Server
1. Erstellen Sie ein PHP -Server -Skript
Erstellen Sie zunächst eine neue Skriptdatei mit dem Namen
server.php
und schreiben Sie Folgendes:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
// Erstellen aWorkerMonitor2345Hafen,verwendenwebsocketProtokoll
$worker = new Worker('websocket://0.0.0.0:2345');
// Start-up4Dienstleistungen, die durch jeden Prozess bereitgestellt werden
$worker-> Graf = 4;
// Rückruf nach Empfang der Nachricht $ Worker-> onmessage = Funktion ($ Verbindung, $ data) {
// Verarbeiten Sie die empfangenen Clientdaten // auf den Client $ connection-> send ('Hallo, unity3d!');
};
// Arbeiter starten
Arbeiter :: Runall ();
?>
Der oben genannte Code erstellt einen Server, der das WebSocket -Protokoll hört, mit dem Verbindungsanforderungen von mehreren Clients gleichzeitig verarbeitet werden können.
2. Starten Sie den Server
Öffnen Sie das Terminal, wechseln Sie in das Verzeichnis, in dem sich
server.php
befindet, und führen Sie den folgenden Befehl aus:
PHP Server.php
Wenn die Konfiguration korrekt ist, sehen Sie die folgende Ausgabe, um anzuzeigen, dass der Server gestartet wurde:
--------------------------------
Workerman anfangen ...
--------------------------------
Workerman begann ...
Unity3d Client -Implementierung
1. Erstellen Sie ein neues Einheitsprojekt
Erstellen Sie ein neues Projekt in Einheit und importieren Sie das Socketio -Plugin, das WebSocket -Kommunikation für die Verbindung zu PHP -Servern unterstützt.
2. Schreiben Sie Client -Skripte
Erstellen Sie ein Skript mit dem Namen
SocketClient.cs
in Unity mit dem folgenden Skriptinhalt:
mit UnityEngine;
mit Socketio;
öffentliche Klasse SocketClient: Monobehaviour
{
private Socketiocomponent Sockel;
private void start ()
{
Socket = GetComponent <SocketioComponent> ();
// Nachrichten aus dem Server -Socket anhören.on ("Nachricht", OnMessage);
// eine Verbindungs -Socket erstellen.Connect ();
// Senden Sie eine Nachricht an den Server -Socket.emit ("Nachricht", "Hallo, Server!").
}
Private Leere OnMessage (SocketioEvent E)
{
// Ausgabe des Nachrichten debug.log (e.data.toString ());
}
}
Das Skript implementiert den Messaging -Prozess zwischen dem Client und dem Server und stellt eine Verbindung zum Server her und gibt den Rückgabeinhalt aus, wenn die Einheit startet.
Testkommunikation
1. Erstellen Sie ein Projekt
Vervollständigen Sie den Projektbau in Einheit und stellen Sie sicher, dass das Socketio -Plugin korrekt eingeführt wird.
2. Starten Sie den Kunden
Führen Sie den Unity -Client aus und Sie sehen die folgende Ausgabe in der Konsole:
Hallo Unity3d!
Dies weist darauf hin, dass die WebSocket-Verbindung zwischen dem Unity-Client und dem PHP-Server erfolgreich hergestellt wurde und die Zwei-Wege-Kommunikation abgeschlossen hat.
Abschluss
Durch die Demonstration dieses Artikels verstehen wir, wie Sie einen stabilen und effizienten PHP-Backend-Server basierend auf Workerman erstellen und in Echtzeitdaten mit Unity3D-Clients kommunizieren. Diese verteilte Architektur verbessert nicht nur die gleichzeitigen Verarbeitungsfähigkeiten, sondern verbessert auch die Skalierbarkeit von Spieldiensten. Geeignet für Entwicklungsszenarien wie Echtzeit-Online-Spiele, interaktive Multi-Player-Plattformen usw.