ฉันค่อนข้างมั่นใจว่า Source Engine เป็นเอ็นจิ้นเดียวที่จะรองรับสิ่งนี้นอกกรอบ คุณสามารถอ่านเกี่ยวกับปัญหาทางเทคนิคในบทความที่ฉันพบใน Gamasutraซึ่งคัดลอกมาที่นี่สำหรับผู้อ่านในอนาคต:
ปัญหาอีกอย่างที่เราเจอคือต้องเปลี่ยนระบบที่อิงตามระยะทางเช่นระดับของรายละเอียด (LOD) สำหรับโมเดลเพราะเกมของเราระยะทางนั้นสัมพันธ์กับตำแหน่งของพอร์ทัล
ซึ่งหมายความว่าการคำนวณระยะทางกลายเป็นตัวเลือกของสามบรรทัดที่เชื่อมต่อสองจุดแทนที่จะเป็นเพียงหนึ่งบรรทัด นอกจากนี้แนวสายตาสามารถผ่านพอร์ทัลเดียวมากกว่าหนึ่งครั้งเพื่อให้บรรลุเป้าหมาย
Source Engine ทำการเพิ่มประสิทธิภาพการมองเห็นที่คำนวณไว้ล่วงหน้าจำนวนมากสำหรับการเลือกสรร การอนุญาตให้ผู้ใช้เชื่อมโยงการมองเห็นออกจากพอร์ทัลเพิ่มความซับซ้อนอีกระดับ
เพื่อการเรนเดอร์ที่ดีขึ้นเราได้ใช้วิธีการวาด stencil buffer สำหรับมุมมองพอร์ทัลซึ่งทำให้เรามีความยืดหยุ่นมากสำหรับการจัดการความลึกของการเรียกซ้ำพอร์ทัล สิ่งนี้ทำให้เราสามารถสร้างพอร์ทัลที่มีจำนวนลึกมาก (จำกัด เฉพาะการแสดง) ซึ่งทำให้โถงทางเดิน "ไม่มีที่สิ้นสุด" ของเราดูเรียบร้อย
การวาดลายฉลุยังช่วยเราแก้ปัญหาการรวมเข้ากับเทคโนโลยีอื่น ๆ ในเอ็นจิน Source เช่น HDR บาน เนื่องจากเราต้องทำให้ฉากของเราเพิ่มอีกสองเท่าสำหรับพอร์ทัลของเราเราจึงทุ่มเทความพยายามอย่างมากในการทำให้พอร์ทัลเรนเดอร์แสดงผลเร็วที่สุดเท่าที่จะเป็นไปได้เช่นมุมมองพิเศษ frustum culling ขึ้นอยู่กับขอบของพอร์ทัล "
ฉันยังจำการอ่านบางแห่งว่ามีกรณีพิเศษมากมายเช่นมีพอร์ทัลอยู่ฝั่งตรงข้ามของบล็อกเดียวกัน การสร้างพอร์ทัลไม่ใช่เรื่องง่าย
แก้ไข:
พบบทความที่ดีอื่น ๆ ที่มี:
เรารู้ได้อย่างรวดเร็วว่าเราต้องการวิธีที่มีประสิทธิภาพมากขึ้นสำหรับการเรนเดอร์พอร์ทัลและทำให้ผู้เล่นและวัตถุอื่น ๆ สามารถเคลื่อนไหวระหว่างกันได้อย่างราบรื่น สิ่งนี้ต้องการให้เราขุดลึกลงไปในโค้ดการเรนเดอร์และฟิสิกส์ของเอ็นจินซอร์สและเราต้องเขียนโปรแกรมระบบพอร์ทัลของเราเอง
โดยพื้นฐานแล้วเราต้องบอกให้ระบบฟิสิกส์ต้นทางทำการสร้างหลุมชั่วคราวที่ด้านหนึ่งของกำแพงและทุกสิ่งที่อยู่เบื้องหลังพอร์ทัลนั้นเชื่อมต่อกับเรขาคณิตในส่วนอื่นของแผนที่ การใช้สิ่งนี้เพื่อทำงานและปรับแก้ปัญหาให้เหมาะสมในเวลาจริงเป็นความท้าทายที่สำคัญ