ภายหลังจาก Hoyoverse (ชื่อเดิมคือ Mihoyo) ผู้พัฒนาเกมมือถือที่เป็นกระแสโด่งดังอย่างมากในช่วงปี 2020 ได้ทำอัพเดทตัวเกมเป็น Version 4.3 เมื่อวันที่ 20 ธันวาคม 2566 ที่่ผ่านมา กลับพบว่ามีผู้เล่นส่วนหนึ่งไม่สามารถเข้าเกมได้ อาการที่เกิดขึ้นคือหลังจากกดปุ่ม launch แล้วตัวเกมไม่ถูกเปิดขึ้นมา
ผู้ใช้ Reddit นามว่า MinusPL ค่อนข้างมั่นใจว่าปัญหาดังกล่าวเกิดจากการรองรับการชุดคำสั่ง SSE 4.1 และ SSE 4.2
แน่นอนว่าผู้มีเล่นที่มีปัญหาเดียวกันนี้มา comment ตอบมากมาย โดยส่วนมากมักจะเป็นผู้เล่นที่ใช้ CPU รุ่นเก่าราว 10 ปีขึ้นไปทั้งสิ้น
ณ วันที่เขียนข่าว (26/12/2566 19.33น.) ทางบริษัท hoyoverse เองยังไม่แจ้งให้ผู้เล่นว่ารับทราบถึงปัญหานี้แล้วและยังไม่มีวิธีแก้ไขออกมาแต่อย่างใด
[แก้ไข] ทางบริษัทได้ประกาศว่าทราบถึงปัญหาดังกล่าวแล้วจะแก้ไขในอัพเดทถัดไปเพื่อให้รองรับอุปกรณ์ดังกล่าว
ผู้เล่นจึงมีหนทางแค่สามทางเท่านั้น
Minimum System requirement ตอนเกมเปิดให้บริการวันแรก
Minimum System Requirements Version 4.1
ที่มา : reddit
Comments
ใช่แล้วแรกเริ่มเพราะเราพบปัญหานี้ แก้ทุกทางไม่หายจนกระทั้งลงOSใหม่ก็ไม่หาย เอะใจแปลกๆละ เลยค้นหาแล้วเจอคนที่เป็นเหมือนกัน
The Last Wizard Of Century.
บัคแบบนี้แก้ยาก
ถ้าเป็นที่ คอมไพเรอร์ ก็ตั้งให้ไม่ใช้ SSE
สร้างเป็น _NO-SSE.exe มาแก้ขัด แต่ความเร็วน่าจะตกฮวบ
แต่ถ้า Mihoyo เขียน function assembly เองนี่ หาทางแก้ลำบากแน่
เพราะมันเป็นเฉพาะบางเครื่อง (bug แบบ it work on my machine) 🤔
เอ่อ...ผมไม่ค่อยเข้าใจเลยครับ มันเป็นบัคหรือครับนึกว่าCPUไม่support ยังไงรบกวนช่วยอธิบายขยายความจะเป็นพระคุณมากครับ
The Last Wizard Of Century.
ประมาณว่าต้องเขียนแยก function เดียว 2ครั้งครับ
สมัย MMX ยุคแรกๆ (โห..พูดแล้วแก่)
dev ต้องเขียน 2 แบบคือ ใช้ MMX กับไม่ใช้ MMX
จากนั้นก็ตรวจ CPU ว่ามี MMX มั๊ย
ถ้ามีก็เอา pointer function ชี้ไปที่ function มี MMX
ถ้าไม่มีเอา pointer function ชี้ไปที่ function ไม่มี MMX
เวลาเรียกใช้ก็ให้เรียกผ่าน pointer function เสมอ
ห้ามเรียกเองตรงๆ
บางเกมแยก เป็น game.exe กับ game_MMX.exe ไปเลยก็มี
Genshin Impact มันเป็น Unity เนี่ยสิครับ ... หรือว่าซื้อ Source License มานะ?
จริง ๆ ไม่ต้องถึงระดับ build แยกหรอกครับ มัน check cpu capability แล้ว if-else บ้านๆ เอาได้ครับ
สมมติถ้าเป็น SDL ก็จะเขียนประมาณ
อ้างอิง SDL_HasSSE41
ถ้าใช้ API อื่นก็อาจจะต้องลง library ที่เช็คแฟล็กตรงนี้ให้แทนได้ครับ เช่น cpuinfo
แต่ผมเดาว่าเค้าอาจจะใช้ 3rd-party library ที่ไม่มี fallback นะ ผมคิดว่าเดฟจำนวนนึงคงไม่คิดว่า เกมเมอร์จะยังใช้เครื่องที่เป็น Core Duo หรือ Jaguar หรือเก่ากว่าอยู่ อะไรแบบนี้ครับ
เห็นบอกว่าบนโทรศัพท์กินเครื่องมากๆ จน Android เอาแทบไม่อยู่ ผมนึกว่าคอมพวกนั้นเอาไม่อยู่ไปนานแล้วเสียอีก
มันเอาอยู่นะครับและเล่นคอนเท้นที่ยากที่สุดของเกมได้ครับ fps 60 ก็จริงแต่เปิด 1%lowจะได้ราวๆ10-20fps ครือเป็น60fpsที่กระตุกนิดๆมึนหัวหน่อยๆเล่น1080p กับการ์ด1050Ti พอได้น่ะครับ
The Last Wizard Of Century.
😱 ขอบคุณครับ
ผมลืมคิดไปว่า PS4 เป็น Jaguar 555
ผมคิดว่า Dev ทราบครับ เพราะมีการอัพเดท Spec ขั้นต่ำครั้งใหม่ตั้งแต่ 2 แพทต์ที่แล้วครับ 4.1 ราวๆสามเดือนก่อน เพียงแต่ผมอ่านข้ามไปไม่ได้สนใจ คือเกมนี้เก็บสถิติเยอะมากละเอียดยิบย่อยการกระทำเล็กน้อยๆในเกมเก็บหมดทุกอย่างเลยครับ นิสัยผู้เล่น การกระทำต่างๆคาดว่าคงมีประโยชน์ต่อการวางแผนการตลาด ก็เลยคิดว่าทีมงานทราบครับและ cpu ที่มีปัญหาคงเป็นผู้เล่นส่วนน้อย แต่ผมก็ไม่ทราบจริงๆว่าใช้ License Unity แบบไหน
The Last Wizard Of Century.
ใช้คำว่า "คิดไม่ถึง" ก็ไม่ถูกจริง ๆ แหละครับ คิดอีกทีคือ เค้าตั้งใจทิ้งผู้เล่นกลุ่มนี้ไปเลยมากกว่า (เพราะว่าจะให้ซัพพอร์ตคอมพิวเตอร์อายุมากกว่า 15 ปีมันก็ยากอยู่นะ)
ส่วนที่มองว่าใช้ unity license แบบที่เข้าถึงซอร์สโค๊ดได้คือ ถ้าผมเข้าใจไม่ผิด ... ใน Unity มันไม่มีคอนฟิกแบบจะใช้ CPU capability สูงมากน้อยแค่ไหนน่ะครับ เลยเดาว่าน่าจะเป็น custom engine code ของ MiHoYo เอง (ซึ่ง license ถูก ๆ มันคอมไพล์โค๊ดเองไม่ได้ไง) แต่ผมอาจจะจำผิดนะ ไม่ชัวร์ขนาดนั้นครับ
+
เบื้องหลังของ Genshin แทบไม่ได้รันโค้ดบน C# เลย แต่ใช้ Lua Interpreter ที่ Custom เอง คาดว่าเหตุผลเบื้องหลังคือใช้เพื่อซ่อนโค้ด (Obfuscation) ด้วยความที่ว่าเป็นเกมออนไลน์ที่ประมวลผลที่ฝั่ง Client-side เสียส่วนใหญ่เพื่อประหยัดต้นทุน และเนื่องจากฝั่ง Lua ปรับแต่งได้ยืดหยุ่นกว่าด้วย และค่อนข้างข้ามแพลตฟอร์ม (ของ C# ก็มี MoonSharp เป็นต้น) ผมคิดว่าอาจจะเป็นเพราะตัวรันโค้ดของ Genshin มากกว่าจะเป็น Unity ที่ก่อปัญหา
เปิดหาใน Git จะมีเครื่องมือ RE เพื่อ Genshin โดยเฉพาะเลย อย่าง https://github.com/CallowBlack/genshin-luadec ก็เคยมีอยู่และก็หายไปซะงั้น และยังมีคลิปวิดีโอสอนแฮกอยู่ประปราย ก็เป็นการทำ Injection เข้า Lua ของ Genshin เช่นกัน ซึ่งหลายวิดีโอก็โดน Copyright Strike โดย Hoyoverse อย่างรวดเร็ว
การใช้ pointer function เพื่อหนีการใช้ if ในทุกๆการ call ครับ
เป็นทริคการ optimize ขั้นสูงอย่างนึง
ยิ่งถ้า function นั้นใช้บ่อยๆ เรียก 1000รอบ ก็ if 1000 ที
และผลคือมันทำให้กิน cpu branch predict ไปเพียบด้วย
เขาถึงเล่นท่ายากให้เป็น pointer function แล้ว
initial ด้วย if เพียงครั้งเดียว
ซึ่งถ้า function นั้นเป็นของ unity
ก็น่าจะใช้กระบวนท่านี้อยู่แล้ว เพราะมันกลายเป็นเทคนิคมาตรฐานไปละ
ซึ่ง unity เลิก support ก็จบกัน
น่าจะใส่ชื่อเกมลงไปใน topic นะครับ อ่านแล้วตกใจคิดว่าเข้าเกมที่ reddit พัฒนาไม่ได้
Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)
ปรับพาดหัวครับ - รันเกมอะไรไม่ได้ และเงื่อนไขอะไรที่รันไม่ได้ (ขยายความตรงคนจนมีสิทธิไหมคะ) - ผู้ใช้ Reddit ไม่ใช่ประเด็นหลักในพาดหัว เอาออกไปก็ได้นะครับ
ใส่ชื่อเกมในหัวข่าวก็ดีครับ เวลาไปแชร์ลงที่อื่น มันไม่รู้คือเกมอะไร
แก้ไขแลว้ครับขอบคุณทุกท่านครับมีอะไรแนะนำเพิ่มเติมได้เลยคับ
The Last Wizard Of Century.
พาดหัวโดนเส้นดีครับ ชอบ
cpu เก่าเล่นบน Google Play Games beta ไหวไหม...
ปริญญาไม่มี แต่มี_นะคะ
เล่นผ่าน cloud ก็ได้
support ย้อนหลัง 10 ปี ก็เกินปาย
เครื่องมันรันได้อยู่นะครับ เกมอาจจะต้องการขยายกลุ่มคนเล่นให้กว้างไม่ได้ต้องความแรงๆ เพื่อภาพสวยๆ
Hoyo บอกแล้วว่าเป็น SSE4.1 จริง แต่เดี๋ยวจะ "พยายาม" optimize ให้เล่นได้่
จริงๆมันก็มีบอกอยู่ใน minimum system requirement นะ
รบกวนขอลิ้งค์ทีครับ จะเอาไปอ้างอิงในข่าว
The Last Wizard Of Century.
https://genshin.hoyoverse.com/en/news/detail/103699
ไม่ได้บอกตรง ๆ ว่า จะต้องเป็น CPU ที่มี SSE 4 แต่บอกว่า Minimum i5 or equivalent
ซึ่ง SSE4 มีมาตั้งแต่สมัย Penryn หรือ สมัย Core 2 Duo เลย ตอนนั้นมี 4.1 ถ้าเป็น Core i เป็นต้นมาก็จะมี 4.2
ฝั่ง AMD ต้องเป็น Jaguar ขึ้นไป ถึงจะมี 4.1 4.2 ก่อนหน้าจะเป็น 4a
https://www.hoyolab.com/article/23871588
อันนี้เลยครับ
มีแจ้งมาด้วยว่า CPU ขั้นต่ำ ต้องเป็น i5 Gen 4 หรือ AMD Ryzen ขึ้นไป
แค่มนุษย์คนนึงที่อยากรู้เกี่ยวกับวงการไอที
ขอบคุณค๊าฟฟ
The Last Wizard Of Century.
ผมใช้ athlon x4 845 (รุ่นก่อน ryzen เปิดตัว) ยังเล่นได้ ดูใน cpuz มี sse4.1 sse4.2 รอดไปยังไม่ต้องยกเครื่องใหม่
ถ้าเก่ากว่านี้แล้วมีปัญหาคงซีรี่ย์ Phenom ละมั้ง
น่าจะใช่แหละครับผมใช้ Phenom x6 1055T เล่นได้มาตลอด เพิ่งจะมามีปัญหา4.3นี่ล่ะครับ minimumดันไม่ได้บอกฝั่งAMDเสียด้วย
The Last Wizard Of Century.
รอดตัวไป ใช้i5 2500อยู่ เห็นว่าcpuเก่า10ปีขึ้นไปอาจไม่รอด โชคดีตัวนี้12ปีแต่ยังมีSSE4 55+
ต้องลองดูครับว่าเล่นได้จริงไหมเพราะขั้นต่ำบอกว่าGen 4th
แต่2500นี่รุ่นเดียวกัน x6ของผมเลย ความแรงคู่คี่กันแค่ตอนนั้นผมอยากลองAMDแล้วก็ไม่ได้ตั้งใจเอามาเล่นเกม = ="
The Last Wizard Of Century.