สร้างโลกของคุณเอง
มัลติเพลย์
13 นาที
zepeto multiplay เป็นโมดูลที่อนุญาตให้ผู้ใช้หลายคนเชื่อมต่อและเล่นโลกพร้อมกันได้ มันให้การพัฒนาเซิร์ฟเวอร์/ไคลเอนต์และสภาพแวดล้อมการทดสอบในท้องถิ่น 📘 ตัวอย่างโลก multiplay อย่างเป็นทางการ github https //github com/naverz/zepeto multiplay example https //github com/naverz/zepeto multiplay example บทเรียน บทเรียนการเล่นหลายคน docid\ bfzi crxt7x2ujbo1znog ขั้นตอนที่ 1 ติดตั้ง เลือก zepeto → เซิร์ฟเวอร์ multiplay ในเมนู \[+] ที่มุมซ้ายบนของแผง \[project] หรือไปที่ assets → สร้าง → zepeto → เซิร์ฟเวอร์ multiplay แพ็คเกจ world multiplay ประกอบด้วยรายการต่อไปนี้ และจะได้รับการอัปเดตโดยอัตโนมัติเมื่อโลกถูกเผยแพร่ index ts รหัสหลักของเซิร์ฟเวอร์ schemas โครงสร้างข้อมูลสำหรับการสื่อสารระหว่างเซิร์ฟเวอร์/ไคลเอนต์ ❗️ ระวัง สามารถสร้างแพ็คเกจ world multiplay ได้เพียงหนึ่งแพ็คเกจต่อเกมเท่านั้น ขั้นตอนที่ 2 การตั้งค่า คลิกที่ \[เปิดการตั้งค่าโลก] ตามที่แสดงในภาพด้านล่างเพื่อกำหนดการตั้งค่าโลก ทรัพย์สิน คำอธิบาย เวอร์ชัน กรอกเวอร์ชันของไฟล์ของคุณที่จะลงทะเบียน maxclients ตั้งค่าจำนวนสูงสุดของผู้ที่สามารถเข้าถึงห้องได้ การจัดแนว เลือกการจัดแนวของหน้าจอ ปิดการเชิญ ปิดฟังก์ชันการเชิญห้อง ปิดรายการห้อง ปิดความสามารถในการตรวจสอบรายการห้อง ปิดห้องส่วนตัว ปิดความสามารถในการสร้างห้องส่วนตัว 👍 ปิดการเชิญ แม้ว่าฟังก์ชันการเชิญห้องจะปิดอยู่ คุณยังสามารถส่งคำเชิญผ่านลิงก์ทดสอบได้ ขั้นตอนที่ 3 การรันเซิร์ฟเวอร์ทดสอบ zepeto multiplay ให้สภาพแวดล้อมเซิร์ฟเวอร์ท้องถิ่นที่ผู้สร้างสามารถทดสอบเซิร์ฟเวอร์/ไคลเอนต์ระหว่างการพัฒนาได้ เพื่อตรวจสอบการทำงานของเซิร์ฟเวอร์ท้องถิ่น ให้เลือกเมนูด้านบนของ unity → window → zepeto → multiplay server เพื่อเปิดหน้าต่างสถานะเซิร์ฟเวอร์ คลิกปุ่มเซิร์ฟเวอร์ถัดจากปุ่ม \[▶︎(เล่น)] ที่อยู่กลางหน้าจอของโปรแกรมแก้ไข คุณจะเห็นบันทึกเซิร์ฟเวอร์ต่อไปนี้ที่แผงสถานะเซิร์ฟเวอร์ ขั้นตอนที่ 4 เชื่อมต่อกับลูกค้า (เชื่อมต่อกับเซิร์ฟเวอร์ท้องถิ่น) ส่วนประกอบ zepetoworldmultiplay เป็นคลาสผู้จัดการ multiplay ที่ใช้ในฝั่งลูกค้า สร้าง gameobject ในหน้าต่าง hierachy และเพิ่มส่วนประกอบ zepetoworldmultiplay ส่วนประกอบ zepetoworldmultiplay จะเชื่อมต่อกับแพ็คเกจ multiplay โดยอัตโนมัติ คลิกที่ปุ่ม \[▶︎(เล่น)] ที่กลางหน้าจอ editor เพื่อดูบันทึกการเชื่อมต่อของลูกค้าในหน้าต่าง server log เซิร์ฟเวอร์พัฒนาทำงานบน localhost(127 0 0 1) และพอร์ตจะถูกตั้งค่าเมื่อโปรเจกต์ถูกโหลดครั้งแรก เมื่อเชื่อมต่อผ่านหลายโปรเจกต์ ให้ตั้งค่าสภาพแวดล้อมการเชื่อมต่อเป็นดังนี้ 📘 กรุณาอ้างอิงจากคู่มือต่อไปนี้ กำลังเข้าถึงที่อยู่ ip หลายรายการ docid\ gmhdiidybsptfesqs7bqc 👍 หลังจากที่โลกถูกแจกจ่าย มันจะทำงานบนเซิร์ฟเวอร์ zepeto ขั้นตอนที่ 5 ตัวอย่างการสื่อสารระหว่างเซิร์ฟเวอร์ / ไคลเอนต์ การนำตรรกะเซิร์ฟเวอร์ไปใช้ ไฟล์ index ts ในแพ็คเกจ world multiplay เป็นโค้ดที่รับผิดชอบตรรกะหลักของเซิร์ฟเวอร์ เปิดไฟล์ index ts และเพิ่มตรรกะที่ส่งไปยังไคลเอนต์หลังจากได้รับประเภทข้อความ echo ในเหตุการณ์ oncreate() 📘 กรุณาอ้างอิงจากคู่มือต่อไปนี้ \[zepeto multiplay(server) api] import { sandbox, sandboxoptions, sandboxplayer } from 'zepeto multiplay'; import { player } from 'zepeto multiplay schema'; export default class extends sandbox { oncreate(options sandboxoptions) { this onmessage("echo", (client, message) => { console log(`echo onmessage from ${client sessionid}, > ${message}`); // ส่งไปยังไคลเอนต์ปัจจุบัน client send("echo", "echo to sender " + message); // กระจายไปยังไคลเอนต์ที่เชื่อมต่อทั้งหมด this broadcast("echo", "echo to all " + message); }); } onjoin(client sandboxplayer) { const player = new player(); player sessionid = client sessionid; player userid = client userid; const players = this state players; players set(client sessionid, player); console log('onjoin!!!!'); } onleave(client sandboxplayer, consented? boolean) { } } การดำเนินการตรรกะของลูกค้า สร้างและเพิ่มสคริปต์ zepeto ใน gameobject zepetoworldmultiplay ที่ใช้ในการส่ง/รับเหตุการณ์จากเซิร์ฟเวอร์ดังนี้ multiplaysample ts import { zepetoscriptbehaviour } from 'zepeto script'; import { zepetoworldmultiplay } from 'zepeto world'; import { room } from 'zepeto multiplay'; export default class multiplaysample extends zepetoscriptbehaviour { private multiplay zepetoworldmultiplay; start() { this multiplay = this gameobject getcomponent\<zepetoworldmultiplay>(); this multiplay roomjoined += (room room) => { console log(`roomcreated, my session id is ${room sessionid}`); // ส่งข้อความไปยังเซิร์ฟเวอร์ room send("echo", "สวัสดี zepeto multiplay"); // เพิ่มผู้ฟังข้อความจากเซิร์ฟเวอร์ room addmessagehandler("echo", (message) => { // พิมพ์ข้อความจากเซิร์ฟเวอร์ console log(message); }); }; } } 📘 กรุณาอ้างอิงจากคู่มือต่อไปนี้ ข้อความในห้องเล่นหลายคน docid 80px4fctallbpg9v1pncx ขั้นตอนที่ 6 ทดสอบผลลัพธ์การส่งออก คลิกที่ \[▶︎(เล่น)] ที่กลางหน้าจอ editor เพื่อเรียกใช้เซิร์ฟเวอร์/ลูกค้า คุณควรเห็นตัวอย่างข้อความประเภท 'echo' ดังที่แสดงด้านล่าง ① บันทึกของผลลัพธ์เมื่อข้อความจากลูกค้าถูกส่งไปยังเซิร์ฟเวอร์ ② บันทึกของข้อความที่ได้รับจากเซิร์ฟเวอร์จากลูกค้า ข้อควรระวังเมื่อใช้โค้ดเซิร์ฟเวอร์ ❗️ ระวัง \[การใช้ตัวแปรภายในโค้ดเซิร์ฟเวอร์] สามารถประกาศตัวแปรในโค้ดเซิร์ฟเวอร์ได้เช่นกัน อย่างไรก็ตาม หน่วยความจำแคชที่มีอยู่ในเซิร์ฟเวอร์ในขณะนี้จำกัดอยู่ที่ 512kb (อาจมีการเปลี่ยนแปลงในภายหลัง) หากเกิน 512kb ห้องอาจถูกซ่อน ดังนั้นโปรดพัฒนาตามนี้ \[การใช้ลูปภายในโค้ดเซิร์ฟเวอร์] เวลาลูปถูกตั้งไว้ที่ 2 วินาที (2000ms) ในโค้ดเซิร์ฟเวอร์ โปรดพิจารณานี้เมื่อพัฒนา เนื่องจากการใช้โค้ดที่บล็อกหรือการลูปที่ใช้เวลานานอาจทำให้โปรแกรมไม่สามารถทำงานได้อย่างถูกต้องเนื่องจากเวลาลูปที่กำหนด