ถ้าคุณลองปรับแต่งมันมาสักพักแล้ว เกม MUD แบบข้อความและโปรแกรมไคลเอนต์ Telnet บนมือถือคุณอาจเคยเจอปัญหาเดียวกันนี้: ทุกคนพูดถึงประวัติ ความทรงจำ และเรื่องราวต่างๆ เกี่ยวกับ Telnet… แต่แทบไม่มีใครอธิบายอย่างชัดเจนว่าไคลเอนต์และเซิร์ฟเวอร์สื่อสารกันอย่างไร บทความนี้มีจุดมุ่งหมายเพื่อเติมเต็มช่องว่างนั้น: เพื่อเจาะลึกถึงโปรโตคอล ข้อความ ลำดับการควบคุม และวิธีการทำให้เซิร์ฟเวอร์ MUD ของคุณทำงานร่วมกับไคลเอนต์ที่มีอยู่ได้อย่างราบรื่น
มาทบทวนกันอีกครั้ง คำอธิบายที่ละเอียดและเป็นรูปธรรมเกี่ยวกับวิธีการทำงานของโปรโตคอล MUD ที่ใช้ Telnet ทั่วไปเอกสารนี้อธิบายถึงส่วนขยายที่ใช้ในอุตสาหกรรม (GMCP, MSSP, การบีบอัดข้อมูล ฯลฯ) วิธีการจัดรูปแบบข้อความ สิ่งที่ไคลเอนต์บนมือถือคาดหวังว่าจะเห็น และสิ่งที่คุณต้องส่งจากเซิร์ฟเวอร์ของคุณเพื่อให้ทุกอย่างทำงานได้อย่างราบรื่นโดยไม่ต้องสร้างโปรโตคอลขึ้นมาใหม่ทั้งหมด ทั้งหมดนี้อธิบายเป็นภาษาสเปนมาตรฐาน (จากประเทศสเปน) พร้อมตัวอย่างที่ชัดเจนและไม่มีศัพท์เฉพาะทางที่ไม่จำเป็น
1. Telnet เป็นพื้นฐาน: สิ่งที่เกม MUD ส่วนใหญ่ใช้กันจริง ๆ
เกม MUD คลาสสิกส่วนใหญ่ไม่ได้คิดค้นรูปแบบการขนส่งใหม่: พวกมันอาศัยรูปแบบการขนส่งแบบเดิม ๆ Telnet ทำหน้าที่เป็นชั้นการสื่อสารระหว่างไคลเอ็นต์และเซิร์ฟเวอร์นั่นหมายความว่า ในท้ายที่สุดแล้ว สิ่งที่ถูกส่งไปคือกระแสของไบต์ผ่าน TCP ซึ่งข้อความปกติจะผสมกับคำสั่ง Telnet พิเศษที่นำหน้าด้วยไบต์ที่ 255 (0xFF)
จากมุมมองของเครือข่าย เซิร์ฟเวอร์ MUD ทำงานเหมือนกับ... เซิร์ฟเวอร์ Telnet พื้นฐาน พร้อมส่วนขยายเสริมมากมายไคลเอนต์ (ไม่ว่าจะเป็นมือถือ คอมพิวเตอร์ตั้งโต๊ะ หรือการเชื่อมต่อ Telnet จากระบบ) จะสร้างการเชื่อมต่อ TCP ไปยังพอร์ต MUD (โดยทั่วไปคือ 23, 4000, 5000 เป็นต้น) และจากนั้นกระบวนการซื้อขายออปชั่นก็จะเริ่มต้นขึ้น
ในการเจรจาครั้งแรกนั้น ทั้งสองฝ่ายต่างส่งข้อมูลให้กันและกัน ลำดับการควบคุม Telnet คำสั่งประเภท “WILL”, “WONT”, “DO” และ “DONT” ใช้สำหรับเปิดหรือปิดใช้งานคุณสมบัติต่างๆ เช่น เสียงสะท้อน ขนาดหน้าต่าง โปรโตคอลเพิ่มเติม เช่น GMCP การบีบอัดข้อมูล เป็นต้น คำสั่งเหล่านี้จะผสมปนเปอยู่กับข้อความในเกม แต่ผู้เล่นสามารถแยกแยะได้เนื่องจากคำสั่งควบคุมจะมีรหัส 0xFF ที่คุ้นเคยกำกับอยู่
2. โครงร่างของโปรโตคอล Telnet ที่ใช้โดยเกม MUD
ใน Telnet คำสั่งควบคุมใดๆ จะเริ่มต้นด้วยไบต์ IAC (Interpret As Command, ค่า 255)ถัดมาจะเป็นไบต์หนึ่งตัวหรือมากกว่านั้นที่ระบุประเภทคำสั่ง และในหลายกรณีจะมีรหัสตัวเลือก ในระดับโปรโตคอล MUD มาตรฐาน คุณจะพบเจอสิ่งเหล่านี้เป็นหลัก:
- ไอเอซี ดีโอ"ผมต้องการให้คุณ (ลูกค้า) เปิดใช้งานตัวเลือกนี้"
- IAC อย่า"ฉันไม่ต้องการให้คุณใช้ตัวเลือกนี้"
- IAC จะ“ฉัน (เซิร์ฟเวอร์) สามารถและต้องการใช้ตัวเลือกนี้”
- IAC จะไม่"ฉันจะไม่ใช้ตัวเลือกนี้"
ตัวเลือกต่างๆ จะถูกระบุด้วยหมายเลข บางส่วนเป็นมาตรฐาน Telnet รุ่นเก่า บางส่วนเป็นส่วนขยายที่ตกลงกันไว้ในชุมชน MUD (ตัวอย่างเช่น) GMCP, MSSP, COMPRESS2ซึ่งไม่ปรากฏใน RFC ของ Telnet แบบดั้งเดิม แต่ได้กลายเป็น "มาตรฐานเสมือน" โดยพฤตินัย เนื่องจากไคลเอนต์หลักๆ รองรับฟังก์ชันเหล่านี้
ในฐานะเกม MUD คุณจะเริ่มต้นบทสนทนาโดยการส่งข้อความเป็นปกติ ลำดับ IAC DO / IAC WILL เพื่อทดสอบว่าไคลเอ็นต์รองรับอะไรบ้าง เช่น ยอมรับ GMCP หรือไม่ ต้องการการบีบอัดข้อมูลหรือไม่ แสดงข้อมูลเทอร์มินัลหรือไม่ เป็นต้น ไคลเอ็นต์จะตอบกลับด้วย WILL/WONT หรือ DO/DONT ตามความเหมาะสม เซิร์ฟเวอร์ของคุณต้องเคารพการตอบกลับเหล่านี้และไม่ควรใช้ตัวเลือกใดๆ หากไคลเอ็นต์ไม่ยอมรับ
3. การแยกข้อความในเกมออกจากส่วนควบคุม Telnet
หนึ่งในคำถามทั่วไปคือ จะแยกแยะความแตกต่างได้อย่างไร ข้อความปกติของเกมเกี่ยวกับคำสั่งควบคุมกฎนั้นง่ายมาก: อะไรก็ตามที่ไม่ได้ขึ้นต้นด้วย 0xFF จะถือว่าเป็นข้อความ คำสั่ง Telnet จะเริ่มต้นด้วยไบต์พิเศษนั้นเสมอ เพื่อป้องกันความสับสนนั่นเอง
ตัวอย่างเชิงแนวคิด (คุณไม่จำเป็นต้องคัดลอกมาทั้งหมด เพียงแค่เพื่อแสดงภาพ): เซิร์ฟเวอร์สามารถส่งได้ บรรทัดที่อธิบายสภาพแวดล้อม ตามด้วยลำดับ IAC เพื่อซื้อขายออปชั่น โปรแกรมฝั่งไคลเอ็นต์จะอ่านข้อมูลทีละไบต์: เมื่อพบค่า 0xFF จะเข้าสู่ "โหมดคำสั่ง" ส่วนในช่วงเวลาอื่น ๆ จะถือว่าเป็นข้อความธรรมดา ใช้สี ANSI หากเหมาะสม และแสดงผลออกมา
หากจำเป็นต้องส่งไบต์ 0xFF เป็นส่วนหนึ่งของข้อความ (ซึ่งค่อนข้างหายาก แต่ก็เป็นไปได้) คุณต้องปฏิบัติตามนี้ “เพื่อหลีกหนีมัน” ด้วยการทำซ้ำมันกล่าวอีกนัยหนึ่ง การส่งค่า 0xFF ในการไหลของข้อมูลในระดับผู้ใช้ จะต้องส่งค่า 0xFF สองตัวติดกัน และไคลเอนต์จะตีความได้อย่างถูกต้องว่าเป็น "ค่า 0xFF ตัวเดียวที่เป็นข้อความ ไม่ใช่คำสั่ง"
4. รูปแบบข้อความ: จำนวนบรรทัด การเว้นวรรค และสี
เนื้อหาส่วนใหญ่ที่ MUD ของคุณจะส่งคือ ข้อความที่อ่านง่าย: คำอธิบาย บทสนทนา รายการวัตถุ และคำสั่งแม้ว่าจะดูเหมือนเป็นเรื่องเล็กน้อย แต่ก็คุ้มค่าที่จะใส่ใจในรายละเอียดบางอย่างเพื่อให้โปรแกรม Telnet (โดยเฉพาะบนอุปกรณ์เคลื่อนที่) แสดงผลได้อย่างถูกต้อง
โดยทั่วไป เกม MUD ยังคงใช้รูปแบบคลาสสิกอยู่ บรรทัดที่ลงท้ายด้วย CRLF (\r\n)ไคลเอนต์บางตัวรองรับเฉพาะ LF (\n) เท่านั้น แต่เพื่อให้ใช้งานร่วมกันได้สูงสุด ควรส่งอักขระขึ้นบรรทัดใหม่ (carriage return) ตามด้วยการป้อนบรรทัด (line feed) เสมอ
โดยทั่วไปแล้ว MUD จะใช้สีและรูปแบบต่างๆ เป็นหลัก รหัสหลีกเลี่ยง ANSI ฝังอยู่ในข้อความ ตัวอย่างเช่น ลำดับที่ขึ้นต้นด้วย ESC (0x1B) และต่อด้วย “[31m” สำหรับข้อความสีแดง “[1m” สำหรับตัวหนา เป็นต้น ลำดับเหล่านี้ไม่ได้เป็นส่วนหนึ่งของโปรโตคอล Telnet เอง แต่เป็นสิ่งที่เทอร์มินัลส่วนใหญ่และไคลเอนต์ MUD ขั้นสูง รวมถึงไคลเอนต์บนมือถือจำนวนมากเข้าใจได้
5. ส่วนขยาย MUD ผ่าน Telnet: GMCP, MSSP และอื่นๆ
นอกเหนือจากข้อความธรรมดาแล้ว เกม MUD หลายเกมในปัจจุบันยังรวม Telnet เข้ากับ... โปรโตคอลเพิ่มเติมสำหรับการแลกเปลี่ยนข้อมูลที่มีโครงสร้างกับลูกค้าวิธีนี้ช่วยให้แอปพลิเคชันบนมือถือสามารถแสดงอินเทอร์เฟซที่หลากหลายกว่าการแสดงข้อความธรรมดาได้
ส่วนขยายที่พบบ่อยที่สุด ได้แก่:
- GMCP (Generic MUD Communication Protocol): ส่งข้อมูลในรูปแบบ JSON (แม้ว่าจะไม่ตรงตามมาตรฐาน 100% เสมอไป) เกี่ยวกับตัวละคร แผนที่ ช่องสัญญาณ ฯลฯ
- MSSP (Mud Server Status Protocol): ออกแบบมาเพื่อให้บริการข้อมูลเซิร์ฟเวอร์ (ชื่อ MUD จำนวนผู้เล่น เพศ ฯลฯ) แก่บริการจัดอันดับและลูกค้าที่สนใจ
- บีบอัด / บีบอัด2การบีบอัดข้อมูลเพื่อลดปริมาณแบนด์วิดท์ ซึ่งมีประโยชน์อย่างมากในการเชื่อมต่อที่ช้า
ส่วนขยายเหล่านี้จะถูกเจรจาเช่นเดียวกับตัวเลือก Telnet อื่นๆ โดยปกติแล้วเซิร์ฟเวอร์จะเป็นผู้ส่ง IAC จะทำ GMCP หรือ IAC จะทำ GMCP และรอการตอบกลับ เมื่อตกลงกันได้แล้ว ส่วนขยายนั้นจะกำหนดวิธีการห่อหุ้มข้อมูล (ตัวอย่างเช่น GMCP จะอยู่ภายในกระบวนการเจรจาต่อรองย่อยของ Telnet: IAC SB) … IAC SE)
6. การเจรจาย่อย (SB และ SE): การห่อหุ้มข้อมูลพิเศษ
เมื่อตัวเลือก Telnet ต้องการส่งข้อมูลมากกว่าแค่คำตอบใช่/ไม่ใช่ จะใช้รูปแบบต่อไปนี้: การเจรจาย่อยรูปแบบคือ:
- ไอเอซี เอสบี ไอเอซี เอสอี
ภายในบล็อกนั้น คุณสามารถส่งข้อความได้ สตริง ตัวเลข หรือโครงสร้างเฉพาะที่กำหนดโดยส่วนขยายตัวอย่างเช่น GMCP มักจะส่งข้อมูลที่มีลักษณะคล้ายกับอ็อบเจ็กต์ JSON ซึ่งประกอบด้วยเครื่องหมายคำพูด วงเล็บปีกกา และค่าต่างๆ
เมื่อไคลเอนต์ได้รับ IAC SB GMCP มันจะรู้ว่าทุกอย่างจนถึง IAC SE เป็นส่วนหนึ่งของแพ็กเก็ต GMCP ไม่ใช่สตรีมข้อความเกมปกติ ดังนั้น มันจึงสามารถ ควรแยกส่วนที่แสดงบนส่วนติดต่อผู้ใช้แบบกราฟิกออกจากส่วนที่แสดงบน "บัฟเฟอร์" ข้อความแบบคลาสสิกให้ชัดเจน.
7. สิ่งที่เซิร์ฟเวอร์ MUD ส่ง: ขั้นตอนการสื่อสารโดยทั่วไป
ลองนึกภาพลำดับเหตุการณ์ตั้งแต่ผู้เล่นเชื่อมต่อจากจุดหนึ่งไปยังอีกจุดหนึ่ง ไคลเอนต์ Telnet บนมือถือสำหรับเซิร์ฟเวอร์ MUD ของคุณ:
- ไคลเอนต์เปิดการเชื่อมต่อ TCP ไปยังพอร์ต MUD
- เซิร์ฟเวอร์จะส่งแบนเนอร์ต้อนรับ (ข้อความ) และอาจจะมีอย่างอื่นเพิ่มเติมด้วย ลำดับ IAC สำหรับการซื้อขายออปชั่น (เสียงสะท้อน, GMCP, การบีบอัด…)
- ลูกค้าตอบกลับโดยการยอมรับหรือปฏิเสธตัวเลือกเหล่านั้นด้วยคำว่า จะ/จะไม่ และ ทำ/ไม่ทำ
- จากนั้น เซิร์ฟเวอร์จะส่งหน้าจอเข้าสู่ระบบ (ข้อความ) และประมวลผลคำสั่งที่ผู้เล่นพิมพ์
เซิร์ฟเวอร์จะต้องสามารถดำเนินการได้ตลอดเวลา อ่านข้อมูลที่ลูกค้าป้อนเข้ามาในรูปแบบผสมผสานระหว่างข้อความและคำสั่ง Telnetเช่นเดียวกับที่ฝั่งไคลเอนต์ประมวลผลข้อมูลของคุณ เมื่อผู้เล่นพิมพ์คำว่า "north" แล้วกด Enter ฝั่งไคลเอนต์มักจะส่งสตริงนั้นตามด้วยการขึ้นบรรทัดใหม่และการขึ้นบรรทัดอีกครั้ง เซิร์ฟเวอร์ของคุณจะอ่านไปจนถึงท้ายบรรทัดและตีความว่าเป็นคำสั่งจากผู้เล่น
หากลูกค้าตัดสินใจที่จะเริ่มดำเนินการใดๆ (เช่น การเริ่มการเจรจาเกี่ยวกับขนาดหน้าต่าง) คุณต้องเตรียมพร้อมที่จะรับฟังข้อโต้แย้งด้วยเช่นกัน ลำดับ IAC จากฝั่งไคลเอ็นต์ และตอบคำถามให้ถูกต้อง ไม่ใช่แค่ในทางกลับกัน

8. สิ่งที่ไคลเอนต์ Telnet ส่ง (รวมถึงไคลเอนต์บนมือถือ)
จากมุมมองของเซิร์ฟเวอร์ของคุณ ไคลเอนต์ Telnet มาตรฐาน (ทั้งบนมือถือและเดสก์ท็อป) จะส่งข้อมูลให้คุณสองประเภทหลัก ๆ ดังนี้: ข้อความของผู้ใช้และคำสั่ง Telnetโดยปกติแล้วข้อความจะเป็นแบบ ASCII หรือ UTF-8 ขึ้นอยู่กับโปรแกรมที่ใช้งาน ในปัจจุบันแนะนำให้เลือกใช้ UTF-8 เป็นอย่างน้อย
คำสั่ง Telnet ที่คุณจะได้รับนั้น ได้แก่ คำสั่งต่อไปนี้เป็นหลัก: การตอบสนองต่อคำขอเจรจาของคุณหากคุณส่งคำสั่ง IAC DO GMCP ไคลเอนต์จะตอบกลับด้วย IAC WILL GMCP หากรองรับ หรือ IAC WONT GMCP หากไม่รองรับ นอกจากนี้ยังสามารถเริ่มต้นการเจรจาต่อรองด้วยตนเองได้ (ตัวอย่างเช่น เกี่ยวกับประเภทของอุปกรณ์ปลายทาง)
รายละเอียดสำคัญเกี่ยวกับการใช้งานร่วมกับอุปกรณ์เคลื่อนที่คือ แอปพลิเคชันบนมือถือสมัยใหม่จำนวนมากใช้งานได้กับอุปกรณ์เหล่านั้น พวกเขาวิเคราะห์ข้อความที่ส่งมาทีละตัวอักษรหรือทีละบรรทัดตามการกำหนดค่าวิธีการที่พบได้บ่อยที่สุดคือการวิเคราะห์ทีละบรรทัด ดังนั้นควรออกแบบโครงสร้างตัวแยกวิเคราะห์คำสั่งโดยคิดในแง่ของบรรทัดที่สมบูรณ์ซึ่งคั่นด้วย \r (ไม่ใช่ \n) แทนที่จะคิดในแง่ของอักขระแต่ละตัว
9. การใช้งานพร็อกซีและปัญหาเครือข่ายของเกม MUD ในเครือข่ายที่มีข้อจำกัด
ในบางสภาพแวดล้อม (เช่น เครือข่ายองค์กร มหาวิทยาลัย หรือผู้ให้บริการโทรศัพท์มือถือบางราย) พอร์ต MUD ที่มีค่าสูงโดยทั่วไปอาจเป็นดังนี้ ถูกบล็อกโดยไฟร์วอลล์ในกรณีเหล่านี้ ผู้เล่นพบว่าพวกเขาไม่สามารถเชื่อมต่อโดยตรงไปยังพอร์ต MUD ได้ แม้ว่า Telnet จะได้รับอนุญาตให้ใช้งานบนพอร์ตมาตรฐานก็ตาม
วิธีแก้ปัญหาแบบดั้งเดิมเกี่ยวข้องกับการใช้ พร็อกซีตัวกลางที่กำลังรอรับฟังบนพอร์ตที่อนุญาต (เช่น พอร์ต Telnet 23 หรือพอร์ต FTP 21) และส่งต่อการเชื่อมต่อไปยังพอร์ตจริงของเกม MUD พร็อกซีทำหน้าที่เป็นสะพานเชื่อม: ไคลเอนต์เชื่อมต่อกับพร็อกซี และพร็อกซีก็จะเปิดการเชื่อมต่อกับเซิร์ฟเวอร์เกมต่อไป
นอกจากนี้ ยังเป็นเรื่องปกติที่เพื่อนร่วมงานที่มีการเชื่อมต่ออินเทอร์เน็ตอย่างถาวรจะมีเพื่อนร่วมงานอีกคนด้วย ติดตั้งพร็อกซีบนเครื่องของคุณ และทิ้งผู้เล่นคนอื่นไว้ เข้าสู่ระบบ MUD โดยใช้ที่อยู่ IP ของคุณอย่างไรก็ตาม คุณต้องระมัดระวังเรื่องการใช้ IP ร่วมกัน: หากหลายบัญชีเชื่อมต่อจากที่อยู่ IP เดียวกัน เกม MUD บางเกมอาจตีความว่าเป็นการเล่นแบบผู้เล่นหลายคนอย่างผิดกฎหมายและลงโทษได้ ทางที่ดีควรแจ้งผู้ดูแลระบบเกมหากคุณวางแผนที่จะใช้ IP ร่วมกันอย่างต่อเนื่อง
10. ข้อจำกัดและความเสี่ยงของการใช้ตัวแทนแทน MUD
แม้ว่าพร็อกซีจะช่วยคุณได้ในเครือข่ายปิดมาก ๆ แต่ในปัจจุบัน พร็อกซีสาธารณะที่ไม่ระบุตัวตนที่น่าเชื่อถือมีอยู่ไม่มากนัก และเซิร์ฟเวอร์จำนวนน้อยที่เหลืออยู่ก็มักจะใช้งานเกินกำลัง ล่ม หรือถูกห้ามใช้งานด้วยเหตุผลด้านความปลอดภัย
นอกจากนี้ เครือข่ายเดียวกันที่บล็อกพอร์ตที่มีความถี่สูงก็สามารถบล็อกพอร์ตเหล่านั้นได้เช่นกัน พอร์ต 8080 ถูกบล็อกนี่เป็นเรื่องปกติมากสำหรับพร็อกซี HTTP ดังนั้น หากใครตั้งค่าพร็อกซีส่วนตัวเพื่อเข้าถึง MUD ควรตั้งค่าไว้ที่พอร์ตที่แทบจะไม่ถูกกรองเลย (เช่น 23, 21 หรือพอร์ตทั่วไปอื่นๆ ที่ได้รับอนุญาตในเครือข่ายนั้นๆ)
อย่าลืมว่าการตั้งค่าเหล่านี้มีผลกระทบด้านความปลอดภัย: การรับส่งข้อมูลจะผ่านเครื่องตัวกลาง เซสชัน รหัสผ่าน ฯลฯ สามารถถูกบันทึกไว้ได้ จากมุมมองการออกแบบเซิร์ฟเวอร์ MUD โปรโตคอลไม่ได้เปลี่ยนแปลง แต่คุณจะต้อง สมมติว่าการเชื่อมต่อจำนวนมากเข้ามาโดย "ถูกห่อหุ้ม" ผ่านพร็อกซีซึ่งอาจทำให้เกิดความล่าช้ามากขึ้นหรือการตัดการเชื่อมต่อบ่อยขึ้น
11. ตัวอย่างปฏิสัมพันธ์เชิงบรรยายภายในข้อความ MUD
นอกเหนือจากแง่มุมทางเทคนิคแล้ว เกม MUD ที่ใช้ข้อความนั้นมีพื้นฐานมาจาก... คำบรรยายที่ละเอียดและบรรยากาศเกมหลายเกมมีข้อความสั้นๆ ที่เป็นเอกลักษณ์ คำคมจากวรรณกรรม หรือบทกวีที่เซิร์ฟเวอร์ส่งไปยังไคลเอนต์โดยตรง เพื่อเพิ่มความสมจริงให้กับผู้เล่น
ตัวอย่างเช่น อาจมีข้อความ [ไม่ชัดเจน] ปรากฏบนหน้าจอ “บทสวดต่อต้านความกลัว” ข้อความนี้จะปรากฏขึ้นเมื่อตัวละครเผชิญกับช่วงเวลาสำคัญ ในทางเทคนิคแล้ว มันก็คือลำดับของบรรทัดข้อความที่มีการเว้นวรรคอย่างเหมาะสม และหากต้องการก็สามารถใส่สีหรือการจัดรูปแบบได้ แต่ในแง่ของประสบการณ์ผู้ใช้ มันมีผลกระทบอย่างมาก
ข้อความประเภทนั้น แม้ว่าจะไม่ได้เปลี่ยนแปลงโปรโตคอล Telnet แต่ก็สามารถกำหนดเงื่อนไขได้ตามที่คุณต้องการ จัดการระยะห่างระหว่างบรรทัด การแบ่งหน้า และการรีเฟรชหากคุณแสดงข้อความยาวๆ หลายย่อหน้าพร้อมกันในคราวเดียว อาจทำให้ไม่สามารถอ่านได้บนหน้าจอขนาดเล็ก (เช่น โทรศัพท์มือถือ) นั่นเป็นเหตุผลที่เซิร์ฟเวอร์หลายแห่งใช้ระบบ "การแบ่งหน้า" ซึ่งจะหยุดการแสดงผลหลังจากจำนวนบรรทัดที่กำหนด และรอให้ผู้เล่นกดปุ่มเพื่อดำเนินการต่อ
12. แหล่งข้อมูลภายนอกและเอกสารทางเทคนิคเพิ่มเติม
แตกต่างจากโปรโตคอลที่มีมาตรฐานสูงอื่นๆ ระบบนิเวศของ MUD ได้รับแรงขับเคลื่อนจาก... เอกสารกระจัดกระจาย ไฟล์ PDF ทางวิชาการ และบทความที่ไม่เป็นระเบียบ โดยจะอธิบายถึงรูปแบบต่างๆ ข้อเสนอต่อยอด และการศึกษาเกี่ยวกับการปฏิสัมพันธ์ในสภาพแวดล้อม MUD
มีผลงานวิจัยที่วิเคราะห์เรื่องนี้อยู่ในคลังข้อมูลของมหาวิทยาลัยและห้องสมุดดิจิทัล สถาปัตยกรรมแบบไคลเอ็นต์-เซิร์ฟเวอร์ของเกม MUD วิวัฒนาการจาก Telnet แบบดั้งเดิมไปสู่โปรโตคอลที่หลากหลาย...และแม้แต่ปัญหาด้านประสบการณ์ผู้ใช้ในอินเทอร์เฟซข้อความ แม้ว่าเอกสารเหล่านี้จำนวนมากไม่ได้สอนวิธีการจัดรูปแบบข้อความทีละบรรทัด แต่ก็ให้บริบทที่เป็นประโยชน์สำหรับการทำความเข้าใจว่าเหตุใดจึงมีการนำโปรโตคอลบางอย่างมาใช้และวิธีการรวมโปรโตคอลเหล่านั้นเข้าด้วยกัน
เพื่อเสริมการดำเนินการให้สมบูรณ์ ควรตรวจสอบเพิ่มเติมด้วย เอกสารประกอบเกี่ยวกับลูกค้า MUD ยอดนิยม (ทั้งบนเดสก์ท็อปและมือถือ) ซึ่งโดยปกติแล้วจะมีการระบุรายละเอียดว่ารองรับส่วนขยายใดบ้าง (GMCP, MXP, MSDP เป็นต้น) รองรับชุดอักขระใด จัดการสี ANSI อย่างไร และมีข้อจำกัดอะไรบ้างบนหน้าจอขนาดเล็ก
13. โดเมนและชื่อโฮสต์จำนวนมหาศาล: ความวุ่นวายที่เห็นได้ชัดของโครงสร้างพื้นฐาน
หากคุณเคยตรวจสอบบันทึก DNS ของผู้ให้บริการโฮสติ้งรายใหญ่ คุณจะเห็นรายชื่อมากมาย เช่น www, mail, ftp, webmail, smtp, pop3, imap, panel, cpanel, admin, dev, test และรูปแบบอื่นๆ อีกมากมายแม้ว่าอาจดูเหมือนเป็นเสียงรบกวน แต่สิ่งนี้สะท้อนให้เห็นถึงโครงสร้างพื้นฐานที่รองรับเกม MUD และบริการที่เกี่ยวข้องจำนวนมากว่ามีการจัดระเบียบอย่างไร
สามารถเชื่อมโยงโดเมนย่อยหลายร้อยโดเมนเข้ากับโดเมนหลักเพียงโดเมนเดียวได้: เซิร์ฟเวอร์ฐานข้อมูล, เครื่องทดสอบ, พร็อกซี, โหลดบาลานเซอร์, บริการสถิติ, แพลตฟอร์มอีเมล, พื้นที่จัดเก็บข้อมูล, VPN…และบ่อยครั้งที่มันคือพอร์ตเดียวกันกับที่เกม MUD กำลังรับฟังอยู่ ในบางกรณี เกมจะอยู่บนโดเมนย่อยที่แยกต่างหาก ในขณะที่บางกรณี มันใช้ที่อยู่ IP ร่วมกับบริการต่างๆ มากมาย ตั้งแต่ฟอรัมไปจนถึงวิกิและแผงควบคุมการจัดการ
การมีชื่อมากมายเช่นนี้มีความเกี่ยวข้องหากคุณกำลังคิดถึงเรื่องนี้ เผยแพร่เกม MUD ของคุณบนเซิร์ฟเวอร์ที่ใช้ร่วมกัน หรือในการตั้งค่าพร็อกซีเฉพาะสำหรับผู้เล่น: คุณจะต้องประสานงานอย่างระมัดระวังว่าโดเมนย่อยใดชี้ไปยังเครื่องใด พอร์ตใดเปิดอยู่ และการจัดการความปลอดภัยเป็นอย่างไร เพื่อไม่ให้การรับส่งข้อมูล Telnet ปะปนกับบริการสำคัญอื่นๆ อย่างอันตราย
14. ข้อควรพิจารณาเชิงปฏิบัติสำหรับลูกค้า Telnet ที่ใช้งานผ่านอุปกรณ์เคลื่อนที่
เพื่อเล่นหรือพัฒนาด้วย ไคลเอนต์ Telnet บนมือถือ สิ่งนี้เพิ่มความซับซ้อนอีกระดับหนึ่ง ได้แก่ หน้าจอขนาดเล็ก แป้นพิมพ์แบบสัมผัส การตัดการเชื่อมต่อเครือข่ายที่อาจเกิดขึ้นบ่อยครั้ง และบางครั้งข้อจำกัดจากตัวลูกค้าเองเกี่ยวกับการรองรับส่วนขยาย
ในการออกแบบเซิร์ฟเวอร์ MUD ของคุณ โปรดคำนึงถึงประเด็นสำคัญต่อไปนี้:
- หลีกเลี่ยงการต่อแถวยาวเกินไปควรเขียนเป็นย่อหน้าสั้นๆ เพื่อให้ผู้ใช้ไม่ต้องเลื่อนหน้าจอไปมา
- ลดการใช้รหัส ANSI ให้เหมาะสม และต้องแน่ใจว่าพวกเขาจะไม่เปลี่ยนแปลงรูปแบบการจัดวางสำหรับลูกค้าที่ไม่สามารถตีความได้ดี
- ควรจัดการเรื่องการกำหนดหมายเลขหน้าอย่างระมัดระวัง เพื่อให้ประสบการณ์นั้นไม่ใช่กำแพงข้อความที่ยากจะเข้าใจ
- ดำเนินการเชื่อมต่อใหม่แบบนุ่มนวลบนอุปกรณ์เคลื่อนที่ การสูญเสียสัญญาณและการเชื่อมต่อใหม่เกิดขึ้นได้ง่าย เซิร์ฟเวอร์ของคุณควรสามารถรองรับสถานการณ์นี้ได้โดยไม่ตัดการเชื่อมต่อของผู้เล่นเมื่อเกิดการขัดจังหวะเพียงชั่วครู่
แอปพลิเคชันบนมือถือบางตัวที่เชี่ยวชาญด้านเกม MUD นั้นมีฟังก์ชันรองรับ GMCP และส่วนขยายอื่นๆ อยู่แล้ว ดังนั้นหากคุณติดตั้งส่วนขยายเหล่านั้นบนเซิร์ฟเวอร์ คุณก็จะสามารถใช้งานได้ นำเสนอข้อมูลที่มีโครงสร้างซึ่งลูกค้าสามารถแสดงผลได้ในรูปแบบแดชบอร์ด แถบแสดงสถานะสุขภาพ หรือแผนที่แบบย่อ และสื่อภาพอื่นๆ ที่วางอยู่เหนือข้อความแบบดั้งเดิม
15. สร้างเซิร์ฟเวอร์ MUD ของคุณเองให้สามารถใช้งานร่วมกับไคลเอนต์ที่มีอยู่ได้
หากคุณตัดสินใจที่จะสร้างเซิร์ฟเวอร์ MUD ของตัวเองตั้งแต่เริ่มต้น กุญแจสำคัญในการหลีกเลี่ยงความโดดเดี่ยวคือ ให้เกียรติ Telnet ในฐานะเลเยอร์พื้นฐาน และเจรจาตัวเลือกของคุณอย่างถูกต้องคุณไม่จำเป็นต้องคิดค้นโปรโตคอลใหม่ แต่ให้ปฏิบัติตามหลักการที่ได้รับการพิสูจน์แล้วว่าได้ผล
โดยสรุป เพื่อให้ใช้งานร่วมกับลูกค้าส่วนใหญ่ได้ คุณควรทำดังนี้:
- การดำเนินการ การวิเคราะห์คำสั่ง Telnet (IAC, ทำ, ไม่ทำ, จะ, จะไม่ทำ, SB, SE)
- ควรรองรับตัวเลือกทั่วไปอย่างน้อยบางส่วน: เสียงสะท้อน, การระงับเสียงสะท้อนเฉพาะที่, GMCP หากคุณต้องการข้อมูลที่ครบถ้วนมากขึ้น และอาจต้องการการบีบอัดข้อมูลด้วย
- ส่ง ข้อความในรูปแบบที่ใช้งานง่ายCRLF, ANSI เป็นตัวเลือกเสริม โดยไม่ต้องใช้บรรทัดขนาดใหญ่เกินไป
- รับข้อมูลป้อนเข้าในโหมดออนไลน์และจัดการกับการขึ้นบรรทัดใหม่ที่ส่งมาจากอุปกรณ์เคลื่อนที่อย่างถูกต้อง
จากตรงนี้ คุณสามารถขยายเซิร์ฟเวอร์ของคุณด้วยโปรโตคอลเพิ่มเติม หรือแม้แต่ด้วยไคลเอ็นต์ของคุณเอง แต่การเริ่มต้นจากฐานนี้จะช่วยให้คุณ ทดสอบเกมของคุณด้วยไคลเอนต์ Telnet ที่มีอยู่ และใช้ประโยชน์จากระบบนิเวศทั้งหมดที่ถูกสร้างขึ้นรอบๆ เกม MUD ตลอดหลายปีที่ผ่านมา
ทั้งหมดนี้เกี่ยวกับ Telnet, ส่วนขยาย, พร็อกซี, ชื่อโฮสต์ และกลไกเฉพาะของไคลเอนต์บนมือถือ อาจดูซับซ้อนในตอนแรก แต่ถ้าคุณลองแยกย่อยทีละขั้นตอน คุณจะเห็นว่าแก่นแท้ของมันค่อนข้างง่าย นั่นคือการไหลของข้อความที่มีลำดับการควบคุมที่กำหนดไว้อย่างชัดเจนไม่กี่อย่าง การเข้าใจวิธีการสร้างข้อความ วิธีการเจรจาต่อรองตัวเลือก และสิ่งที่ไคลเอนต์ทั่วไปคาดหวัง จะช่วยให้คุณเข้าใจระบบได้อย่างถ่องแท้ เครื่องมือที่จำเป็นในการสร้างเซิร์ฟเวอร์ MUD ที่แข็งแกร่ง เข้ากันได้ และสนุกสนาน ซึ่งสามารถเข้าถึงได้จากไคลเอนต์ Telnet ใดๆ ไม่ว่าจะเป็นบนอุปกรณ์เคลื่อนที่หรือคอมพิวเตอร์เดสก์ท็อป.

