Aktueller Standort: Startseite> Neueste Artikel> So implementieren Sie einen verteilten Gaming -Server mit PHP und Unity3D mit Workerman

So implementieren Sie einen verteilten Gaming -Server mit PHP und Unity3D mit Workerman

M66 2025-06-03

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:
  1. PHP Ausführende Umgebung stellt sicher, dass PHP -Skripte ausgeführt werden können.
  2. Installieren Sie das Workerman Framework mit Composer: composer require workerman/workerman
  3. 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 (&#39;Hallo, unity3d!&#39;);
};

// 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.