現在の位置: ホーム> 最新記事一覧> Workermanを使用してPHPとUnity3Dを使用して分散ゲーミングサーバーを実装する方法

Workermanを使用してPHPとUnity3Dを使用して分散ゲーミングサーバーを実装する方法

M66 2025-06-03

導入

オンラインゲームが応答速度と安定性の要件を改善し続けるにつれて、分散サーバーアーキテクチャは徐々に主流のソリューションになりました。この記事では、PHP言語を使用してWorkerman Frameworkと協力してUnity3Dを使用してコミュニケーションソリューションを実装し、ゲームシステムのパフォーマンスと並行性機能を包括的に改善する方法を詳細に紹介します。

Workermanとは何ですか?

Workermanは、高い並行性をサポートするネットワークサービスプログラムの開発のために設計されたイベント駆動型の高性能PHPソケットフレームワークです。軽量のブロッキングIO、クロスプラットフォーム機能により、インスタント通信、モノのインターネット、ゲームサーバーなどのフィールドで広く使用されています。

環境の準備

分散型ゲームサーバーを開発する前に、次の基本環境を準備する必要があります。
  1. PHPランニング環境により、PHPスクリプトを実行できるようになります。
  2. Composer: composer require workerman/workermanを使用してWorkermanフレームワークをインストールします
  3. Unity3D開発環境を構成すると、推奨バージョンはより新しいものです。

サーバーを構築します

1. PHPサーバースクリプトを作成します

まず、 server.phpという名前の新しいスクリプトファイルを作成し、次のことを書きます。
<?php
require_once __DIR__ . '/vendor/autoload.php';

use Workerman\Worker;

// aを作成しますWorkerモニター2345ポート,使用websocketプロトコル
$worker = new Worker('websocket://0.0.0.0:2345');

// 起動する4各プロセスが提供するサービス
$worker-> count = 4;

//メッセージを受信した戻るのコールバック$ worker-> onmessage = function($ connection、$ data){
    //受信したクライアントデータを処理//クライアントへの返信$ connection-> send( &#39;hello、unity3d!&#39;);
};

//ワーカーを始まりめるします
労働者:: ranall();
?>

上記のコードは、複数のクライアントからの接続要求を同時に処理できるWebsocketプロトコルを聴くサーバーを作成します。

2。サーバーを起動します

端子を開き、 server.phpが配置されているディレクトリに切り替えて、次のコマンドを実行します。
php server.php

構成が正しい場合、次の出力が表示され、サーバーが開始されたことを示します。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  - 
ワークマンは始まりまります...
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  - 
Workermanが始まりまった...

Unity3Dクライアントの実装

1.新しいUnityプロジェクトを作成します

Unityで新しいプロジェクトを作成し、PHPサーバーに接続するためのWebsocket通信をサポートするSocketioプラグインをインポートします。

2。クライアントスクリプトを書きます

次のスクリプトコンテンツを使用して、UnityでSocketClient.csという名前のスクリプトを作成します。
UnityEngineの使用。
Socketioを使用。

パブリッククラスSocketClient:Monobehaviour
{
    プライベートソケットコンポーネントソケット。

    プライベートボイドスタート()
    {
        socket = getComponent <SocketioComponent>();

        //サーバーSocket.on( "Message"、onmessage)からメッセージを匂いく;

        //接続socket.connect();

        // server socket.emit( "message"、 "hello、server!")にメッセージを送信します。
    }

    プライベートボイドオンメサージ(SocketioEvent E)
    {
        //メッセージdebug.log(e.data.tostring())を出力します。
    }
}

スクリプトは、クライアントとサーバー間のメッセージングプロセスを実装し、サーバーに接続し、Unityが起動するときに戻りコンテンツを出力します。

テスト通信

1.プロジェクトを構築します

Project Build in Unityを完了し、Socketioプラグインが正しく導入されていることを確認してください。

2。クライアントを起動します

Unityクライアントを実行すると、コンソールに次の出力が表示されます。
こんにちは、Unity3D!

これは、WebSocket ConnectionがUnityクライアントとPHPサーバーの間で正常に確立され、双方向通信が完了したことを示しています。

結論

この記事のデモンストレーションを通じて、Workermanに基づいて安定した効率的なPHPバックエンドサーバーを構築し、Unity3Dクライアントとリアルタイムデータで通信する方法を理解しています。この分散アーキテクチャは、同時処理機能を改善するだけでなく、ゲームサービスのスケーラビリティも向上させます。リアルタイムオンラインゲーム、マルチプレイヤーインタラクティブプラットフォームなどの開発シナリオに適しています。