


Cara menggunakan Workerman untuk melaksanakan permainan teka-teki dalam talian berbilang pemain dengan PHP dan Unity3D
Cara menggunakan Workerman untuk melaksanakan permainan teka-teki jigsaw dalam talian berbilang pemain dalam PHP dan Unity3D
Ikhtisar:
Permainan dalam talian berbilang pemain sentiasa menjadi topik hangat dalam bidang pembangunan permainan, dan teka-teki jigsaw, sebagai permainan kasual yang ringkas dan menarik, juga dimainkan dalam talian Sangat popular di China. Artikel ini akan memperkenalkan cara menggunakan Workerman untuk membina pelayan, dan menggunakan PHP dan Unity3D untuk membangunkan permainan teka-teki dalam talian berbilang pemain mudah untuk mencapai interaksi permainan masa nyata.
- Bina pelayan
Pertama, kita perlu membina pelayan untuk menyediakan perkhidmatan rangkaian. Workerman ialah rangka kerja pelayan Soket PHP yang mudah dan cekap, yang sangat sesuai untuk membina aplikasi rangkaian dengan keperluan masa nyata yang tinggi. Kami boleh memasang Workerman melalui Komposer:
composer require workerman/workerman
Seterusnya, kami mencipta pelayan fail PHP sebelah pelayan.php, memulakan Workerman di dalamnya dan mencipta objek Worker:
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; // 创建一个Worker监听8080端口 $worker = new Worker('websocket://0.0.0.0:8080'); // 设置监听的连接数 $worker->count = 4; // 当收到客户端发来的数据时 $worker->onMessage = function ($connection, $data) { // 处理接收到的数据 // ... }; // 运行Worker Worker::runAll();
Dalam kod di atas, kami mencipta objek Worker, dan tetapkan alamat pendengarannya ke port 8080 localhost, menunjukkan bahawa pelayan akan mendengar dan menyediakan perkhidmatan pada port ini. Pada masa yang sama, kami juga menetapkan bilangan proses Pekerja kepada 4 supaya pelayan boleh mengendalikan berbilang permintaan pelanggan secara selari. Dalam fungsi onMessage, kami boleh memproses data yang dihantar oleh pelanggan dan mengembalikan hasil yang sepadan.
- Pembangunan pelanggan Unity3D
Seterusnya, kami menggunakan Unity3D untuk membangunkan bahagian pelanggan. Mula-mula kita perlu menambah pemalam WebSocketSharp untuk berkomunikasi dengan pelayan. Buka Unity3D's Asset Store, cari WebSocketSharp dan muat turun dan pasangnya.
Dalam Unity3D, kami mencipta adegan baharu dan menambah GameObject kosong sebagai bekas untuk skrip kawalan logik utama. Kemudian, kami menambah kod skrip kawalan logik utama pada GameObject ini.
using UnityEngine; using WebSocketSharp; public class PuzzleGameClient : MonoBehaviour { private WebSocket ws; private void Start() { // 连接到服务器 ws = new WebSocket("ws://localhost:8080"); ws.OnOpen += OnOpen; ws.OnMessage += OnMessage; ws.OnClose += OnClose; ws.OnError += OnError; ws.Connect(); } private void OnOpen(object sender, System.EventArgs e) { Debug.Log("Connected to server"); } private void OnMessage(object sender, MessageEventArgs e) { Debug.Log("Received message from server: " + e.Data); // 处理接收到的数据 // ... } private void OnClose(object sender, CloseEventArgs e) { Debug.Log("Disconnected from server"); } private void OnError(object sender, ErrorEventArgs e) { Debug.Log("Error: " + e.Message); } private void OnDestroy() { // 断开与服务器的连接 ws.Close(); } }
Dalam kod di atas, kami mencipta objek WebSocket dalam fungsi Mula skrip dan menetapkan alamat sambungan ke alamat dan port pelayan. Apabila sambungan dibuka, mesej diterima, sambungan ditutup, ralat berlaku, dsb., kita boleh memproses logik yang sepadan dalam fungsi panggil balik yang sepadan.
- Melaksanakan logik teka-teki jigsaw
Kini, kita boleh mula melaksanakan logik teka-teki jigsaw. Apabila pelayan menerima data yang dihantar oleh pelanggan, ia boleh menghuraikan data dan melaksanakan operasi permainan yang sepadan mengikut arahan yang berbeza. Kami menganggap bahawa format data yang dihantar oleh pelanggan ialah JSON.
Di bahagian pelayan, kami boleh mengubah suai fungsi onMessage pada fail server.php untuk memproses data yang diterima seperti berikut:
$worker->onMessage = function ($connection, $data) { // 将JSON数据解析为关联数组 $json = json_decode($data, true); // 根据不同的指令进行相应的处理 switch ($json['command']) { case 'move': // 执行移动操作 // ... break; case 'finish': // 完成拼图 // ... break; // ... } // 发送结果给客户端 $result = ['status' => 'success']; $connection->send(json_encode($result)); };
Di sisi klien, kami boleh menghuraikan data JSON dalam kaedah OnMessage yang memproses yang diterima mesej , dan lakukan operasi permainan yang sepadan, seperti yang ditunjukkan di bawah:
private void OnMessage(object sender, MessageEventArgs e) { Debug.Log("Received message from server: " + e.Data); var json = JsonUtility.FromJson<GameMessage>(e.Data); // 根据不同的指令进行相应的处理 switch (json.command) { case "move": // 执行移动操作 // ... break; case "finish": // 完成拼图 // ... break; // ... } // 发送结果给服务器 var result = new GameResult { status = "success" }; ws.Send(JsonUtility.ToJson(result)); }
Dalam kod di atas, kami menghuraikan data JSON yang diterima ke dalam objek GameMessage dan melaksanakan logik pemprosesan yang sepadan mengikut arahan yang berbeza. Akhir sekali, kami merangkum hasil pemprosesan ke dalam objek GameResult dan menghantarnya ke pelayan.
Selepas melengkapkan langkah di atas, kami boleh menjalankan permainan dalam editor Unity. Apabila berbilang pelanggan disambungkan ke pelayan, mereka boleh bermain teka-teki secara serentak dan berinteraksi dalam masa nyata.
Ringkasan:
Artikel ini memperkenalkan cara menggunakan Workerman untuk membina pelayan PHP dan menggunakan Unity3D untuk membangunkan permainan teka-teki dalam talian berbilang pemain. Kami melaksanakan komunikasi antara pelanggan dan pelayan melalui pemalam WebSocket, dan melaksanakan interaksi logik permainan melalui pertukaran data JSON. Jika anda berminat dengan pembangunan permainan dalam talian berbilang pemain, anda boleh berlatih mengikut kandungan di atas dan seterusnya mengembangkan dan mengoptimumkan projek.
Atas ialah kandungan terperinci Cara menggunakan Workerman untuk melaksanakan permainan teka-teki dalam talian berbilang pemain dengan PHP dan Unity3D. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Dalam PHP, anda boleh menggunakan fungsi session_name () untuk mengkonfigurasi nama sesi. Langkah -langkah tertentu adalah seperti berikut: 1. Gunakan fungsi session_name () untuk menetapkan nama sesi, seperti session_name ("my_session"). 2. Selepas menetapkan nama sesi, hubungi session_start () untuk memulakan sesi. Mengkonfigurasi nama sesi boleh mengelakkan konflik data sesi antara pelbagai aplikasi dan meningkatkan keselamatan, tetapi memberi perhatian kepada keunikan, keselamatan, panjang dan penetapan masa sesi.

ID sesi hendaklah dijadikan semula secara teratur pada log masuk, sebelum operasi sensitif, dan setiap 30 minit. 1. Meningkatkan semula ID Sesi semasa log masuk untuk mengelakkan serangan tetap sesi. 2. Regenerate sebelum operasi sensitif untuk meningkatkan keselamatan. 3. Penjanaan semula secara berkala mengurangkan risiko penggunaan jangka panjang, tetapi pengalaman pengguna perlu ditimbang.

Menetapkan Parameter Cookie Sesi di PHP boleh dicapai melalui fungsi session_set_cookie_params (). 1) Gunakan fungsi ini untuk menetapkan parameter, seperti masa tamat, laluan, nama domain, bendera keselamatan, dan lain -lain; 2) hubungi session_start () untuk membuat parameter berkuatkuasa; 3) menyesuaikan parameter secara dinamik mengikut keperluan, seperti status log masuk pengguna; 4) Perhatikan untuk menetapkan bendera selamat dan httponly untuk meningkatkan keselamatan.

