Position actuelle: Accueil> Derniers articles> Comment implémenter un serveur de jeu distribué avec PHP et Unity3d à l'aide de Workerman

Comment implémenter un serveur de jeu distribué avec PHP et Unity3d à l'aide de Workerman

M66 2025-06-03

introduction

Alors que les jeux en ligne continuent d'améliorer leur vitesse de réponse et leurs exigences de stabilité, l'architecture du serveur distribué est progressivement devenue la solution grand public. Cet article introduira en détail comment utiliser le langage PHP pour coopérer avec Workerman Framework pour mettre en œuvre des solutions de communication avec Unity3D pour améliorer de manière approfondie les capacités de performance et de concurrence du système de jeu.

Qu'est-ce que Workerman?

Workerman est un cadre de socket PHP à haute performance basé sur des événements conçu pour le développement de programmes de services réseau qui prennent en charge une grande concurrence. En raison de ses fonctionnalités d'IO légères et non bloquantes, il est largement utilisé dans des domaines tels que la communication instantanée, l'Internet des objets et les serveurs de jeux.

Préparation environnementale

Avant de développer un serveur de jeu distribué, vous devez préparer l'environnement de base suivant:
  1. L'environnement de course PHP garantit que les scripts PHP peuvent être exécutés.
  2. Installer Workerman Framework à l'aide de Composer: composer require workerman/workerman
  3. Configurez l'environnement de développement Unity3D et la version recommandée est plus récente.

Créer un serveur

1. Créez un script de serveur PHP

Créez d'abord un nouveau fichier de script nommé server.php et écrivez ce qui suit:
<?php
require_once __DIR__ . '/vendor/autoload.php';

use Workerman\Worker;

// Créer unWorkermoniteur2345port,utiliserwebsocketprotocole
$worker = new Worker('websocket://0.0.0.0:2345');

// démarrer4Services fournis par chaque processus
$worker-> count = 4;

// rappel après avoir reçu le message $ worker-> onMessage = function ($ connection, $ data) {
    // Traitez les données du client reçu // Répondre au client $ connection-> Send (&#39;Hello, Unity3d!&#39;);
};

// Démarrer le travailleur
Travailleur :: runall ();
?>

Le code ci-dessus crée un serveur qui écoute le protocole WebSocket, qui peut gérer les demandes de connexion de plusieurs clients en même temps.

2. Démarrez le serveur

Ouvrez le terminal, passez au répertoire où se trouve server.php et exécutez la commande suivante:
php server.php

Si la configuration est correcte, vous verrez la sortie suivante, indiquant que le serveur a été démarré:

--------------------------------
Workerman commence ...
--------------------------------
Workerman a commencé ...

Implémentation du client Unity3d

1. Créez un nouveau projet d'unité

Créez un nouveau projet dans Unity et importez le plugin SockEtio qui prend en charge la communication WebSocket pour se connecter aux serveurs PHP.

2. Écrivez des scripts clients

Créez un script nommé SocketClient.cs dans Unity, avec le contenu du script suivant:
Utilisation d&#39;unityEngine;
Utilisation de sockettio;

SocketClient de classe publique: monobehaviour
{
    socket privé socketocomponent socket;

    private void start ()
    {
        socket = getComponent <SockeTioComponent> ();

        // Écoutez les messages du serveur socket.on ("message", OnMessage);

        // Créer un socket de connexion.Connect ();

        // Envoyez un message au serveur socket.emit ("message", "Bonjour, serveur!");
    }

    vide privé (socketoevent e)
    {
        // Sortie du message Debug.log (e.data.toString ());
    }
}

Le script implémente le processus de messagerie entre le client et le serveur, et se connecte au serveur et publie le contenu de retour lorsque Unity démarre.

Test de communication

1. Construisez un projet

Terminez la construction du projet dans Unity et assurez-vous que le plugin Socketio est introduit correctement.

2. Démarrez le client

Exécutez le client Unity et vous verrez la sortie suivante dans la console:
Bonjour, Unity3d!

Cela indique que la connexion WebSocket a été établie avec succès entre le client Unity et le serveur PHP et a terminé la communication bidirectionnelle.

Conclusion

Grâce à la démonstration de cet article, nous comprenons comment construire un serveur de backend PHP stable et efficace basé sur Workerman et communiquer dans des données en temps réel avec les clients Unity3D. Cette architecture distribuée améliore non seulement les capacités de traitement simultanées, mais améliore également l'évolutivité des services de jeu. Convient aux scénarios de développement tels que les jeux en ligne en temps réel, les plateformes interactives multi-joueurs, etc.