Position actuelle: Accueil> Derniers articles> PHP et Unity3d: Utilisation de Workerman pour construire un système de communication réseau haute performance

PHP et Unity3d: Utilisation de Workerman pour construire un système de communication réseau haute performance

M66 2025-06-24

Contexte de PHP et Unity3d

PHP est souvent utilisé pour le développement du serveur, tandis que Unity3d est le moteur pour construire des jeux multiplateformes et des expériences interactives. Bien que ces deux piles technologiques soient complètement différentes, la combinaison des deux peut libérer un grand potentiel dans le développement réel, en particulier dans les jeux multijoueurs et les systèmes interactifs en temps réel.

Introduction à Workerman

Workerman est un cadre de communication de réseau asynchrone haute performance développé par Pure PHP. Il prend en charge plusieurs protocoles (tels que TCP, UDP, WebSocket) et a de bonnes capacités de traitement de concurrence. Avec Workerman, les développeurs peuvent facilement créer des services de réseau stables et efficaces, en particulier adaptés aux scénarios d'application qui nécessitent une interaction en temps réel.

Comment installer Workerman

Vous pouvez télécharger le code source à partir du site officiel de Workerman et l'installer manuellement, ou vous pouvez l'installer via Composer:

 composer require workerman/workerman

Côté PHP: Exemple de service TCP basé sur Workerman

Du côté du serveur, nous pouvons utiliser Workerman pour créer un service TCP pour communiquer avec le client Unity3D. Voici une implémentation de base du serveur Echo:

<?php
require_once 'Workerman/Autoloader.php';

use Workerman\Worker;

$worker = new Worker("tcp://0.0.0.0:1234");

$worker-> onConnect = function ($ connection) {
    Echo "Nouvelle connexion \ n";
};

$ worker-> onMessage = function ($ connection, $ data) {
    $ connection-> send ($ data);
};

$ worker-> onclose = function ($ connection) {
    Echo "Connexion fermée \ n";
};

Travailleur :: runall ();
?>

Client Unity3d: C # Connecter et envoyer des messages

Du côté Unity3d, vous pouvez établir une connexion TCP avec le serveur via des scripts C # et envoyer des messages:

Utilisation d&#39;unityEngine;
Utilisation de System.net.Sockets;
Utilisation de System.Text;

Client de classe publique: Monobehaviour
{
    Client privé TCPClient;
    Stream de réseaux privés;

    void start ()
    {
        client = new tcpClient ("localhost", 1234);
        Stream = client.getStream ();
        SendMessage ("Hello, World!");
    }

    void sendMessage (message de chaîne)
    {
        octet [] data = coding.ascii.getBytes (message);
        Stream.Write (Data, 0, Data.Length);
    }

    void ondestroy ()
    {
        Stream.Close ();
        client.close ();
    }
}

Analyse du processus de communication

Comme on peut le voir à partir de l'exemple de code, Unity3d est connecté au backend PHP via TCPClient , et après avoir envoyé le message, il le renvoie tel qu'il est par le serveur, réalisant le mécanisme d'écho de message de base. Cela fournit la base des extensions ultérieures telles que l'authentification des utilisateurs, la synchronisation des données, les notifications en temps réel, etc.

Extension pratique des applications

Bien que cet exemple soit simple, il révèle l'idée principale de communication entre Unity3d et le serveur PHP. En étendant la couche logique de Workerman, vous pouvez implémenter les fonctions suivantes:

  • Logique de bataille en temps réel pour les joueurs

  • Salon de chat multiple

  • Diffusion de données en temps réel

  • Poussez les événements sur le serveur vers le client

Résumer

En utilisant PHP avec Unity3d et avec les capacités de traitement asynchrones élevées de Workerman, les développeurs peuvent créer des systèmes de communication de réseau multiplateforme efficaces et réels efficaces. Cette solution convient particulièrement aux jeux de jeux, d'interaction en temps réel et de scénarios de collaboration multi-utilisateurs, fournissant une prise en charge architecturale flexible et évolutive pour le développement du serveur.