Tujuan utama menggunakan sesi dalam PHP adalah untuk mengekalkan status pengguna antara halaman yang berbeza. 1) Sesi dimulakan melalui fungsi session_start (), mewujudkan ID sesi yang unik dan menyimpannya dalam cookie pengguna. 2) Data sesi disimpan di pelayan, yang membolehkan data diluluskan antara permintaan yang berbeza, seperti status log masuk dan kandungan keranjang belanja.

Bagaimana untuk berkongsi sesi antara subdomain? Dilaksanakan dengan menetapkan kuki sesi untuk nama domain biasa. 1. Tetapkan domain cookie sesi ke .example.com di sebelah pelayan. 2. Pilih kaedah penyimpanan sesi yang sesuai, seperti memori, pangkalan data atau cache yang diedarkan. 3. Lulus ID Sesi melalui kuki, dan pelayan mengambil semula dan mengemas kini data sesi berdasarkan ID.

HTTPS dengan ketara meningkatkan keselamatan sesi dengan menyulitkan penghantaran data, mencegah serangan lelaki-dalam-tengah dan memberikan pengesahan. 1) Penghantaran data yang disulitkan: HTTPS menggunakan protokol SSL/TLS untuk menyulitkan data untuk memastikan data tidak dicuri atau diganggu semasa penghantaran. 2) Mencegah serangan lelaki-dalam-pertengahan: Melalui proses jabat tangan SSL/TLS, klien mengesahkan sijil pelayan untuk memastikan legitimasi sambungan. 3) Menyediakan Pengesahan: HTTPS memastikan bahawa sambungan adalah pelayan yang sah dan melindungi integriti data dan kerahsiaan.

