ความหมายของคำว่า Real-time ปูพื้นฐานก่อนสร้างเกมกับ Unity

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

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

ดังนั้นเรามาเริ่มในส่วนของพื้นฐานที่ Unity Learn สอนเรากันดีกว่าครับ โดยพื้นฐานในส่วนนี้อยู่ในหัวข้อการเรียนการสอนที่ชื่อว่า Foundations: Explore Unity ที่จะมาสอนว่าตัว Unity เกี่ยวกับรายละเอียดดังต่อไปนี้ครับ

  • เรียนรู้ว่า Unity คืออะไรและมันทำงานอย่างไร
  • สำรวจบทบาทหน้าที่ที่แตกต่างกันระหว่างมือสมัครเล่นและมืออาชีพที่ใช้ Unity ในสายงานที่แตกต่างกัน
  • สร้างประสบการณ์ 2D และ 3D แบบ real-time ง่ายๆ ตั้งแต่เริ่มเพื่อพัฒนาองค์ความรู้เกี่ยวกับตัว Unity Editor และบทบาทของการเป็นนักสร้างสรรค์ Unity

Real-time หมายความว่าอะไร?

เหนือสิ่งอื่นใดเลยครับทาง Unity จะพาเราไปรู้จักกับเรื่องพื้นฐานของพื้นฐานกันนั่นคือความหมายของคำว่า “real-time” ครับ ซึ่งผู้เขียนเชื่อว่าท่านผู้อ่านก็คงจะได้ยินคำคำนี้ถูกนำมาใช้หลายครั้งในแวดวงอุตสาหกรรมการสร้างสรรค์ต่างๆ แต่จริงๆ มันก็ไม่ค่อยจะมีการอธิบายความหมายของมันออกมาอย่างชัดเจนใช่มั้ยล่ะครับ? แล้วทำไม Unity ถึงอยากให้เรารู้จักกับคำว่า real-time กันก่อนล่ะ? คำตอบง่ายๆ ก็คือมันเป็นหนึ่งในความสามารถที่เป็นตัวชูโรงของ Unity นั่นเองครับที่ทำให้ผู้ในทุกแวดวงอุตสาหกรรมใช้งานสามารถสร้างสภาพแวดล้อมที่ต้องการแบบ real-time ได้ แต่ทำไม real-time ถึงมีความสำคัญมากๆล่ะ เรามาหาคำตอบไปพร้อมกันเลยดีกว่าครับ

นิยามของคำว่า Real-time

นิยายของคำว่า real-time หมายถึงความเร็วของการที่ตัวภาพจะถูกเรนเดอร์หรือนำภาพมาแสดงบนหน้าจอ ซึ่งเป้าหมายของซอฟต์แวร์แบบ real-time ก็คือการที่ทำให้ตัวภาพนั้นสามารถถูกแสดงผลบนหน้าจอ (เรนเดอร์) ได้อย่างรวดเร็วจนผู้ใช้งานที่มีปฏิสัมพันธ์ด้วยนั้นไม่ตระหนักถึงความดีเลย์ใดๆ ซึ่งการฉายภาพหรือตัวแอปพลิเคชันมีการทำงานแบบ real-time ผู้ใช้งานจะไม่ตระหนักได้เลยว่าอันที่จริงแล้วพวกเขากำลังมองลำดับภาพที่มีการอัปเดตอย่างต่อเนื่อง ซึ่งตัวผู้ใช้งานเองก็จะไปให้ความสำคัญกับตัวเนื้อหาที่อยู่บนการฉายภาพหรือแอปพลิเคชันเหล่านั้นเอง ซึ่ง Unity เองก็มีการทำงานแบบ real-time ทั้งฝั่งของตัวผู้สร้างสรรค์ และตัว end-user หรือผู้ใช้งานด้วย

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

สำหรับการเรนเดอร์ในรูปแบบนี้มันถูกเรียกว่าการแบบ offline rendering ที่ในปัจจุบันก็ยังคงมีการใช้งานกันอยู่กับสื่อที่ไม่จำเป็นต้องมีการปฏิสัมพันธ์ด้วย (non-interactive media) ตัวอย่างเช่น ภาพยนตร์ นั่นเองที่สุดท้ายแล้วตัวผลิตภัณฑ์ก็จะออกมาในรูปของชุดลำดับภาพชุดหนึ่งที่ไม่มีความจำเป็นต้องมีการเปลี่ยนแปลงแล้ว แต่การทำ offline rendering ไม่สามารถนำมาใช้กับสื่อที่ต้องมีการปฏิสัมพันธ์ด้วยได้ (interactive media) ตัวอย่างเช่น วิดีโอเกม นั่นแหละครับ ที่ตัวของผู้ใช้จะมีความคาดหวังไว้ว่าพวกเขาสามารถควบคุมในสิ่งที่ต้องการจะทำได้ ซึ่งเทคโนโลยีการเรนเดอร์แบบ real-time นั้นได้เติบโตขึ้นเพื่อตอบสนองกับความต้องการที่จะมีปฏิสัมพันธ์กับผู้เล่น ในช่วงยุคเริ่มแรกของการเรนเดอร์แบบ real-time นั้นตัวผู้สร้างอาจจะต้องเสียสละคุณภาพของตัวผลงานไป ไม่ว่าจะเป็นการแสดงผลทางด้านภาพ, ความซับซ้อนของแอนิเมชัน และเอฟเฟกต์พิเศษต่างๆ แต่เมื่อหน่วยประมวลผลของคอมพิวเตอร์ที่มีวิวัฒนาการขึ้นทุกวัน มันก็เริ่มลดช่องว่างของการเรนเดอร์แบบ real-time และ offline rendering ลงเรื่อยๆ และทำให้ในทุกวันนี้มันก็เริ่มสามารถเรนเดอร์แบบ real-time โดยที่ได้คุณภาพของภาพออกมาราวกับภาพถ่ายได้แล้ว

เครื่องมือแบบ real-time ถูกใช้งานอย่างไร?

ในทุกวันนี้ตัวโปรแกรม Unity มันมีความสามารถที่เหนือกว่าการจำลองโลกแห่งความเป็นจริงไปแล้วครับ และมันก็ยังสามารถเรนเดอร์วัสดุและแสงได้อย่างถูกต้องตามหลักฟิสิกส์จากภายในตัว editor อีกด้วย ซึ่งในทุกวันนี้หากมันมีภาพฉายที่บิดเบี้ยวไปจากสิ่งที่เราเห็นในโลกแห่งความเป็นจริงก็คงต้องบอกว่ามันเป็นการตัดสินใจที่มาจากการออกแบบของทางผู้สร้างมากกว่าข้อจำกัดที่ตัว Unity มี ตัวอย่างเช่นหนังสั้น The Heretic ที่ทาง Unity ได้ปล่อยออกมานั้นก็เป็นตัวอย่างที่ชี้ให้เห็นได้ว่าการเรนเดอร์แบบ real-time ของ Unity นั้นมีศักยภาพขนาดไหนในปัจจุบันนี้

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

Share this article
0
Share
0 Share
0 Tweet
0 Share
0 Share
Shareable URL
0
Share