สร้างเกม - server/client and RPC (Unity3D Thailand)
สอน Unity3D server และ client แถม RPC ให้นิดๆหน่อยๆ - บทความนี้เกี่ยวกับเรื่องของ server และ client ครับ จะมาบอกวิธีการสร้างเกม server แล้วจะให้ client เชื่อมต่อไปยัง server ยังไงนะครับ สำหรับ Unity แล้วก็ดูฟังชั่นที่ใช้งานร่วมกันบ่อยๆนั้นมีอะไรบ้างนะครับ
ส่วนเรื่อง RPC ก็เป็นตัวอย่างนิดเดียวเท่านั้นนะครับ เดี๋ยวบทความต่อไปจะขยายความเรื่องของ RPC ให้มากกว่านี้ครับ ก็เดี๋ยวไปชมวิดีโอกันก่อนเลยครับ
โค้ดตัวอย่างของ server ครับ ก็มีคำสั่ง Network.InitializeServer(); ที่เป็นคำสั่ง start server นั้นเองครับ แล้วก็มีฟังชั่นที่ใช้งานบ่อยๆอย่าง
ก็จะทำอะไรภายในฟังชั่นนี้ๆก็แล้วแต่เราเลยครับ อย่างในตัวอย่างผมก็ Debug.log แสดงผลตามที่ผมต้องการครับ
RPC โหมด -บทความนี้ จะมาดูเรื่องของการใช้ RPC ในโหมดต่างว่ามีอะไรกันบ้างนะครับ สำหรับบทความนี้ไม่ขอทำคลิปแล้วกันครับ ก็ให้เพื่อนๆไปลองกันเอาเอง เพราะแค่ลองใช้คำสั่งอื่นๆคงไม่ยาก เรามาดูตัวอย่างกันเลยดีกว่าครับ
ส่วนเรื่อง RPC ก็เป็นตัวอย่างนิดเดียวเท่านั้นนะครับ เดี๋ยวบทความต่อไปจะขยายความเรื่องของ RPC ให้มากกว่านี้ครับ ก็เดี๋ยวไปชมวิดีโอกันก่อนเลยครับ
ถ้าวิดีโอไม่ขึ้นครับ http://youtu.be/HrT83EXNMAY
โค้ดตัวอย่างของ server ครับ ก็มีคำสั่ง Network.InitializeServer(); ที่เป็นคำสั่ง start server นั้นเองครับ แล้วก็มีฟังชั่นที่ใช้งานบ่อยๆอย่าง
- OnserverIntialized() ที่ตรวจสอบว่า server ทำงานแล้ว
- OnPlayerConnected() ที่ตรวจสอบว่ามีการเชื่อมต่อเข้ามาแล้ว
- OnPlayerDisConnected() ก็ตรงตัวครับ คือยกเลิกการเชื่อต่อแล้ว
ก็จะทำอะไรภายในฟังชั่นนี้ๆก็แล้วแต่เราเลยครับ อย่างในตัวอย่างผมก็ Debug.log แสดงผลตามที่ผมต้องการครับ
ตัวอย่างโค้ด client ก็ไม่มีไรมากครับ คำสั่ง Network.Connect() ก็คือสั่งให้เชื่อมต่อไปยัง server ที่เราต้องการนั้นเอง โดยกำหนด ip และ port ที่ตามที่เครื่อง server ตั้งไว้ครับ
แล้วก็ Component ที่จำเป็นของเรื่องนี้ก็คือ Network View ครับ ตามรูปด้านล่างเลย
คำสั่งที่เอาไว้เรียกใช้ RPC ครับ
- networkView.RPC("myRPC", RPCMode.All, "string1", "string2");
คือคำสั่ง networkView.RPC นั้นเองครับ ส่วนค่าข้างในมีอะไรบ้าง
- อันแรกเป็นชื่อฟังชั่นที่เป็น RPC ของเรานั้นเองครับ ของผมเป็น myRPC ตามกรอบด้านล่างที่สร้างไว้
- อันสองเป็นโหมดครับ มีโหมดอะไรบ้างมาดูกัน
- RPCMode.All = ทำกับทังหมด
- RPCMode.AllBuffered = ทำกับทั้งหมด รวมทั้งที่มาทีหลังด้วย ( ตัวอย่างเช่น ถ้าฟังชั่นนั้นเป็นฟังชั่นนับเวลา ก็จะเห็นเวลาเท่ากับของอันที่นับไปก่อนแล้ว )
- RPCMode.Others = ทำกับทั้งหมด ยกเว้นตัวเอง
- RPCMode.OthersBuffered = ทำกับทั้งหมด ยกเว้นตัวเอง รวมทั้งที่มาทีหลังด้วย (คล้ายๆ AllBuffered )
- RPCMode.Server = ทำเฉพาะกับ Server
- อันสุดท้ายก็เป็น parameter มีกี่ค่าก็ใช้เครื่องหมาย "," คั่นไปเรื่อยครับ
_____________________________________
[RPC]
void myRPC(string s1, string s2)
{
Debug.Log(s1 + ":" + s2);
}
_____________________________________
สำหรับบทความนี้ก็สั้นๆง่ายๆครับขอบคุณที่ตามอ่านกันครับ
Post a Comment