หลายคนคงสงสัยกันไม่น้อยว่า เกม/แอพ ที่เขียนมาจะทำไงให้คุยกับ เซิฟเวอร์ได้ เล่นออนไลน์ได้ เล่นพร้อมกันหลายคนในเวลาเดียวกันได้ หรือเก็บข้อมูลเอาไว้บนฐานข้อมูลของเซิฟเวอร์ ซึ่งวันนี้ผมจะอธิบายเรื่องนี้ให้ฟังกันครับ โดยจะขอแบ่งออกเป็น 2 หัวข้อดังนี้
1. การเชื่อมต่อผ่าน Web API หรือ Web Service
ตัวอย่างกรณีใช้งานจริงจะเป็นในรูปแบบ เกม / แอพ (ไคลเอนต์) เรียกใช้งาน
Web API ที่อยู่บน เซิฟเวอร์ ในการเขียนโค้ดจริงฝั่งไคลเอนต์ (Unity) จะต้องเรียก Web API ผ่านคราส
WWW ส่วนฝั่งเซิฟเวอร์ จะเขียนเป็น Web API ด้วยภาษาใดก็ได้ ครับ
ตัวอย่าง โค้ดฝั่งไคลเอนต์ (Unity C#)
ตัวอย่าง โค้ดฝั่งเซิฟเวอร์ myapi.php (ภาษา PHP และฐานข้อมูล MySQL)
ข้อดีของวิธีนี้คือ ประหยัดทรัพยากรเครื่องเซิฟเวอร์ เพราะไม่จำเป็นต้องเชื่อมต่อกับไคลเอนต์ตลอดเวลา ข้อด้อยคือ ไม่รองรับกับการเขียนแอพแบบเรียลไทม์ ในกรณีที่บางเวลาเซิฟเวอร์จำเป็นต้องส่งข้อมูลบางอย่างแบบทันทีทันใดไปยังไคลเอนต์ เช่น ระบบแชทแบบเรียลไทม์ , เกมที่มีการตอบสนองแบบเรียลไทม์ (ผู้เล่นมีการรับรู้การเปลี่ยนแปลงของคนอื่น ในเวลาเดียวกัน)
2.การเชื่อมต่อผ่าน Remote Procedure Call (RPC)
การเชื่อมต่อจะเป็นในลักษณะแบบ
Peer-to-Peer อาจอยู่ในรูปแบบ ไคลเอนต์ กับ ไคลเอนต์ หรือ ไคลเอนต์ กับ เซิฟเวอร์ ก็ได้ เท่าที่ผมทราบ Library ที่ใช้ในการพัฒนามีดังนี้ (แต่ปัจจุบัน อาจมีมากกว่านี้แล้ว)
ตัวอย่างโค้ด สามารถดาวน์โหลด ได้ที่ บทความ
PROJECT: SURVIVAL SHOOTER MULTI-PLAYER
ข้อดีของวิธีนี้คือ การตอบสนองของตัวเกม / แอพ เป็นแบบเรียลไทม์ ข้อด้อยคือ ใช้ทรัพยากรเครื่องเซิฟเวอร์มากกว่า วิธีแรก เนื่องจากต้องเชื่อมต่อตลอดเวลาในขณะที่เล่น
สรุป
ทั้ง 2 วิธี มีข้อดีและข้อด้อยแตกต่างกัน ทั้งนี้ผู้พัฒนาจะต้องเลือกตามความเหมาะสมของตัว เกม / แอพ ด้วย เพราะมิเช่นนั้นแล้วเราอาจต้องเสียค่าใช้จ่ายในการพัฒนา มากกว่าที่ควรจะเป็นครับ