Helldivers

Brendan Armstrong รองผู้อำนวยการฝ่ายเทคนิคของ Arrowhead Game Studios ผู้สร้างเกม Helldivers เขียนโพสต์ลงใน Steam อธิบายเหตุผลที่เกม Helldivers II เวอร์ชันพีซี ต้องมีไฟล์ติดตั้งใหญ่ขนาด 150GB ซึ่งใหญ่กว่าเวอร์ชันคอนโซลถึง 3 เท่า

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

Armstrong บอกว่าคำถามที่สำคัญคือ เกมยังควรซัพพอร์ตพีซียุคเก่าที่ใช้ฮาร์ดดิสก์ต่อไปหรือไม่ ซึ่งเป็นสิ่งที่ตอบยากมาก ข้อมูลใน Steam survey ก็ไม่ชัดเจน การคาดเดาของทีมงานคือพีซีที่ใช้ฮาร์ดดิสก์น่าจะยังมีอยู่ราว 12% ของเกมเมอร์พีซีทั้งหมด แต่ก็ไม่มั่นใจในความถูกต้อง ดังนั้นในอนาคตระยะใกล้ Helldivers II จะยังต้องใช้เทคนิคการทำไฟล์ซ้ำต่อไป

อย่างไรก็ตาม Arrowhead จะพยายามลดขนาดไฟล์ติดตั้งลงด้วยวิธีการต่างๆ เช่น ลบไฟล์ที่ไม่ใช้ออก, ลดการทำซ้ำ (de-duplicating) ไฟล์บางประเภท ซึ่งต้องแลกมาด้วยเวลาโหลดที่ช้าลงสำหรับชาวฮาร์ดดิสก์ รวมไปถึงการปรับปรุงเอนจินเพื่อประหยัดการใช้งานแรมลงในระยะยาว

ที่มา - Steam Helldivers II via Gamespot

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

ต้นโพสต์อธิบายไว้ครับ ถ้าปล่อยให้คนใช้ HDD โหลดช้า กระทบคนในทีมที่อาจใช้ HDD (ไม่รู้จะเป็นใคร) แต่ทั้งทีมช้าไปด้วย

keep in mind that the load time for each player dropping into a mission is determined by the slowest member of the squad.

ทำ default เป็น SSD แล้วให้คนที่ลงเกมใน HDD ไปโหลด "DLC" สำหรับ HDD ได้มั้ย เหมือนหลายๆ เกมที่มี ultra HD texture DLC สำหรับคนที่อยากได้ภาพสวยๆ ครับ

Steam เป็นตัวที่ทำการ download ให้นี่นา ตัว steam มีให้เลือกจากฝั่ง dev ได้ด้วยหรอว่าอยากให้ไฟล์ไหนใช้เนื้อที่ต่อกันใน disk?

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

ที่จะเป็นปัญหาก็คือเวลามี Resource เดียวกันที่ถูกใช้ซ้ำหลายๆที่ครับ

ถ้าเป็น SSD ก็แยกมันออกมาเป็นอีกไฟล์ไปเลย เวลาจะใช้ก็ค่อยอ่านมัน มันก็เลยไม่กินที่

แต่ HDD ถ้าทำแบบนั้นเวลามันจะอ่านไฟล์ที่ว่ามันก็ต้องหมุนไปหา ทำให้มันช้า เลยต้องใช้เทคนิคก๊อปปี้ Resource ที่ว่า ไปอยู่ในไฟล์เดียวกับที่มันจะใช้ (เพื่อให้มันเขียนอยู่ใกล้กัน) ทำให้หมุนน้อยแต่กินที่แทนครับ

ถ้า HDD ใหม่เอียม หรือไม่ค่อยได้ใช้ เนื้อที่ว่างจะติดกันจริงครับ แต่ถ้าเป็น HDD ที่ใช้งานบ่อย มีการลบบ่อย (แน่นอนว่า disk สำหรับลง game น่าจะเป็นแบบนี้กันส่วนใหญ่) เนื้อที่ว่างจะกระจัดกระจายกัน ตัว windows เค้าเลยมีเรื่อง defragment เพื่อให้ file ใกล้กันอยู่ติดกันครับ (ซึ่ง SSD ไม่จำเป็นต้องทำ)