Apa yang masih popular adalah kemudahan penggunaan, fleksibiliti dan ekosistem yang kuat. 1) Kemudahan penggunaan dan sintaks mudah menjadikannya pilihan pertama untuk pemula. 2) Bersepadu dengan pembangunan web, interaksi yang sangat baik dengan permintaan HTTP dan pangkalan data. 3) Ekosistem yang besar menyediakan banyak alat dan perpustakaan. 4) Komuniti aktif dan Sumber Sumber Terbuka menyesuaikan mereka dengan keperluan baru dan trend teknologi.

PHP dan Python adalah kedua-dua bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas dalam pembangunan web, pemprosesan data dan tugas automasi. 1.Php sering digunakan untuk membina laman web dinamik dan sistem pengurusan kandungan, sementara Python sering digunakan untuk membina kerangka web dan sains data. 2.Php Menggunakan Echo ke Kandungan Output, Python Menggunakan Cetakan. 3. Kedua-dua sokongan pengaturcaraan berorientasikan objek, tetapi sintaks dan kata kunci adalah berbeza. 4. PHP menyokong penukaran jenis lemah, manakala Python lebih ketat. 5. Pengoptimuman Prestasi PHP termasuk menggunakan OPCACHE dan pengaturcaraan asynchronous, manakala Python menggunakan pengaturcaraan CProfile dan tak segerak.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Dreamweaver CS6
Alat pembangunan web visual