NEW STATE Mobile giảm mức sử dụng GPU xuống 22% nhờ Android GPU Inspector
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Thông tin khái quát
NEW STATE Mobile là một trò chơi battle royale của Krafton, ra mắt trên toàn thế giới vào tháng 11 năm 2021 và đạt hơn 45 triệu lượt tải xuống trong tháng đầu tiên ra mắt. KRAFTON, Inc. là một tập hợp các hãng phát triển trò chơi độc lập, được thành lập để tạo ra những trải nghiệm giải trí sáng tạo và hấp dẫn cho người chơi trên toàn thế giới. Công ty này bao gồm PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion và Unknown Worlds, mỗi công ty đều có chuyên môn riêng. NEW STATE Mobile được tạo bằng Unreal Engine 4 và chúng tôi đã thử nghiệm nhiều cách để giảm nhiệt và mức tiêu thụ pin do mức sử dụng GPU cao từ các tính năng chơi trò chơi đặc biệt.
Người chơi có thể chơi các trận chiến tầm xa, vì vậy, công cụ phát triển trò chơi cần có khả năng kết xuất cảnh từ khá xa. Ngoài ra, có rất nhiều cây cối xuất hiện trên chiến trường, dẫn đến việc vẽ nhiều lần các cây cối này sẽ ảnh hưởng đáng kể đến việc giảm hiệu suất. Điều này đã đưa nhóm đến với Android GPU Inspector (AGI) để giúp tối ưu hoá mức sử dụng GPU của trò chơi và loại bỏ nút thắt cổ chai.

Hình 1: Ảnh chụp màn hình từ NEW STATE Mobile
Những việc họ đã làm
NEW STATE Mobile đã sử dụng AGI để truy cập vào nhiều thông tin về bộ đếm GPU và tối ưu hoá mức sử dụng GPU cho phù hợp. Họ đã xác định được các lượt kết xuất không cần thiết nhờ dữ liệu phân tích hoạt động GPU do AGI cung cấp. Sau khi xác định được những phân đoạn nào đang chiếm mức sử dụng GPU và băng thông bộ nhớ, họ tiếp tục kiểm tra tiến trình tối ưu hoá bằng cách sử dụng Bộ đếm GPU và hoạt động GPU để kiểm tra xem họ có đang đi đúng hướng hay không.

Hình 2: Ảnh chụp màn hình từ NEW STATE Mobile
Sau đây là một số điều họ tìm hiểu được về hiệu suất của trò chơi khi sử dụng AGI:
Tối ưu hoá lượt truyền cơ sở: Lượt truyền trước theo chiều sâu là một công nghệ giúp tăng mức sử dụng Early-z, giúp giảm mức sử dụng tính năng đổ bóng mảnh. Tính năng truyền trước độ sâu được sử dụng riêng cho LOD0, chiếm phần lớn không gian màn hình, giảm thiểu gánh nặng có thể đến từ các lệnh gọi vẽ bổ sung. Ngoài ra, việc sử dụng định dạng màu cảnh 32 bit có thể làm tăng hiệu suất của toàn bộ lượt kết xuất. Định dạng SceneColor mặc định của UnrealEngine4 là FloatRGBA, 64 bit. Nếu sử dụng định dạng 32 bit, băng thông bộ nhớ có thể giảm đi một nửa.
Đo lường mức tác động: Sau khi áp dụng tính năng truyền trước độ sâu, mức sử dụng GPU giảm 7,5%. Do quá trình truyền trước độ sâu, nhiều Mảnh có thể là Early-Z hơn. Tốc độ thời gian cần thiết để đổ bóng mảnh đã giảm 2%. Thông qua định dạng màu cảnh 32 bit, mức sử dụng GPU đã giảm 5,3%. Số lượng chương trình đổ bóng đang bận giảm 2% và tổng dung lượng đọc GPU từ bộ nhớ hệ thống giảm 330 MB/giây. Lượng dữ liệu mà GPU ghi vào bộ nhớ hệ thống đã giảm 78 MB/giây và lượng dữ liệu đọc bộ nhớ kết cấu cũng giảm 43 MB/giây.
Tối ưu hoá lượt truyền bóng: Khi lưới được dùng làm vật phát bóng, việc sử dụng LOD đa giác cao không thực sự tạo ra sự khác biệt về chất lượng. Bạn nên sử dụng LOD đa giác thấp để giảm số lượng tam giác. Trong Unreal Engine 4, bạn có thể sử dụng LOD đa giác thấp thông qua lệnh bảng điều khiển "ForceLODShadow".
Đo lường mức tác động: Số lượng tam giác dùng cho bóng đã giảm khoảng 120.000. Dữ liệu bộ đếm GPU trong AGI cho thấy mức sử dụng GPU giảm khoảng 2%, dung lượng bộ nhớ GPU đọc từ bộ nhớ hệ thống giảm 130 MB/giây và dung lượng được ghi từ GPU vào bộ nhớ hệ thống giảm khoảng 23 MB/giây.
Tự động tạo bản sao: Tính năng tự động tạo bản sao có thể được áp dụng cho cả quá trình tối ưu hoá lượt truyền bóng và lượt truyền cơ sở, cho phép bạn hợp nhất cùng một lệnh kết xuất trong thời gian chạy, sau đó kết xuất tất cả cùng một lúc. Điều này cho phép NEWSTATE dành cho thiết bị di động áp dụng tính năng chiếu sáng toàn cục cho từng đối tượng mà không làm giảm hiệu suất. Tự động tạo bản sao là một tính năng cơ bản do UnrealEngine4 cung cấp.
Đã đo lường được tác động: Giảm 500 lệnh gọi vẽ. Điều này đã làm giảm khoảng 48% số lệnh gọi vẽ. Mức sử dụng GPU giảm khoảng 3,5%. Các phép đo này được thực hiện bằng OpenGL.

