เช่นเดียวกับการสาธิต Beyond the Dark การตัดสินใจขั้นแรกของเราคือการเล่าเรื่องและการเล่นเกมให้มากที่สุดภายในโลกของเกมเอง นี่อาจเป็นกระบวนการที่ยากเมื่อคุณต้องการสมดุลระหว่างการสื่อสารความก้าวหน้าไปยังผู้เล่นผ่านทางส่วนติดต่อผู้ใช้ในขณะที่ทำให้พวกเขารู้สึกว่าพวกเขาอยู่ภายในโลกที่คุณสร้างขึ้นจริงๆ เพื่อให้บรรลุเป้าหมายเหล่านี้ในประสบการณ์ของเรา เราจึงแบ่งวิธีการสื่อสารข้อมูลกับผู้เล่นออกเป็นสี่เทคนิค:
- สัญญาณภาพ - วัตถุ ภาพ หรือการจัดเรียงของทรัพยากรที่ช่วยเสริมเรื่องราวหรือให้ข้อมูลแก่ผู้เล่นเมื่อมันมีความเหมาะสมกับโลก
- เรื่องราว - เมื่อผู้เล่นคลิก/แตะที่วัตถุเฉพาะในบ้าน ข้อมูลเรื่องราวที่สำคัญจะแสดง บนหน้าจอทั้งหมด การเล่านี้จะมองเห็นได้เฉพาะผู้เล่นที่คลิก/แตะวัตถุนั้น เสียงข้อความให้ข้อมูลในโทนและการพูดที่เป็นข้อมูลเสมอ
- ฟองความคิด - เมื่อผู้เล่นคลิก/แตะที่วัตถุเฉพาะในบ้าน ข้อความ "ปฏิกิริยา" จะปรากฏ ใกล้วัตถุ การเล่านี้จะมองเห็นได้เฉพาะผู้เล่นที่คลิก/แตะวัตถุนั้น โทนเสียงจะเป็นแบบบุคคลที่หนึ่งและสังเกตการณ์เสมอ
- การประกาศ - เมื่อผู้เล่นคลิก/แตะที่วัตถุที่มีการบิดเบือนในบ้าน ข้อความในบุคคลที่สามจะแสดง บนหน้าจอของผู้เล่นทุกคนในคราวเดียว การเล่านี้บางครั้งจะเปลี่ยนผู้เล่นทุกคนไปยังสถานะที่บิดเบือนของห้องที่พวกเขาอยู่
ในส่วนนี้ เราจะสาธิตว่าเราใช้เทคนิคเหล่านี้และฟีเจอร์เฉพาะอย่างไรเพื่อทำให้ผู้เล่นตื่นตาตื่นใจในเรื่องราวของเราในขณะที่ยังส่งเสริมการสำรวจ สื่อสารความก้าวหน้า และทำให้การเล่นเกมทั้งใกล้ชิดกับผู้เล่นแต่ละคนและยุติธรรมในประสบการณ์หลายผู้เล่น



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


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

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

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




เราเคยใช้ Highlight สำหรับทุกวัตถุที่ผู้เล่นสามารถโต้ตอบได้ แต่เสียงรบกวนที่ปรากฏนั้นรบกวนเกินไปและผู้เล่นจะไม่รู้ว่าต้องโต้ตอบกับอะไรเพื่ออ่านเรื่องราว เราจึงตัดสินใจที่จะใช้เพื่อไฮไลต์เฉพาะรายการที่มีการบิดเบือนหรืออาจอันตราย และการตอบรับทางภาพนี้ช่วยให้ผู้เล่นสามารถขับเคลื่อนเรื่องราวไปข้างหน้าได้อย่างง่ายดาย

หลังจากที่ผู้เล่นคลิกที่วัตถุที่มีเรื่องราว เราจำเป็นต้องมีวิธีในการแสดงข้อมูลบนส่วนบนของหน้าจอ เราจึงตัดสินใจสร้างโอเวอร์เลย์โดยใช้ ScreenGui เป็นตัวเก็บ UI บนหน้าจอของเราด้วย Frame เด็กเพื่อควบคุมขนาดและการปรับขนาดของ TextLabels และ ImageLabels ของมัน เราได้ตั้งค่าตำแหน่งและขนาดของคุณสมบัติ TextLabels และ ImageLabels เพื่อให้พวกมันจัดวางเข้ากันได้อย่างสวยงามและจะปรับขนาดสำหรับอุปกรณ์ที่แตกต่างกันที่ผู้เล่นใช้เพื่อเข้าถึงประสบการณ์นี้