ดังนั้นผมเลยมองว่า การเอา file วางหลายๆที่เพื่อแค่ทำให้เกิดโอกาสมากขึ้นในการจองที่บน disk ให้มันติดกัน ซึ่งไม่ได้แน่นอนว่าจะได้เนื้อที่ใกล้กันเสมอไปด้วย แทนที่จะเสนอให้คนใช้ HDD ทำการ defragment น่าจะได้ประสิทธิ์ภาพมากกว่าการวาง file ซ้ำๆ

ไฟล์ในที่นี้ไม่ใช่ไฟล์ที่เปิดใน explorer แล้วเห็นเลย แต่เป็นไฟล์ใน project และวิธีที่ HD2 ใช้น่าจะเป็นแบบ map ไหนใช้ asset อะไรก็มัดรวมเข้าไปในไฟล์ map เดียวกัน เวลาโหลด map มันก็จะโหลด asset ที่ใช้ไปด้วย ซึ่งมันคุมได้ว่า map และ asset ที่ใช้จะอยู่ใกล้กัน เพราะถูกรวมเป็นไฟล์เดียวครับ

ถ้าอยากจะทำความเข้าใจตรงนี้ต้องเริ่มจากไปศึกษาการโหลด Level data แบบ streaming ของ game engine ก่อน (ถ้าจำไม่ผิดมี GDC Talk อันนึงของ SpiderMan บน PS4 แต่มันมีหลายอันมากผมจำไม่ได้)

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

ทีนี้พอมันเป็น HDD ที่มันช้าเนี่ย ถ้าจะแบ่งเป็นพื้นที่เล็ก ๆ จำนวนมากมันจะกลายเป็นว่าจะต้องอ่านข้อมูลบ่อยขึ้น มันจะทำให้อ่านไม่ทัน ก็เลยกลายเป็นว่าจะใช้พื้นที่ขนาดใหญ่แทน เพื่อที่ว่าเวลาอ่านก็อ่านเป็นชุดใหญ่ ๆ ขึ้นมาเลย ไม่ต้องอ่านถี่ ๆ เพราะอ่านถี่มันอ่านไม่ทัน

ทีนี้พอพื้นที่ที่แบ่งมันใหญ่ ส่วนที่ทับซ้อนกันมันก็ใหญ่ตามไปด้วยครับ

ต่อไปคือ แล้วไอ้ข้อมูลพื้นที่ตรงนี้มันเก็บอะไร ข้อมูลที่ใหญ่มากอันนึงที่มันเก็บคือ static mesh ของพื้นที่ตรงนั้น (โดยเฉพาะพวกข้อมูลพวกพื้นอะไรงี้ครับ) ทีนี้ไฟล์ static mesh และ material ตรงพื้นที่ตรงนั้นแหละที่มันกินที่เยอะ เพราะว่าจำนวน vertex มันเยอะ คิดดูว่าพื้นที่ 100 ตรม. อาจจะมีจำนวน triangle หลัก 10 ล้านก็ได้ (สมมติ)

คือการวางแม๊พมันไม่ใช่ว่าค่อย ๆ อ่าน Obj ทีละไฟล์แล้วเอาไปวางเรียง ๆ กันแบบพวกโปรแกรม 3D นะครับ ถ้าทำแบบนั้นเอนจินมันทำงานไม่ทัน มันใช้วิธีสร้าง object ใหญ่ ๆ จำนวนน้อย ๆ แทน

ทั้งนี้อันนี้เป็นสาเหตุเลยว่าทำไม Mark Cerny ถึงโฆษณาเรื่องความเร็ว SSD บน PS5 จริงจังมากขนาดนั้นตอนมันออกใหม่ ๆ ครับ

Tenzen Mon, 06/10/2025 - 13:51

แสดงว่า ตรวจสอบก่อนว่าเครื่องนี้ใช้ HDD รึป่าว ไม่ได้สินะ
ติดที่ steam ทำไม่ได้ หรือ ติดที่ game engine กันนะ