Hình 3: Dữ liệu nội bộ cho thấy mức sử dụng GPU giảm
Kết quả
Bằng cách sử dụng AGI, NEW STATE Mobile đã giảm mức sử dụng GPU xuống 22%. Nhờ tối ưu hoá lượt truyền trước độ sâu và lượt truyền bóng, mức sử dụng GPU đã giảm lần lượt 19% và 3%. Số lệnh gọi vẽ và tổng bộ nhớ mà GPU đọc và ghi từ bộ nhớ hệ thống cũng giảm đáng kể.
Bắt đầu
Tìm hiểu cách phân tích tác động của trò chơi trên thiết bị Android bằng cách xác định các vấn đề về hiệu suất và các khu vực cần tối ưu hoá bằng Android GPU Inspector (AGI).
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2022-02-25 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2022-02-25 UTC."],[],[],null,["# NEW STATE Mobile reduces GPU usage by 22% with Android GPU Inspector\n\nBackground\n----------\n\n[NEW STATE Mobile](https://play.google.com/store/apps/details?id=com.pubg.newstate) is a battle royale game from Krafton that launched Nov 2021 worldwide, and reached 45M+ downloads in the first month of launch. KRAFTON, Inc. is a collective of independent game development studios brought together to create innovative and engaging entertainment experiences for gamers across the world. The company consists of PUBG Studios, Bluehole Studio, Striking Distance Studios, RisingWings, Dreamotion, and Unknown Worlds, each with its own unique expertise. NEW STATE Mobile was created with Unreal Engine 4, and various attempts have been made to reduce heat and battery consumption caused by high GPU usage from their distinctive gaming features.\n\nGamers can play long range battles, so the game engine needs to be able to render scenes from quite a distance. Also, numerous vegetations are present in the battleground, leading the overdraw of these vegetations to have a substantial impact on decreasing performance. This led the team to [Android GPU Inspector](http://developer.android.com/agi) (AGI) to help optimize the game's GPU usage and eliminate bottlenecks.\n\n**Figure 1**: Screenshot from NEW STATE Mobile\n\nWhat they did\n-------------\n\nNEW STATE Mobile used AGI to access loads of GPU counter information and optimize their GPU usage accordingly. They identified unnecessary render passes with the help of the GPU activity profiling data provided by AGI. After identifying which segments were taking up GPU usage and memory bandwidth, they continued to check the optimization progress using the GPU Counter and GPU activity back and forth to check if they were headed in the right direction.\n\n**Figure 2**: Screenshot from NEW STATE Mobile\n\nHere are a few things they learned about the game's performance using AGI:\n\n- **Base pass optimization**: Depth prepass, which is a technology that increases usage of Early-z, helped decrease the use of fragment shading. Depth prepass was specifically used for LOD0 which takes up most of the screen space, minimizing the burden that can come from additional draw calls. Also, using the 32-bit scenecolor format can increase the performance of the entire render pass. Default SceneColor format of UnrealEngine4 is FloatRGBA, which is 64-bit. If a 32-bit format is used, memory bandwidth can be reduced by half.\n\n- **Impact measured**: After applying depth prepass, GPU utilization dropped by 7.5%. Due to the depth prepass, more Fragments could be Early-Z. The rate of time required for fragment shading has decreased by 2%. Through the 32-bit scenecolor format, GPU utilization was reduced by 5.3%. Shaders Busy decreased by 2%, and total GPU read from system memory decreased 330 MB/s. The amount the GPU writes to system memory was reduced by 78 MB/s and Texture memory read was also reduced by 43 MB/s.\n\n- **Shadow pass optimization**: When meshes are used as shadow casters, using high polygon LOD does not really make a difference in quality. It is preferred to use low polygon LOD which helps reduce the number of triangles. In Unreal Engine 4, low polygon LOD can be used via the console command 'ForceLODShadow'.\n\n- **Impact measured**: The number of triangles used for shadows decreased by about 120,000. The GPU counter data in AGI showed that GPU usage decreased about 2%, the amount of the GPU memory read from the system memory decreased 130MB/s, and the amount written from the GPU to the system memory decreased about 23MBs.\n\n- **Auto-instancing**: Auto-instancing, which can be applied for both shadow pass and base pass optimization, allows you to merge the same render commands at runtime and then be rendered all at once. This allowed NEWSTATE mobile to apply global illumination to individual objects without losing performance. Auto-instancing is a basic feature provided by UnrealEngine4.\n\n- **Impact measured**: Draw calls were reduced by 500. It reduced about 48% of the draw calls. GPU utilization decreased about 3.5%. These measurements were taken using OpenGL.\n\n**Figure 3**: Internal data showing GPU usage reduction\n\nResults\n-------\n\nBy using AGI, NEW STATE Mobile reduced its GPU usage by 22%. From depth prepass and shadow pass optimization, GPU usage was down by 19% and 3% respectively. Draw calls and the total memory read and written by GPU from system memory was also substantially reduced.\n\nGet started\n-----------\n\nLearn how to analyze the impact of your game on Android devices by identifying performance issues and areas to optimize with the [Android GPU Inspector](https://developer.android.com/agi) (AGI)."]]