လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP နှင့် Unity3D ကိုမည်သို့အသုံးပြုရမည်နည်းအား Real-Time Battle Game ကိုတည်ဆောက်ရန်အလုပ်ရှင်နှင့်ပေါင်းစပ်ပါ

PHP နှင့် Unity3D ကိုမည်သို့အသုံးပြုရမည်နည်းအား Real-Time Battle Game ကိုတည်ဆောက်ရန်အလုပ်ရှင်နှင့်ပေါင်းစပ်ပါ

M66 2025-06-20

PHP နှင့် Unity3D ကိုမည်သို့အသုံးပြုရမည်နည်းအား Real-Time Battle Game ကိုတည်ဆောက်ရန်အလုပ်ရှင်နှင့်ပေါင်းစပ်ပါ

Network Technology ၏စဉ်ဆက်မပြတ်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်အတူ Real-Time Battle Games သည်ကစားသမားများစွာ၏အကြိုက်ဆုံးဂိမ်းအမျိုးအစားဖြစ်လာသည်။ အစွမ်းထက်သော side side scripting language တစ်ခုအနေဖြင့် PHP သည် Retury3D ကဲ့သို့သော Cross-platform ဂိမ်းအင်ဂျင်များနှင့်ကစားရန်အချိန်ကောင်းစစ်တိုက်ဂိမ်းကစားနည်းများကိုဖန်တီးရန်ပေါင်းစပ်ထားသည်။ ဤဆောင်းပါးသည် Real-Time Battle ဂိမ်းတစ်ခုတည်ဆောက်ရန်အတွက်အချိန်နှင့်တပြေးညီကစားနည်းများအကြားအချိန်မီဆက်သွယ်မှုနှင့်အပြန်အလှန်ဆက်သွယ်မှုကိုကြည့်ရှုရန် PHP ရှိ Workerman စာကြည့်တိုက်ကို PHP တွင်မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ Workerman ကိုထည့်သွင်းပါ

ပထမ ဦး စွာကျွန်ုပ်တို့သည် Workerman စာကြည့်တိုက်ကို install လုပ်ရန်လိုအပ်သည်။ Workerman ကို install လုပ်ရန် command line မှအောက်ပါ command ကို run ပါ။

 composer require workerman/workerman

2 ။ server-side ကုဒ်ရေးပါ

ဂိမ်း၏ဆာဗာဘက်ကိုအကောင်အထည်ဖော်ရန်တာ 0 န်ယူသည့်ဆာဗာအမည်ရှိ PHP ဖိုင်ကိုဖန်တီးပါ။ ပထမ ဦး စွာအလုပ်ရှင်၏အလိုအလျောက်တင်ထားသောဖိုင်ကိုမိတ်ဆက်ပေးပါ။

 
require_once __DIR__ . '/vendor/autoload.php';

ထို့နောက်ဝက်ဘ်ဆိုက်ဝက်ဘ်ဆိုဒ်တစ်ခုတည်ဆောက်ပြီး port 2345 ကိုနားထောင်ပါ။

 
use Workerman\Worker;

$ws_worker = new Worker("websocket://0.0.0.0:2345");
$ws_worker->count = 4;

$ws_worker->onMessage = function($connection, $data) {
    // ကစားသမားများကပေးပို့သောမက်ဆေ့ခ်ျများ
    // ...
};

Worker::runAll();

ဤကုဒ်တွင် WebSoet protocol ကိုနားထောင်ခြင်းနှင့်ဆိပ်ကမ်း 2345 ကို Binding လုပ်သည့်အလုပ်သမားဥပမာတစ်ခုဖန်တီးသည်။ တစ်ချိန်တည်းမှာပင်အလုပ်သမားလုပ်ငန်းစဉ်နံပါတ်ကို 4 မှ 4 နှင့် player ၏မက်ဆေ့ခ်ျများကိုတင်ပါ။

3 ။ client ကိုကုဒ်ရေးပါ

