현재 위치: > 최신 기사 목록> Workerman을 사용하여 PHP 및 Unity3d를 사용하여 분산 게임 서버를 구현하는 방법

Workerman을 사용하여 PHP 및 Unity3d를 사용하여 분산 게임 서버를 구현하는 방법

M66 2025-06-03

소개

온라인 게임이 응답 속도 및 안정성 요구 사항을 계속 향상시킬 때 분산 서버 아키텍처는 점차 주류 솔루션이되었습니다. 이 기사는 PHP 언어를 사용하여 Workerman Framework와 협력하여 Unity3D와 통신 솔루션을 구현하여 게임 시스템의 성능 및 동시성 기능을 포괄적으로 개선하는 방법을 자세히 소개합니다.

노동자 란 무엇입니까?

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;

// aWorker감시 장치2345포트,사용websocket규약
$worker = new Worker('websocket://0.0.0.0:2345');

// 시작4각 프로세스에서 제공하는 서비스
$worker-> 카운트 = 4;

// 메시지를받은 후 콜백 $ worker-> onMessage = function ($ connection, $ data) {
    // 수신 된 클라이언트 데이터를 처리 // 클라이언트에 회신 $ connection-> send ( &#39;hello, unity3d!&#39;);
};

// 작업자를 시작합니다
작업자 :: runall ();
?>

위의 코드는 WebSocket 프로토콜을 듣는 서버를 생성하여 동시에 여러 클라이언트의 연결 요청을 처리 할 수 ​​있습니다.

2. 서버를 시작하십시오

터미널을 열고 server.php 있는 디렉토리로 전환하고 다음 명령을 실행하십시오.
PHP Server.php

구성이 올바른 경우 서버가 시작되었음을 나타내는 다음 출력이 표시됩니다.

--------------------------------------------------------------------------------------------------------------------------------
직원 시작 ...
--------------------------------------------------------------------------------------------------------------------------------
노동자가 시작했습니다 ...

Unity3d 클라이언트 구현

1. 새로운 Unity 프로젝트를 만듭니다

Unity에서 새 프로젝트를 만들고 PHP 서버에 연결하기위한 WebSocket 통신을 지원하는 Socketio 플러그인을 가져옵니다.

2. 클라이언트 스크립트를 작성하십시오

다음 스크립트 내용으로 SocketClient.cs 에서 Unity라는 스크립트를 만듭니다.
UnityEngine 사용;
Socketio 사용;

공개 클래스 소켓 클리어 : Monobehaviour
{
    개인 소켓 성분 소켓;

    개인 void start ()
    {
        소켓 = getComponent <Socketiocomponent> ();

        // 서버 소켓에서 메시지를 듣습니다 ( "메시지", onMessage);

        // 연결 socket.connect ()를 만듭니다.

        // 서버 socket.emit ( "메시지", "hello, server!")에 메시지를 보냅니다.
    }

    개인 void OnMessage (Socketioevent e)
    {
        // 메시지 debug.log (e.data.toString ())을 출력합니다.
    }
}

스크립트는 클라이언트와 서버 간의 메시징 프로세스를 구현하고 서버에 연결하고 Unity가 시작될 때 리턴 컨텐츠를 출력합니다.

테스트 커뮤니케이션

1. 프로젝트 구축

Unity에서 프로젝트 빌드를 완료하고 Socketio 플러그인이 올바르게 소개되었는지 확인하십시오.

2. 클라이언트를 시작하십시오

Unity 클라이언트를 실행하면 콘솔에서 다음 출력이 표시됩니다.
안녕하세요, Unity3d!

이는 Unity Client와 PHP 서버간에 WebSocket 연결이 성공적으로 설정되었으며 양방향 통신을 완료했음을 나타냅니다.

결론

이 기사의 데모를 통해 Workerman을 기반으로 안정적이고 효율적인 PHP 백엔드 서버를 구축하고 Unity3D 클라이언트와 실시간 데이터로 통신하는 방법을 이해합니다. 이 분산 아키텍처는 동시 처리 기능을 향상시킬뿐만 아니라 게임 서비스의 확장 성을 향상시킵니다. 실시간 온라인 게임, 멀티 플레이어 대화식 플랫폼 등과 같은 개발 시나리오에 적합합니다.