จู่ ๆ นักพัฒนาเกมอินดี้เปิดเผยหนึ่งความลับที่เลวร้ายที่สุดในวงการเกม หลังจากที่ยอมรับว่าแถบ Loading ในวิดีโอนั้นเป็นของปลอม ประเด็นนี้เริ่มมาจากคุณ Alasdair Beckett-King โพสต์แบบติดตลกในทวีตเตอร์ว่า “นักพัฒนาเกมมักจะให้ความสำคัญกับการเคลื่อนไหวของแถบโหลดให้สัมพันธ์กับเวลาที่เกมใช้โหลดสิ่งต่าง ๆ พอทำกระบวนการนี้เสร็จ พวกเขาถึงค่อยเริ่มทำงานในส่วนกราฟฟิก หรืออื่น ๆ ของเกม” หลังจากนั้นก็มีนักพัฒนาเกมตัวจริงเข้ามายืนยันหลายคนว่าแถบการโหลดในเกมส่วนใหญ่เป็นของปลอม
รูปจากเกม Metal Gear Solid 4 ตัวอย่างเกมที่มีฉากการโหลด
Vladimir Bogdanic นักพัฒนาเกมของ Croatian Studio ที่มีผลงานอย่าง Eye in the Dark บอกว่า “เราใส่หน้าแถบโหลดเข้าไป และให้มันหยุดชั่วคราวครั้งละ 5 วินาที เพราะเราต้องเปลี่ยนเข้าสู่ฉากในเกมได้อย่างแนบเนียน แม้ว่าบางทีเกมจะโหลดเสร็จทันทีก็ตาม”
“หน้าจอโหลดแผนที่แบบสุ่มในเกม Age of Empires ผมเคยเขียนให้แถบโหลดเด้งไป 20% ซึ่งให้ความรู้สึกว่าเหมาะสมกับบทในสคริปต์” Greg Street อดีตนักพัฒนาเกมที่เคยพัฒนา Age of Empires และ World of Warcraft กล่าว
แต่ก็ใช่ว่าจะมีแต่นักพัฒนาที่จะเข้ามายืนยันว่าจริง Mike Dailly หนึ่งในผู้สร้าง Grand Theft Auto ดั้งเดิมได้ตอบกลับว่า “ผมไม่เคยทำแถบปลอม อันที่จริงผมพยายามทำอย่างเต็มที่ให้แถบโหลดมันถูกต้อง และราบรื่นมากที่สุด แต่เอาจริงนะผมโคตรเกลียดแถบโหลดที่ค้างอยู่ที่ 20% เป็นชาติ แล้วอยู่ ๆ ก็เด้งไป 100% เลย”
ยุคนี้หน้าจอโหลดเกมอาจจะดูมีความสำคัญน้อยลงไปบ้างจากการมาของ SSD และดาวน์โหลดแบบดิจิทัลที่แพร่หลายมากขึ้น ซึ่งถ้าเราไปเปิดเกมเก่า ๆ จะเห็นว่าแถบการโหลดจะไม่สัมพันธ์กับความเป็นจริงจนเหมือนแถบโหลดค้างอยู่กลางทาง ทั้ง ๆ ที่โหลดเสร็จแล้ว
Game developers need to invent a loading bar that moves at an even speed, reflecting the amount of time a game will take to load. Once that's done, they can start working on graphics, jumping etc.
— Alasdair Beckett-King (@MisterABK) June 28, 2023
I've never faked one. In fact, I've gone out of my way to try and make it as "correct" and as smooth as possible...Probably because I've always hated the windows ones, where it'd sit for ages at like 20% then jump to 100%.So I make the effort wherever possible....
— Mike Dailly™ 🏴🇺🇦💙 (@mdf200) June 29, 2023
ที่มา - Rock Paper Shotgun
Comments
ก็ว่าทำไมแปลกๆ ตอนโหลด
นึกถึงเคสค่ายเกมญี่ปุ่นจดสิทธิบัตรมินิเกมตอนโหลตแผ่นฟ้องแล่วเอามาฟ้องร้องค่ายอื่น
ล่าสุดที่เจอหลอดโหลดปลอม ก็คือใน Stable Diffusion Web UI ตอนที่โหลดโมเดลเข้ามา จะเจอว่า ETA บอก จะโหลดเสร็จใน 5 วินาทีนะ แล้วเกจเวลามันก็ค่อย ๆ เลื่อนจนเต็มใน 5 วินาที แต่ความจริงคือมันใช้เวลาโหลดประมาณ 30 วินาที ด้วยสาเหตุว่า ผมเอาโมเดลไปใส่ในฮาร์ดดิสก์จานหมุน 5555
ส่วนตัวคิดว่า ไอ้แถบโหลดนี่ ขึ้นกับว่าจะแทร็คโปรเกรสยังไง ปัญหาคือในฉากโหลดที่เราเห็นมันไม่ได้ทำแค่โหลดข้อมูล มันมีทั้งการ Decompression, shader compile, เตรียมข้อมูลโน่นนั่นนี่ ฯลฯ และทุกอย่างมันไม่ได้ใช้เวลาเท่ากัน และการแทร็คโปรเกรสเองบางทีมันก็ไม่ง่าย อย่างเรื่องการอัพโหลด Texture ไปบน GPU เองมันก็แทร็คไม่ได้ว่าอัพโหลดไปแล้วกี่ไบท์ แล้วเหลืออีกกี่ไบท์
(Texture ขนาด 4K หนึ่งผืน ที่ BC5 compression มีขนาดประมาณ 22MB ถ้าจำไม่ผิด ใหญ่ขนาดนี้เราไม่สามารถที่จะแบบสั่งโหลดแล้วคาดหวังว่ามันจะเสร็จทันทีได้ ก็ใช้เวลาเป็นหลักมิลลิวินาทีอยู่เหมือนกัน แล้วคิดเล่น ๆ ได้ก็ได้ว่าเกมนึงใช้ texture กี่ผืนในหนึ่งฉาก)
แต่พอไปคุยกับฝ่าย UX เค้าก็จะบอกว่า เอาแถบโหลดแบบโหลดลื่น ๆ ตั้งแต่ต้นยันจบได้มั้ย มันก็เลยไปจบที่ว่า เอ้า งั้นใช้นาฬิกาจับเวลาเลยว่าปรกติมันจะใช้เวลาเท่าไหร่ แล้วก็ทำอนิเมชั่นยาวแค่นั้นแหละ จบ
คนใช้พีซีก็จะเหนื่อยนิดนึง เครื่องแต่ละเครื่องก็ใช้เวลาไม่เท่ากัน บางทีหลอดยังไม่เต็มแม่มโหลดเสร็จแล้ว บางทีหลอดทะลุไปแล้วฉากยังไม่เปลี่ยนสักที
เรื่องฉากโหลดหลอกก็จะมีความจำเป็นแหละ แบบบางทีฉากโหลดมันมีอนิเมชั่น เฟดอิน เฟดเอาท์ อะไรพวกนี้ จะให้แบบเฟดอินมาครึ่งทางแล้วสลับไปเข้าเกมเลยมันก็ดูประหลาด เดี๋ยว UX จะกริ้วเอาอีก ก็เอ้า ให้มันมีนานขึ้นมาอีกหน่อยก็ได้ฟะ อะไรแบบนี้ครับ
ฉากโหลดที่ทำง่ายสุดเป็นอันดับสอง คือ ทำให้มันหมุน ๆ หมุนไปเรื่อย ๆ หมุนไปว่ายังเกมยังไม่เจ๊งนะ รอไปก่อน แต่ไม่บอกว่าจะโหลดเสร็จเมื่อไหร่
(อันดับหนึ่งคือดำไปเลย ไม่ต้องแตกเทรด ไม่ต้องทำอนิเมชั่น ไม่ต้อง ฯลฯ ให้มันค้างไปเลย ค้างซะจน Task Manager ถามว่า เฮ้ย ๆ เกมๆ คุณตายยัง อะไรแบบนี้)
ส่วนแบบที่ยากที่สุดผมยกให้ฉากโหลดที่เป็นมินิเกมไปเลย เช่นพวก Galaga ใน Tekken อะไรแบบนั้นครับ
อย่าง Godot นี่ควบคุม AnimationTree ตรง ๆ ไม่ได้เลย ทำให้ต้องปล่อยมันเล่นไปจนถึงจุดที่ต้องการ ในระหว่างนั้นก็ใส่หน้า Loading ปลอม ๆ เข้าไป 55555
นึกถึงเกมที่รักเรา กับเกมที่เรารัก 😆😆😆
ส่วนตัวว่าเดี๋ยวนี้ก็ไม่ค่อยใช้กันแล้วนะ หมุนๆเอาพอ
ตั้งแต่ยุค ps3, ps4 และ
มันก็มีประโยชน์ตรง ให้รู้ว่าเครื่องไม่ได้หยุดทำงานกับให้ความรู้สึกว่าเครื่องทำงานเร็วขึ้น เวลารออะไรถ้ามันมีสิ่งบอกว่าทำไปแค่ไหนแล้วมันจะรู้สึกว่ารอน้อยลง ดีกว่ารอแบบว่างเปล่า
That loading bar is not real!
ตอนเขียนโปรแกรมแรกๆเมื่อ 10 ปีก่อน ก็ได้แรงบันดาลใจการใส่ Progress bar จากในเกมนี่หละ แต่ให้มันคำนวณแล้วแสดงออกมาตามจริง
พอมารู้ความจริงนี้ ... เอออย่างน้อยก็เป็นแรงบันดาลใจละนะ
เรื่องปกติ progress bar หลาย web ก็ใช่ (ผมก็ทำ)
เวลา load บางที่มันไม่มี length/size มาให้คำนวณ หรือไม่ได้ pipe stream , API ไม่รองรับ
รู้แค่โหลดเสร็จเมื่อไร
ก็ทำ progress bar เป็น animation พอให้รู้ว่ามันมี progress
งั้น progress bar ตอนติดโปรแกรมก็หลอกเหมือนกันนะสิ
วิ่งพรวดมา99% แล้วค้างอยู่อย่างนั้น
ปลแต่ % ของ windows update น่าจะจริง ช้าตลอด
อย่างน้อยก็ทำให้เรารู้สึกว่ามันยังทำงาน
เคยเจอ loading ของ app ที่ต้องเข้าไปแก้ ตั้งเวลาถอยหลัง จำไม่ได้ว่ากี่วิ
พอแสดง loading เสร็จ ค่อยไป load ข้อมูลจริง ๆ
What !!!!!
เพื่อ !!!
อย่าว่าแต่เกมเลย Windows เองก็หลอกลวงเวลาอัปเดท
เหมือนเคยเห็นคลิปเรื่องนี่ผ่านๆในยูทูปแต่เป็นengเลยไม่ได้กดเข้าไปดู
The Last Wizard Of Century.
Microsoft ยุคก่อนนี้ประจำ โดยเฉพาะ % bar โอนข้อมูลของ windows
จริง ๆ แทร็คโปรเกรส ถ้าแทร็คจากระดับล่างสุด (เช่นหน่วยเป็น byte แบบกรณีก็อปปี้ไฟล์) มันก็จะเห็นโปรเกรสละเอียดได้ แต่หลาย ๆ งานมันทำแบบนั้นไม่ได้
บางทีก็จะใช้วิธีนับจากจำนวนงานที่ทำ อาจจะมีสักสิบงาน งานที่สิบดันใช้เวลามากกว่าคนอื่นสิบเท่า มันก็จะไปค้างที่งานที่สิบ อะไรแบบนี้ครับ
ดังนั้นเราจะเห็นอะไรหลาย ๆ อย่างที่แบบ โปรเกรสมันค้างอยู่ ณ.จุดใดจุดนึงนาน ๆ สาเหตุมันก็ประมาณนี้แล
เกลียดตอนลง windows สมัยก่อน ที่ อยู่ๆก็ค้างอยู่ที่ 68%(อันนี้จำไม่ได้นะประมาณเอา) นานมากๆ จนไม่รู้ว่าเครื่องค้างรึเปล่า