UNITY3D တွင်မြင်ကွင်းတစ်ခုကို ဖန်တီး. Cube အရာဝတ်ထုတစ်ခုကိုထည့်ပါ။ ထို့နောက် C # script ဟုခေါ်သော C # script ကိုဖန်တီးပါ။ server ထဲရှိဆာဗာဘေးတွင်ဆက်သွယ်ရေးယုတ္တိဗေဒကိုအကောင်အထည်ဖော်ပါ။

 
using UnityEngine;
using WebSocketSharp;

public class GameClient : MonoBehaviour
{
    private WebSocket webSocket;

    private void Start()
    {
        webSocket = new WebSocket("ws://localhost:2345");
        webSocket.OnMessage += OnMessageReceived;
        webSocket.Connect();
    }

    private void OnDestroy()
    {
        webSocket.Close();
    }

    private void OnMessageReceived(object sender, MessageEventArgs e)
    {
        // လက်ခံရရှိမက်ဆေ့ခ်ျကို process
        // ...
    }

    private void Update()
    {
        // ဆာဗာသို့စာတစ်စောင်ပို့ပါ
        // ...
    }
}

ဤကုဒ်တွင်ဆာဗာလိပ်စာနှင့် port ကိုသတ်မှတ်သည့် websocket ဥပမာတစ်ခုဖန်တီးသည်။ လက်ခံရရှိသည့်မက်ဆေ့ခ်ျကို onmessage event callback function ကိုချည်နှောင်ခြင်းအားဖြင့်ပြုလုပ်ထားပြီး,

4 ။ Multiplayer Battle Logic အကောင်အထည်ဖော်ပါ

ဆာဗာဘေးထွက်ကုဒ်တွင်ကစားသမားတစ် ဦး စီကိုကစားသမားတစ် ဦး ချင်းစီအတွက်ထူးခြားသောအမှတ်အသားတစ်ခုသတ်မှတ်နိုင်သည်။ 0 န်ဆောင်မှုခံယူသူကုဒ်တွင်ဆာဗာသည်ကစားသမားကိုခွဲခြားသတ်မှတ်နိုင်ရန်မက်ဆေ့ခ်ျပို့သောအခါအမှတ်အသားကိုသယ်ဆောင်သည်။

ဆာဗာ - ဘေးထွက်ကုဒ်ဥပမာ:

 
$ws_worker->onMessage = function($connection, $data) {
    $clientId = $connection->id;
    // ကစားသမားများကပေးပို့သောမက်ဆေ့ခ်ျများ
    // ...
};

client code support:

 
private void Update()
{
    // ဆာဗာသို့စာတစ်စောင်ပို့ပါ
    webSocket.Send("Player: " + playerId + " message");
}

အထက်ပါကုဒ်များမှတစ်ဆင့်ကျွန်ုပ်တို့သည်ကစားသမားမျိုးစုံအကြားအချိန်နှင့်တပြေးညီဆက်သွယ်မှုကိုနားလည်ပြီးရိုးရိုးအချိန်နှင့်အမျှစစ်တိုက်ပွဲဖြစ်ပွားသည့်ပွဲတစ်ပွဲကိုတည်ဆောက်ကြသည်။

အကျဉ်းချုပ်

ဤဆောင်းပါးသည် Workerman စာကြည့်တိုက်ကို PHP တွင်မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးသည်။ PHP နှင့် Unity3D ပေါင်းစပ်ခြင်းအားဖြင့်ကစားသမားများစွာအကြားအချိန်နှင့်တပြေးညီဆက်သွယ်ရေးနှင့်အပြန်အလှန်ဆက်သွယ်မှုကိုကျွန်ုပ်တို့နားလည်သဘောပေါက်နိုင်ပြီးကစားသမားများကိုအားကစားသမားများကြုံတွေ့နေရသည်။ ဟုတ်ပါတယ်, အထက်ပါကုဒ်သည်ရိုးရှင်းသောဆန္ဒပြပွဲတစ်ခုသာဖြစ်ပြီးအမှန်တကယ်ဂိမ်းဖွံ့ဖြိုးတိုးတက်မှုအတွက်လိုအပ်ချက်များနှင့်အညီတိုးချဲ့ရန်နှင့်အလွယ်တကူအလွယ်တကူပြုလုပ်ရန်လိုအပ်သည်။