Current Location: Home> Latest Articles> How to Use PHP and Unity3D with Workerman for Multiplayer Strategy Games

How to Use PHP and Unity3D with Workerman for Multiplayer Strategy Games

M66 2025-06-16

Setting Up the Workerman Server

In today's internet era, multiplayer strategy games have become a popular genre among gamers. The focus of this article is on how to use PHP and Unity3D, in combination with the Workerman framework, to create a real-time interactive multiplayer strategy game.

Workerman is a high-performance PHP socket framework that supports real-time communication for multiplayer interaction. The first step is to set up a Workerman server to handle player connections and real-time data exchange.

Code Example: Workerman Server-Side

<?php
require_once '/Workerman/Autoloader.php'; // Import Workerman's autoloader
use Workerman\Worker;

// Create a WebSocket Worker that listens on port 2345
$ws_worker = new Worker("websocket://0.0.0.0:2345");

// Set the number of processes
$ws_worker->count = 4;

// Send a connection ID when a client connects
$ws_worker->onConnect = function ($connection) {
    $connection->send(json_encode([
        'type' => 'connect',
        'id' => $connection->id
    ]));
};

// Broadcast messages to all connected clients when a message is received
$ws_worker->onMessage = function ($connection, $data) {
    foreach ($connection->worker->connections as $client_conn) {
        $client_conn->send($data);
    }
};

// Notify all clients when a client disconnects
$ws_worker->onClose = function ($connection) {
    foreach ($connection->worker->connections as $client_conn) {
        $client_conn->send(json_encode([
            'type' => 'disconnect',
            'id' => $connection->id
        ]));
    }
};

// Run the Worker processes
Worker::runAll();
?>

The above code creates a WebSocket server listening on port 2345. It includes functionality for sending connection IDs upon connection, forwarding messages to all clients, and broadcasting a disconnect message when a client disconnects.

Unity3D Client Connecting to the Server

Next, we will develop the game client using Unity3D, which communicates with the server using the WebSocket protocol.

Code Example: Unity3D Client Code

using UnityEngine;
using WebSocketSharp;

public class GameClient : MonoBehaviour
{
    private WebSocket webSocket;

    // Connect to the server
    void Start()
    {
        webSocket = new WebSocket("ws://127.0.0.1:2345"); // Replace with your server's IP and port
        webSocket.OnOpen += (sender, e) => {
            Debug.Log("Connected to server!");
        };
        webSocket.OnMessage += (sender, e) => {
            Debug.Log("Received message: " + e.Data);
        };
        webSocket.OnClose += (sender, e) => {
            Debug.Log("Disconnected from server!");
        };
        webSocket.Connect();
    }

    // Send messages to the server
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)) {
            webSocket.Send("Hello, server!");
        }
    }

    // Close the connection
    void OnDestroy()
    {
        webSocket.Close();
    }
}

The code above connects to a WebSocket server at the address 127.0.0.1, port 2345. It handles connection, message reception and sending, as well as connection closure with appropriate callback functions.

Building a Multiplayer Strategy Game

By combining PHP and Unity3D with Workerman, we can create a multiplayer interactive game system that supports real-time combat, chat, team building, and other game features. Developers can extend this framework to implement more complex game logic and functionality.

Conclusion

This article outlined how to use PHP and Unity3D with the Workerman framework to set up a multiplayer strategy game system. By implementing real-time communication between the server (via Workerman) and the client (via WebSocket), developers can create an interactive multiplayer game system. This approach provides a solid foundation for multiplayer game development and offers a starting point for developers to add more complex features to their games.