OBJECTIVE
เพื่อเรียนรู้และพัฒนาการทำโปรแกรมจำลองสถานการณ์ (Simulation) ในรูปแบบการจำลองภาพให้เสมือนจริง (Virtual Reality) ด้วยโปรแกรม Unity
เพื่อเรียนรู้การใช้งานและพัฒนาการทำ Virtual Reality ลงบน Oculus Quest 2
SYSTEM OVERVIEW
เกมจำลองการปิ้งย่างเนื้อในรูปแบบ Virtual Reality โดยใช้โปรแกรม Unity 3D ที่พัฒนาลงบนแพลตฟอร์ม Oculus Quest 2
โดยตัวเกมจะจำลองให้ผู้เล่นสามารถเข้าร่วมเซิร์ฟเวอร์เดียวกัน เพื่อเล่นเกมจำลองการย่างเนื้อให้สุกตามที่กำหนด โดยเป็นการเล่นแบบเน้นการร่วมมือกัน ไม่มีการแข่งภายในเกม
SYSTEM DESIGN
Unity
ในการทำโปรเจคนี้ ทางเราได้ใช้ SDK ของทาง Oculus คือ Oculus Integration มาพัฒนาเกมจำลอง VR ลงบน Oculus Quest 2 ซึ่งเป็น Asset ที่สามารถติดตั้งได้ผ่าน Unity Asset Store ได้ฟรี
Photon
ในส่วนของการพัฒนาระบบ Multiplayer เราได้ใช้ Photon 2 ในการทำระบบ Network ต่าง ๆ ของตัวโปรแกรม
Flow Chart
เมื่อทำการเข้าตัวเกม ผู้เล่นต้องทำการเลือกระหว่าง สร้าง Lobby หรือ Join Lobby ของผู้อื่น หากผู้เล่นกด Create ก็จะทำการ Host เซิร์ฟเวอร์เพื่อรอให้ผู้เล่นอื่นทำการเข้าร่วมห้อง และสามารถกดเริ่มเกมได้ทุกเมื่อ แต่หากผู้เล่นเลือกเข้าร่วมห้องของผู้อื่น จะไม่สามารถกดเริ่มเกมได้ด้วยตัวเอง
เมื่อ Host ทำการเริ่มเกม ผู้เล่นทุกคนจะเข้าสู่หน้าตัวเกมที่มีสภาพแวดล้อมให้ผู้เล่นสามารถเลือกประเภทของเนื้อเพื่อนำไปย่างในจุดที่กำหนด (เตาย่าง) โดยเงื่อนไขในการย่างเนื้อ คือ
จาก Raw Meat เป็น Cooked Meat ใช้เวลา 5 วินาที
จาก Cooked Meat เป็น Burned Meat ใช้เวลา 7 วินาที
IMPLEMENTATION
Control, UI and Gameplay by Unity
ในส่วนของการควบคุม Oculus Controller ของผู้เล่น ได้ใช้ Asset Oculus Integration เข้ามาช่วยในการพัฒนา ผู้เล่นสามารถหยิบ จับ Trigger และโยนวัตถุภายในเกมได้โดยใช้ Controller และสามารถ Teleport ไปยังพื้นที่ภายในเกมได้ด้วยการคลิกที่ Controller เพื่อลดพื้นที่ที่ใช้ในการเล่นและร่นระยะทางในการเดิน
ในการทำ UI ภายในหน้า Lobby จะใช้เป็น UI Pointer กับ Unity UI Canvas ในการ Interface ผู้เล่นสามารถคลิกเลือกปุ่มที่ต้องการบน Canvas ได้ แต่ติดปัญหาที่ไม่สามารถพิมพ์ข้อความเพื่อตั้งชื่อผู้เล่นและชื่อห้องได้ จึงใช้ระบบสุ่มในการตั้งชื่อผู้เล่นและชื่อห้องแทน
ส่วนของการทำ UI ภายในเกม เนื่องจากต้องใช้ XR Interaction และ VR Rig ในการควบคุม Controller แทน OVR Rig ในหน้า Lobby ทำให้ไม่สามารถใช้ UI Pointer ได้ จึงเปลี่ยนเป็นการ Interface โดยใช้ Box Collider ในการ Trigger Event แทน
ในด้านของเกมเพลย์ เบื้องต้นปัจจุบันยังเป็นเกมเพลย์แบบเรียบง่าย มีการจำลองการย่างเนื้อ มีสุก - ไหม้ได้ตามเป้าหมาย และ Teleport เนื่องจากยังไม่สามารถทำ Network Connection ภายในเกมได้ และมี Bug เนื้อตก Terrain เมื่อทำการโยนเนื้อแรงเกินไป
Network Connection by Photon
ปัจจุบัน สามารถทำการ Connection ระหว่างผู้เล่นได้แค่เฉพาะในหน้า Lobby คือผู้เล่นสามารถเห็น Room ที่ผู้อื่นสร้างได้ สามารถ Join ได้ และสามารถมองเห็น List ของผู้เล่นได้ว่าใครอยู่ภายใน Room บ้าง แต่เมื่อกดเริ่มเกม หน้าเกมที่เห็นไม่ถูก Sync กันและไม่เห็น Player Prefab การกระทำของอีกฝ่าย และยังไม่สามารถใช้ Voice Chat ได้
ในส่วนของรายละเอียดของปัญหาที่เกิดขึ้นในการทำ Network Connection เบื้องต้นคือไม่สามารถใช้คำสั่ง PhotonNetwork.Instantiate ได้ ซึ่งเป็นคำสั่งที่ใช้สร้าง Object ผ่าน Photon เพื่อให้ผู้เล่นอื่นสามารถเห็น Object เดียวกันได้ แต่เบื้องต้นได้ทำการ Add Component ที่เกี่ยวกับ Photon View ให้กับ Object ต่างๆไว้หมดแล้ว แต่ก็ยังไม่สามารถแก้ไม่ได้
SUMMARY
ในการทำโปรเจค Oculus Virtual Reality with Unity 3D ครั้งนี้ ยังไม่สามารถทำระบบ Multiplayer ได้สมบูรณ์ เนื่องจากพบปัญหาในการนำผู้เล่นเข้าร่วมเซิร์ฟเวอร์ของตัวเกมได้ ทำได้เพียง Join Lobby ระหว่างกันได้ ทำให้ไม่สามารถทำระบบ Voice Chat ระหว่างได้อีกด้วย ในส่วนของตัวเกม ผู้เล่นสามารถเล่นแบบจำลองการย่างเนื้อต่าง ๆ ได้ตามเป้าหมายที่กำหนด
จารุวรรณ วิจิตร์แสงศรี
62340500004
UI, Network multiplayer, Game Programing
ศศิกานต์ เจนพิทักษ์ชัย
62340500049
Player Controller, 3D Model, Network multiplayer