จัดการโลกของคุณ
การทดสอบและการปรับแต่ง
คู่มือการเพิ่มประสิทธิภาพ
14นาที
หน่วยความจำ zepeto ถูกออกแบบมาเพื่อโหลดทรัพยากรที่ใช้ในโลกเข้าสู่หน่วยความจำล่วงหน้า ตามเวอร์ชัน 1 7 0 ในโลก อุปกรณ์ที่มีสเปคต่ำที่สุดคือ iphone 8 (ram 2gb) และ galaxy s8 (ram 4gb) ดังนั้นเราจึงต้องทำให้มันไม่เกิน 2gb อุปกรณ์ที่มีสเปคขั้นต่ำอาจมีการเปลี่ยนแปลงในภายหลัง ในกรณีของโลกหลายผู้เล่น หน่วยความจำควรได้รับการจัดการโดยพิจารณาจำนวนคนสูงสุด เพราะแต่ละตัวละครมีหน่วยความจำ วิธีตรวจสอบตัวชี้วัดประสิทธิภาพ วิธีตรวจสอบตัวชี้วัดประสิทธิภาพในสภาพแวดล้อมมือถือ กรุณาใช้ runtime profiler อย่างเป็นทางการที่ zepeto จัดเตรียมไว้ให้ 📘 กรุณาอ้างอิงจากคู่มือต่อไปนี้ \[ โปรไฟเลอร์รันไทม์ docid\ f0dqrc90c3ssop5uet jc ] วิธีตรวจสอบตัวชี้วัดประสิทธิภาพสำหรับเซิร์ฟเวอร์ world multiplayer ในสภาพแวดล้อมการพัฒนาท้องถิ่นของคุณ หากคุณใช้ vs code เป็นโปรแกรมแก้ไขสคริปต์ คุณสามารถตรวจสอบตัวชี้วัดประสิทธิภาพต่างๆ เช่น การใช้ cpu การใช้หน่วยความจำ และอื่นๆ สำหรับเซิร์ฟเวอร์ในสภาพแวดล้อมการพัฒนาท้องถิ่นของคุณผ่านปลั๊กอิน 📘 โปรดดูคู่มือต่อไปนี้เกี่ยวกับวิธีตั้งค่า vs code เป็นโปรแกรมแก้ไขสคริปต์ใน unity \[ https //code visualstudio com/docs/other/unity\ https //code visualstudio com/docs/other/unity\ ] 1\) ค้นหาและติดตั้ง flame chart visualizer สำหรับโปรไฟล์ javascript ในแผง \[extension] ที่ด้านซ้ายของหน้าจอ vscode ตัวชี้วัดประสิทธิภาพของสภาพแวดล้อมการพัฒนาท้องถิ่นที่ตรวจสอบโดยปลั๊กอินอาจแตกต่างจากสภาพแวดล้อมการบริการจริง โปรดใช้เพื่อทำความเข้าใจแนวโน้มประสิทธิภาพโดยประมาณและปัญหาประสิทธิภาพที่อาจเกิดขึ้นของโลจิกเซิร์ฟเวอร์หลายผู้เล่นทั่วโลก หากไดเรกทอรีการทำงานของ vs code ไม่ได้ตั้งค่าเป็นโครงการโลก ปลั๊กอินจะไม่ทำงานอย่างถูกต้อง โปรดเลือกโฟลเดอร์โครงการที่ถูกต้องในแผง \[explorer] 2\) ไปที่แผง \[run and debug] ใน vs code และเปลี่ยนประเภทการดีบักเป็น zepeto multiplay script 3\) กดปุ่มเล่นบนหน้าจอ unity เพื่อรันโลก และกดปุ่ม \[เริ่มการดีบัก] ใน vs code เพื่อเริ่มการดีบักขณะรัน คุณสามารถตรวจสอบตัวชี้วัดประสิทธิภาพของเซิร์ฟเวอร์หลายผู้เล่นแบบเรียลไทม์ในแผง \[รันและดีบัก] 👍 เคล็ดลับ คุณสามารถเพิ่มตัวชี้วัดประสิทธิภาพต่อไปนี้ได้โดยการคลิกปุ่มสลับการแสดงกราฟประสิทธิภาพในแผง \[รันและดีบัก] การใช้ cpu หน่วยความจำที่ใช้ หน่วยความจำทั้งหมด ขนาดชุดที่อาศัย หน่วยความจำภายนอก หน่วยความจำ arraybuffer แนวทางการปรับแต่งที่แนะนำ โปรดปรับแต่งตามเกณฑ์ต่อไปนี้เพื่อให้แน่ใจว่าโลกที่ปล่อยออกมาทำงานตามสเปคขั้นต่ำ อุปกรณ์ที่มีสเปคขั้นต่ำ (ram 2gb) จะล้มเหลวเมื่อ runtime profiler > หน่วยความจำที่จัดสรรเกิน 550mb โดยเฉลี่ย เมื่อโลกกำลังทำงานจริง ไม่เพียงแต่ทรัพยากรของโลกเท่านั้น แต่ยังมีหลายกระบวนการที่ทำงานในหน่วยความจำ ดังนั้นจึงแนะนำให้เว้นพื้นที่บางส่วนในหน่วยความจำที่จัดสรร สำหรับโลกแบบผู้เล่นหลายคน จะมีการจัดสรรหน่วยความจำต่อแต่ละตัวละคร ดังนั้นคุณต้องจัดการหน่วยความจำตามจำนวนผู้เล่นสูงสุด หน่วยความจำเฉลี่ยต่อ zepeto ตัวละคร 35mb หากคุณใช้หุ่นจำลองประเภทตัวละคร zepeto จะใช้หน่วยความจำเท่ากับเมื่อมีตัวละคร zepeto เข้าสู่ระบบหนึ่งตัว เพื่อวัตถุประสงค์ในการปรับแต่ง เราขอแนะนำให้ใช้หุ่นจำลองประเภท simple หากเป็นไปได้ เฉลี่ยของ 280mb เมื่อมีผู้เข้าร่วมสูงสุด 8 คน นี่คือข้อมูลเฉลี่ย โปรดทดสอบหน่วยความจำที่จัดสรรของคุณโดยการให้ผู้เข้าร่วมสูงสุดเข้าร่วมก่อนการเปิดตัว หากเป็นไปได้ fps (เฟรมต่อวินาที) ขีดจำกัด fps สูงสุดคือ 30fps ความจุ ความจุของแพ็คเกจจำกัดอยู่ที่ 1gbyte ด้วยฟีเจอร์การเคลื่อนที่ข้ามโลกที่จัดเตรียมโดย world 1 8 0 คุณสามารถแก้ไขปัญหาส่วนความจุได้โดยอ้อม วิธีการปรับแต่ง กรุณาอ้างอิงข้อมูลที่เกี่ยวข้องกับการปรับแต่ง unity https //docs unity3d com/kr/2019 4/manual/mobileoptimizationpracticalscriptingoptimizations html https //docs unity3d com/kr/2019 4/manual/mobileoptimizationpracticalscriptingoptimizations html สิ่งที่สามารถปรับปรุงเกี่ยวกับทรัพยากร กรุณาลบโฟลเดอร์แพ็คเกจที่ไม่ได้ใช้งานและไฟล์ที่ไม่ได้ใช้งานด้วย กรุณาปรับจำนวนวัตถุในโปรเจกต์และจำนวนต้นไม้/สระในภูมิประเทศ สิ่งที่สามารถปรับปรุงเกี่ยวกับโค้ด การใช้ coroutines yield ไม่ผลิตขยะ แต่การสร้าง waitforseconds ใหม่จะผลิตขยะ ดังนั้นให้สร้างและใช้วัตถุ ใน update ( ) ส่วนที่ไม่จำเป็นต้องเรียกทุกเฟรมจะถูกแทนที่เพื่อให้สามารถเรียกทุก n เฟรมได้ หลีกเลี่ยงการเรียกฟังก์ชันที่มีตรรกะหนักใน awake( ) onenable( ) start( ) หลีกเลี่ยงการทิ้ง update ( ) และ lateupdate ( ) แม้แต่ฟังก์ชันว่าง หลีกเลี่ยงการเพิ่มคอมโพเนนต์ในระหว่างการทำงาน หากจำเป็น การสร้าง prefab จะมีประสิทธิภาพมากกว่า gameobject find, gameobject getcomponent, และ camera main มีค่าใช้จ่ายสูง ดังนั้นไม่ควรเรียกจาก update() แต่ให้เรียกจาก start() หากจำเป็น การสร้างและทำลายผลิตขยะและการเก็บขยะทำให้กระบวนการช้าลง แทนที่จะพยายามใช้ซ้ำด้วยพูล renderer material ใช้ renderer sharedmaterial เมื่อเป็นไปได้เพื่อเข้าถึงวัสดุของวัตถ์ที่ผูกพัน เนื่องจากการสร้างสำเนาใหม่มีค่าใช้จ่ายสูงเกินไป สิ่งที่สามารถปรับปรุงเกี่ยวกับ ui ขึ้นอยู่กับวัตถุประสงค์ แบ่งผืนผ้าใบและตั้งค่าผืนผ้าใบที่ไม่ได้ใช้งานให้เป็นมองไม่เห็น จำกัด graphicraycasters และล้าง raycast target ลบ graphicraycaster ออกจากผืนผ้าใบและแทรก graphic raycaster แยกต่างหากลงในองค์ประกอบแต่ละอย่าง เช่น ปุ่ม หากคุณไม่ต้องการ raycast target ในข้อความหรือภาพ ให้ลบออก หลีกเลี่ยงการใช้ layout groups เว้นแต่จะเป็น ui แบบไดนามิก ใช้จุดยึดเพื่อจัดระเบียบ รายการใหญ่และมุมมองกริดมีค่าใช้จ่ายสูง ดังนั้นควรหลีกเลี่ยงการใช้มัน เมื่อใช้ ui แบบเต็มหน้าจอ ให้ซ่อนทุกอย่างยกเว้นผืนผ้าใบนี้ มันจะช่วยลดความจำเป็นในการให้กล้องเรนเดอร์ฉาก 3d และยังซ่อนผืนผ้าใบที่ไม่จำเป็น ลด application targetframerate เพราะคุณไม่จำเป็นต้องอัปเดตทุก 60 fps เมื่อใช้ ui แบบเต็มหน้าจอ อย่าทิ้งพื้นที่ว่างสำหรับกล้องเรนเดอร์ของผืนผ้าใบที่ใช้ world space และเติมเต็มด้วยกล้องที่คุณใช้ หากคุณทิ้งว่างไว้ unity จะเติมกล้อง main โดยอัตโนมัติ สิ่งที่สามารถปรับปรุงเกี่ยวกับเสียง เปลี่ยนคลิปเสียงเป็นโมโน เปิดใช้งานการใช้ไฟล์ wav ไฟล์เพลงที่บีบอัดจะถูกถอดบีบอัดและบีบอัดใหม่ในระหว่างเวลาการสร้าง คุณภาพของไฟล์เพลงจะลดลงในระหว่างกระบวนการนี้ บีบอัดคลิปและลดอัตราบิตการบีบอัด ใช้ไฟล์ส่วนใหญ่ด้วย vorbis และเปลี่ยนเสียงสั้นเป็น adpcm ไม่เกิน 22,050 hz เลือกประเภทการโหลดที่เหมาะสม สำหรับไฟล์เพลงที่มีขนาด 200 kb หรือน้อยกว่า ให้ถอดบีบอัดเมื่อโหลด สำหรับไฟล์เพลงที่มีขนาด 200 kb หรือมากกว่า ให้คงบีบอัดในหน่วยความจำ ตั้งค่าไฟล์ขนาดใหญ่และเพลงพื้นหลังให้ตั้งค่าเป็นสตรีมมิ่ง ไฟล์เพลงที่เงียบจะไม่สิ้นสุดโดยการเปลี่ยนระดับเสียงเป็นศูนย์เพียงอย่างเดียว ดังนั้นให้แน่ใจว่าพวกเขาถูกทำลาย