ทำเกม Multiplayer ด้วย Node js และ Socket.io ตอนที่ 2

บทความ, การใช้งาน Unity

กลับมาพบกับการเขียนเกมแบบมัลติเพลเย่อผ่าน Node js ในตอนที่ 2 กันต่อนะครับ วันนี้เราก็จะมาทำการเชื่อมต่อระหว่าง Client และ Server ในหลายๆ Event กันต่อครับ

จากคราวที่แล้วที่เราใส่ฟังชั่น  io.on(‘connection’,function(socket) ซึ่งจะทำงานเมื่อ Client connect เข้ามา เราจะใส่ฟังชั่นก์สำหรับการ Disconnect เข้าไปใน Loop ของฟังชั่นก์นี้ด้วยในลักษณะนี้ครับ

ถัดมาเราจะสร้าง Class Player เพื่อให้เป็นคลาสกำหนดรายละเอียดของผู้เล่นที่จะเข้ามาในเกม ซึ่งในตอนแรกจะมีแค่ Id  กับ username นะครับ ซึ่งเราสามารถเพิ่ม Class ได้จากใน Explorer view ของ Visual code ได้เลย โดยเราจะตั้งชื่อคลาสว่า Player.js และใส่ไว้ในโฟลเดอชื่อ Class ครับ

ซึ่งในคลาส Player เราจะมีการเรียกใช้ Library short id เพื่อให้ Generate ID ของ ผู้เล่นให้กับเรา และเตรียมพารามิเตอร์ username ไว้ด้วย ซึ่งเราจะได้โค้ดแบบนี้ครับ

จากนั้นเราจะมีทำการเพิ่มการสร้าง Player ใน index.js กัน โดยตัว Server จะต้องเก็บผู้เล่นทั้งหมดที่ Connect เข้ามาในเกม รวมไปถึง socket ของ Player ด้วย โดยเราจะทำการสร้างอาเรย์มาเพื่อเก็บสองสิ่งนี้ไว้นั่นเองครับ

ดังนั้นสิ่งที่เราจะทำเมื่อมีการ Connect เข้ามาสู่ Server ก็คือเราจะเก็บ Player และ Socket ที่ Connect เข้ามาลงอาเรย์นี้นั่นเอง

จากนั้นเราจะทำการบอก Client ที่กำลัง Connect เข้ามาที่ Server เราว่ามีการ เราเข้ามาใหม่แล้ว โดยใน Socket io เราจะใช้ฟังชั่นก์ที่ชื่อว่า emit โดยเราจะทำการ emit ออกไปทั้งหมด 3 ฟังชั่นก์คือ

  • register – ส่งไอดีของเราไปที่Client
  •  spawn – เรียกฟังชั่นก์สร้างตัว Player ในฝั่ง Client โดยส่ง player คลาสไป
  •  ทำการบอก Client ตัวอื่นๆที่อยู่ในห้องว่าเราเข้ามาแล้วนะ โดยจะใช้คำสั่ง broadcast.emit ครับ

ขั้นตอนต่อมาเราจะ Loop ดูใน อาเรย์ของ Players ทั้งหมดว่ามีใครอยู่บ้างแล้ว และ spawn ตัวเหล่านั้นใน client ของเรานั่นเองครับ ซึ่งแน่นอนว่าเราจะข้าม playerid ของเราไปครับ

และเมื่อเรา Disconnect  เราก็ต้องลบ playerid ของเรากับ socket ออกจากอาเรย์ของ Server ด้วยเช่นเดียวกันครับ

ซึ่ง Code ทั้งหมดใน index.js จะหน้าตาแบบนี้ครับ

เท่านี้เราก็เตรียม Server เรียบร้อย สามารถเปิด Server โดยการพิม nodemon index.js ใน Terminal ของ Visual code ได้เลยครับ

ในตอนหน้าเราจะมาทำการเขียนฝั่ง Client เพื่อ Connect และ Spawn ตัวผู้เล่นของเราและของคนอื่นๆในเกมกันนะครับ แล้วพบกันในตอนที่ 3 ครับ

, , ,

บทความที่เกี่ยวข้อง

Menu