TextLabels และ ImageLabels จะมีผลต่อองค์ประกอบทางภาพของข้อความและภาพของพวกเขา รวมถึงสี ความโปร่งใส ขนาด และการจัดเรียง สำหรับ TextLabels โดยเฉพาะ คุณสามารถปรับค่าคุณสมบัติ TextLabel.TextScaled และ TextLabel.RichText เพื่อควบคุมเลย์เอาต์และสไตล์ภาพของข้อความ TextLabel.TextScaled ช่วยให้คุณปรับขนาดข้อความให้เติมเต็มพื้นที่ทั้งหมดขององค์ประกอบ UI มารดา และ TextLabel.RichText ช่วยให้คุณใช้แท็กการทำเครื่องหมายอย่างง่ายเพื่อจัดรูปแบบส่วนต่างๆ ของข้อความให้เป็นตัวหนา ตัวเอียง สี หรือแม้แต่ฟอนต์ที่แตกต่างกัน

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

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

ในการสร้างฟองความคิด เราได้เชื่อมโยง BillboardGui พร้อมด้วย TextLabel ที่เป็นเด็กกับวัตถุที่ไม่ใช่เรื่องราว ซึ่งช่วยให้เราสามารถแสดงบทสนทนาในพื้นที่ 3D ใกล้วัตถุได้โดยไม่ต้องมีข้อความกินพื้นที่ทั้งหน้าจอ คล้ายกับกระบวนการของเราที่สร้างเรื่องราว เราใช้คุณสมบัติ TextLabel.RichText เพื่อจัดรูปแบบข้อความและเพิ่มเอฟเฟกต์ทางภาพ เช่น สิ่งมีชีวิตจากโลกอื่นที่มาขัดจังหวะความคิดของผู้เล่นเอง ต่อไปนี้คือตัวอย่าง HTML RichText ที่ใช้ในการทำให้ภาพด้านล่าง
"What is…this…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....hunger….void….pull…</i></font></font></stroke>

โดยการใช้ TextLabels แทนภาพ เราทำให้ข้อความสามารถอ่านได้โดย Roblox และเราสามารถแปลข้อความนี้เป็นภาษาต่างๆ โดยอัตโนมัติและทำให้เข้าถึงผู้เล่นมากขึ้นโดยไม่ต้องทำอะไรเพิ่มเติม! สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการนี้ ดูที่ การแปลโดยอัตโนมัติ.
การประกาศ
ในขณะที่เราต้องการให้ตัวละครของผู้เล่นมีปฏิกิริยาต่อโลก เราก็ต้องการให้โลกเป็นปฏิกิริยาต่อการมีอยู่ของพวกเขาเช่นกัน เพื่อให้บรรลุเป้าหมายนี้ เราได้รวมการประกาศ หรือบทสนทนาในบุคคลที่สาม ที่แสดง บนหน้าจอของผู้เล่นทุกคนในคราวเดียว คล้ายกับเรื่องราว เราได้สร้างการประกาศโดยใช้ ScreenGui เป็นตัวเก็บ UI บนหน้าจอของเราด้วย TextLabel เด็ก นอกจากนี้เรายังได้ใช้คุณสมบัติ TextLabel.RichText เพื่อเปลี่ยนสี ขนาด และฟอนต์ของบทสนทนาเพื่อช่วยส่งเสริม "เอนทิตี" ที่แตกต่างกันที่พูดกับผู้เล่นในบ้าน



โดยการใช้คุณสมบัติ TextLabel.RichText และการให้คำสั่ง HTML บางอย่างในนั้นเพื่อขับเคลื่อนการเปลี่ยนแปลง เรายังสามารถทำการเปลี่ยนแปลงในระหว่างประโยคได้! ตัวอย่างเช่น การทำเครื่องหมายข้อความที่มีรวยนี้ทำให้เราสามารถขัดจังหวะปฏิกิริยาของตัวละครผู้เล่นด้วยความคิดของสิ่งมีชีวิตที่บิดเบือน:
What is…this…<br/><stroke color="#dcc7ff" joins="miter" thickness="2" transparency="0.5"><font size="60"><font color="rgb(10,8,11)"><i>....hunger….void….pull…</i></font></font></stroke>

เรามีการประกาศประเภทนี้หลายรายการ ซึ่งเป็นผลมาจากปริมาตรของส่วนที่มองไม่เห็นที่ผู้เล่นเดินเข้าไป หรือจากการบรรลุเป้าหมายบางอย่าง เพื่อหลีกเลี่ยงการใช้ ScreenGuis แต่ละรายการจำนวนมาก เราจึงใช้สคริปต์แยกในเดโมที่อนุญาตให้เราจัดเตรียมข้อความที่สคริปต์จะเพิ่มเข้าไปในวัตถุเดี่ยวที่เราชื่อว่า StoryNote ในโฟลเดอร์ PlayerGui ของเรา วัตถุนี้เป็น ScreenGui เดียวที่มี TextLabel เด็ก โดยการใช้สคริปต์ เราสามารถแทรกวลีใด ๆ ที่เราต้องการโดยตรงลงใน TextLabel เดียว ทำให้สะดวกในการทำการเปลี่ยนแปลงเมื่อเราพบวิธีการและสิ่งที่เราต้องการจะสื่อสารกับผู้เล่น!


