บทความทั้งหมด

โลกเดียว ห้าแพลตฟอร์ม — บันทึกการพัฒนา #2: ความท้าทายของการพัฒนา MMORPG ข้ามแพลตฟอร์ม

ทำให้ MMORPG เกมเดียวเล่นได้ด้วยเมาส์ หน้าจอสัมผัส และเกมแพด: ทางเลือกของ Ancient Online เรื่องอินเทอร์เฟซ การควบคุม 30 ภาษา และการแปลแชต

เกมแพดวางบนโต๊ะในแสงสลัว สะท้อนแสงสีแดงและสีเทอร์ควอยซ์

เรากำลังออกแบบ Ancient Online: Remastered ให้เป็นโลกเพียงใบเดียวที่ผู้เล่น Windows, Linux, macOS, Android และ iOS จะได้พบกัน บนกระดาษฟังดูง่าย: เกมเดียว ห้าแพลตฟอร์ม แต่ในทางปฏิบัติ การนำ MMORPG คลาสสิกที่ออกแบบมาให้เล่นด้วยการคลิกเมาส์ไปสู่โทรศัพท์และเกมแพด หมายถึงการตัดสินใจที่ยากเป็นชุด ในบันทึกการพัฒนาตอนนี้ เราจะเล่าถึงการตัดสินใจเหล่านั้นและเหตุผลเบื้องหลัง

เกมอยู่ระหว่างการพัฒนา ปัจจุบันบิ⁠ล⁠ด์พัฒนาทดสอบอยู่บนอุปกรณ์ Windows และ Android ส่วน macOS, Linux และ iOS เป็นแพลตฟอร์มอื่นที่เราตั้งเป้าไว้

กฎข้อ 1: โลกเดียว กติกาชุดเดียว

ไม่มีเซิร์ฟเวอร์แยกและไม่มีสมดุลแบบ “ลดความซับซ้อน” สำหรับผู้เล่นมื⁠อ⁠ถื⁠อ เนื่องจากกติกาทั้งหมดของเกมทำงานบนเซิร์ฟเวอร์ คุณจึงเล่นในโลกเดียวกันด้วยกติกาเดียวกัน ไม่ว่าจะเชื่อมต่อจากอุปกรณ์ใด บัญชี ตัวละคร ช่องเก็บของ และกิ⁠ล⁠ด์ของคุณไม่ขึ้นกับอุปกรณ์ เราเล่าเรื่องฝั่งเซิร์ฟเวอร์ไว้แล้วในบันทึกการพัฒนาตอนที่หนึ่ง

สำหรับไ⁠ค⁠ล⁠เ⁠อ⁠น⁠ต์ กฎข้อนี้หมายความว่าแพลตฟอร์มต่างกันมีการควบคุมที่ต่างกันได้ แต่มีความสามารถที่ต่างกันไม่ได้

หน้าจอสัมผัส: คิดใหม่แทนที่จะย่อส่วน

การย่ออินเทอร์เฟซ MMORPG คลาสสิกทั้งอย่างที่เป็นอยู่แล้วนำไปใส่ในโทรศัพท์นั้นใช้ไม่ได้ผล ปุ่มจะเล็กเกินไปสำหรับนิ้วและหน้าจอจะแน่นเกินไป เราจึงออกแบบเลเยอร์อินเทอร์เฟซแยกต่างหากสำหรับมื⁠อ⁠ถื⁠อ:

  • จอยสติ๊กลอย: ไม่ว่าคุณจะวางนิ้วตรงไหนบนครึ่งซ้ายของหน้าจอ จอยสติ๊กจะตามมาที่นิ้ว ผู้เล่นไม่ต้องกดให้โดนจุดใดจุดหนึ่งบนหน้าจอ
  • ปุ่มโจมตีแบบกดค้าง ที่มีแถบสกิลโค้งล้อมรอบ
  • แตะเพื่อเลือกเป้าหมาย: สิ่งที่เทียบเท่าบนหน้าจอสัมผัสของความเคยชินแบบ “คลิกที่ม⁠อ⁠น⁠ส⁠เ⁠ต⁠อ⁠ร์” บนพีซี

ยังมีสิ่งที่เราตั้งใจไม่ทำด้วย: การแตะเพื่อเดิน จอยสติ๊กดูแลการเคลื่อนที่ หากมีระบบเคลื่อนที่สองระบบ ทุกครั้งที่แตะเป้าหมายพลาดจะกลายเป็นการวิ่งที่ไม่ได้ตั้งใจ และกลางการต่อสู้เรื่องนี้ยอมรับไม่ได้

อีกหนึ่งการตัดสินใจที่เล็กแต่สำคัญ: บนโทรศัพท์จะมองเห็นช่องได้ครั้งละไม่กี่ช่อง การสลับหน้าสกิลจึงเกิดขึ้นบ่อยกว่าบนคอมพิวเตอร์มาก เราทำให้ช่องโพชันเป็นอิสระจากหน้าสกิล เมื่อคุณสลับหน้า โพชันของคุณจะอยู่ที่เดิม การทำเช่นนี้ต้องใช้มากกว่าการย้ายช่องหนึ่งช่องในอินเทอร์เฟซ: เราต้องแยกโค้ดที่ใช้ช่องโพชันออกจากตรรกะของหน้าทั้งหมด

กล้องและมัลติทัช

บนโทรศัพท์ กล้องจะหมุนเมื่อคุณลากนิ้วบนพื้นที่ว่าง การทำเรื่องนี้ด้วยการวาง “โซนกล้อง” เต็มหน้าจอทับบนอินเทอร์เฟซดูน่าดึงดูด แต่เลเยอร์แบบนั้นจะกลืนการสัมผัสที่ตั้งใจส่งให้ปุ่มทุกปุ่มที่อยู่ข้างใต้ เราจัดการการลากกล้องในตัวควบคุมผู้เล่นแทนที่จะเป็นเลเยอร์อินเทอร์เฟซ จึงป้องกันการชนกันระหว่างปุ่มกับกล้องได้ เรายังแยกการเลือกเป้าหมายออกจากการลากกล้องด้วยค่าขีดเริ่มของการเคลื่อนที่เล็ก ๆ: จนกว่าจะเกินค่านี้ กล้องจะไม่ขยับเลย และเมื่อเกินแล้ว กล้องจะเริ่มหมุนโดยไม่กระโดดกะทันหัน

เกมแพด: ใช้งานในเมนูได้ด้วย

เราออกแบบการรองรับเกมแพดสำหรับอินเทอร์เฟซทั้งหมด ไม่ใช่แค่การต่อสู้ เพื่อให้ใช้เกมแพดในช่องเก็บของและเมนูได้ เราเพิ่มการนำทางโฟกัสด้วย D-pad ตรงนี้ก็มีกับดักเช่นกัน: D-pad และปุ่มยืนยัน/ย้อนกลับจำเป็นทั้งสำหรับการนำทางในเมนูและการใช้ช่องลัด ทางออกคือ: ขณะที่หน้าต่างเปิดอยู่ ปุ่มเหล่านี้ใช้นำทางในเมนู และเมื่อหน้าต่างปิด ปุ่มจะกลับไปควบคุมช่องลัด การหลุดเข้า “โหมดเมนู” อย่างเงียบ ๆ กลางการต่อสู้คงเป็นบั๊กที่แย่ที่สุดที่ระบบนี้จะมีได้

เกมจะจำว่าคุณใช้อุปกรณ์อินพุตใดล่าสุด: เมื่อคุณสลับไปใช้เกมแพด ปุ่มสัมผัสจะหายไปจากหน้าจอ

การตั้งค่าก็ปรับตามแพลตฟอร์ม

หน้าต่างการตั้งค่าปรับรูปแบบตามอุปกรณ์: แท็บเมาส์และคีย์บอร์ดปรากฏเฉพาะบนพีซี และแท็บการสัมผัสปรากฏเฉพาะบนโทรศัพท์ ตัวเลือกกราฟิกที่มีเฉพาะบนคอมพิวเตอร์อย่าง Lumen, DLSS และ FSR จะถูกแทนที่บนมื⁠อ⁠ถื⁠อด้วยตัวเลือกความละเอียดและการลบรอยหยัก บนแต่ละอุปกรณ์ เราแสดงเฉพาะการตั้งค่าที่มีผลจริงบนอุปกรณ์นั้น

30 ภาษาและอินเทอร์เฟซที่วัดขนาดตามแต่ละภาษา

ตัวเกมและเว็บไซต์ของเราตั้งเป้ารองรับ 30 ภาษา ความยากที่ซ่อนอยู่ของอินเทอร์เฟซหลายภาษาคือความยาวของข้อความ: ป้ายบนปุ่มเดียวกันอาจสั้นในภาษาหนึ่งและยาวเป็นสองเท่าในอีกภาษาหนึ่ง เราคำนวณความกว้างของแท็บในหน้าต่างการตั้งค่าจากความกว้างจริงของป้ายแต่ละอันในภาษานั้น แทนที่จะแบ่งให้เท่ากัน และเมื่อเปลี่ยนภาษา เลย์เอาต์จะถูกคำนวณใหม่ ในตัวเลือกภาษา แต่ละภาษาเขียนด้วยชื่อในภาษาของตัวเอง

การแปลแชตบนเซิร์ฟเวอร์ของเราเอง

เพื่อให้ผู้เล่นจากต่างประเทศเข้าใจกันได้ในโลกเดียวกัน ข้อความแชตจะถูกแปลเป็นภาษาของผู้อ่าน เรามีหลักการสองข้อในการสร้างระบบนี้:

  1. ข้อความไม่ออกจากเซิร์ฟเวอร์ของเรา การแปลทำบนเซิร์ฟเวอร์ของเราเองด้วยโมเดลแบบโลคัลที่ใช้เฉพาะ CPU ไม่มีการใช้ API แปลภาษาภายนอก
  2. การรักษาภาษาของเกม แชตของ MMORPG เต็มไปด้วยตัวย่อ ศัพท์เกม และอีโมจิ เราใช้อภิธานศัพท์เฉพาะของเกม และปกป้องอีโมจิแยกต่างหากเพื่อไม่ให้หายไประหว่างการแปล

ต่อจากนี้

งานด้านประสิทธิภาพบนมื⁠อ⁠ถื⁠อและแพลตฟอร์มอื่นที่เราตั้งเป้าไว้ยังคงเดินหน้า หากอยากดูรายการการควบคุมทั้งหมดในฝั่งผู้เล่น ดูคู่มือการเล่นข้ามแพลตฟอร์มบนพีซีและมื⁠อ⁠ถื⁠อบนเว็บไซต์เกม หากอยากรู้จักส⁠ตู⁠ดิ⁠โ⁠อของเรา อ่านบทความ Astronaut Entertainment คือใคร?

แชร์:
อ่านได้ในภาษาอื่น29