Performance Optimization In Unity
Unity performance
1
#profiler
1
optimize
9
White

Kaopiz Software Co., Ltd. viết ngày 30/11/2018

1. Giới thiệu Profiler trong Unity

Profiling là công cụ thương hay được sử dụng để cung cấp chi tiết các thông tin về phần mềm hay game đang được thực hiện. Nếu game có các vẫn đề như Low framerate (FPS) hay sử dụng nhiều bộ nhớ thì công cụ này có thể cho chúng ta thấy nguyên nhân từ đó chúng ta có thể tìm ra hướng giải quyết các vấn đề đó.
Profiler window là một profiling tool của unity. Bài viết này sẽ tìm hiểu về profiler window và cách sử dụng nó. Trước tiên chúng ta sẽ tìm hiểu các layout và các chức năng của profiler window, từ đó chúng ta có thể hiểu được nó tìm ra nguyên nhân các vấn đề về performance trong game như thế nào.
Profiler window cung cấp cho chúng ta thông tin chuyên sâu về cách các phần khác nhau của game đang chạy.

alt text

Chú ý rằng Profiler window chỉ hiển thị thông tin khi profiling data được record. Khi mở lên lần đầu, các sections sẽ trống cho đến khi chúng ta record profiling data khi chạy game

2. Layout của profiler window

Bên trái của Profiler window bạn sẽ thấy một cột của profilers.Mỗi profiler sẽ hiển thị một thông tin về khía cạnh cụ thể trong game
Các profilers bao gồm : CPU usage, GPU usage, rendering, memory usage, audio, physics and networking.
Khi dữ liệu lược tả đã được ghi lại, nửa trên của cửa sổ Profiler hiển thị dữ liệu từ mỗi profiler theo thời gian. Hiệu suất có thể khác nhau theo thời gian, vì vậy sẽ hữu ích khi xem hiệu suất từ nhiều hơn một khung hình. Một số vấn đề có thể không đổi, các vấn đề khác có thể xuất hiện chỉ với một khung hình duy nhất và các vấn đề khác có thể dần dần tốt hơn hoặc tệ hơn khi thời gian trôi qua.

alt text

Nửa dưới của profiler window sẽ hiển thị thông tin chi tiết của profiler đang được lựa chọn về của 1 frame của data

alt text

Loại dữ liệu được hiển thị ở đây phụ thuộc vào profiler đang được chọn.Ví dụ nếu memory usage được lựa chọn thì khoảng này sẽ show thông tin như các asset sử dụng nhiều memory nhất và tổng memory được sử dụng. Nếu đang render, khoảng này sẽ show số liệu thống kê (statistic) về số object được rendered hoặc số lượng các hoặt động rendered được thực hiện
Profilers cung cấp nhiều các thông tin chi tiết, nhưng chúng ta không cần sử dụng tất cả chúng. Trong thực tế chúng ta sẽ thường bắt đầu profiling game bằng cách nhìn 1 hoặc 2 profilers. Ví dụ như, nếu chúng ta có 1 game chạy chậm , chúng ta nên bắt đầu phân tích với CPU usage profiler.

alt text

CPU usage profiler cung cấp cái nhìn tổng quan một các thành phần của game tốn nhiều CPU nhất khi chạy . Chúng ta có thể sử dụng những thông tin đó để xác định những profiler sẽ được hiển thị. Ví dụ khi chúng ta xác định được rằng các chức năng vật lý là nguyên nhân khiến tốn time khi chạy, chúng ta sẽ sử dụng Physics profiler để thu thập them các thông tin chi tiết về hiệu suất các thành phần vật lý trong game.

3. Controls

Thanh profiler bên trên của màn hình chứa bảng điều khiển cho Profiler window.

alt text

Chúng ta có thể sử dụng các phương thức để start hoặc stop profiling, để enable hay disable profiling và chuyển dữ liệu thu thập được.
Một ví dụ điển hình của việc sử dụng bảng điều khiển này là việc start profiling trong game một thời gian và chụp lại vấn đề về performance và sau đó stop profiling 1 lần để lấy dữ liệu khi ta muốn. Chúng ta sẽ sử dụng timeline để điều khiển acacs bước thông qua dữ liệu cho đên skhi chúng ta thấy được 1 frame hiển thị một vấn đề về hiệu suất. Dữ liệu của vấn đề performance sẽ được hiển thị chi tiết ở nửa dưới của màn hình.

4. Recording profiling data

Tiếp theo ta sẽ tìm hiểu nó sẽ ghi và đọc dữ liệu từ game như thế nào, từ đó giúp chúng ta hiểu rõ hơn về performance trong game.
Đầu tiên chúng ta cần biết rằng tốn 1 lượng nhỏ performance khi sử dụng Profiler window để record dữ liệu. Hầu hết các profiling tools đều có điều này, và nó không khả thi để ghi lại và hiển thị lên profiling data , nó không giống như khi game chạy vì vậy có một số hiệu ứng rất nhỏ ảnh hưởng đến game khi Profiler window đang ghi.
Có thể cấu hình 1 game (profile our game) theo 2 cách : Chúng ta có thể cấu hình game khi chạy trong Unity Editor hoặc cấu hình lại game khi chạy bên ngoài Unity Editor với development build. Một development build trong game khác với cách build thông thường ở 2 cách : 1 bản development build có thể kết nối với Profiller window khi game đang chạy và có thể include files để enable debugging.
Cách tốt nhất để Profile 1 game là sử dụng development build, điều này tốt hơn so với việc sử dụng profiler game bên trong Unity Editor. Có 2 lý do cho nó, thứ nhất dữ liệu về performance và memory usage se độc lập với development build, nó sẽ thể hiện chính xác hơn so với việc profiling game trong Unity Editor. Một Profiler window ghi lại dữ liệu của chính nó khi chạy trong Unity Editor, dó đó kết quả của nó sẽ bị lệch 1 chút. Thứ hai, tốt nhất là test game trên thiết bị tương ứng. Ví dụ như với android game chúng ta sẽ test trên android device, một số vấn đề về performance sẽ được thể hiện rõ ràng khi chúng ta chạy nó trên thiết bị thật và vận hành hệ thống , trong khi chúng ta ko thể thấy nó khi test trong Unity Editor.
Có thể nói rằng, việc phân tích dữ liệu của game sử dụng Unity Editor được sử dụng rất nhiều vì tính tiện dụng của nó. Việc test được nhiều lần như vậy sẽ giúp chúng ta nhanh chóng có được kết quả của việc phân tích dữ liệu performance, ví dụ chúng ta có thể muốn enable hay disable nhiều GameObjects khi runtime để tìm ra được chỗ gay ra vấn đề về performance. Việc test bằng cách này sẽ nhanh hơn nhiều so với việc build nhiều lần. Vì thế một khi đã gần xác định được vấn đề bằng cách profiling trong Unity Editor chúng ta nên sử dụng development build để thể hiện vấn đề rõ rang hơn chỗ mà chúng ta cần fix.

5. Profiling inside the Unity Editor

Để ghi lại dữ liệu profiling từ game trong khi đang chạy trong UnityEditor chúng ta nên làm các bước:

  • Mở project mà chúng ta muốn trong Unity
  • Mở Profiler Window từ menu bar : Window -> Profiller hoặc ctrl+7
  • Khi Profiller window hiện lên bạn chắc chắn rằng Record button trong menu bả của Profiller được lựa chọn.
  • Enter play mode

6. Profiling a development build of our game

Để ghi dữ liệu profiling từ game trên thiết bị cố định, chúng ta cần tạo một development của game và sau đó connect profiler window lúc build.

Khi build và chạy game trên Windows, OSX, Linux hay WebGL chúng ta sẽ làm các bước :

  • Mở Project trong unity
  • Từ menu bar : Window -> Profiler
  • Trong tools section của Priofiler window chắc chắn rằng Record được lựa chọn.
  • Open settings build (File -> Build Settings)
  • Chắc Chắn rằng Development Build checkbox được enabled.
  • Chắc chắn rằng Autoconnect Profiler checkbox được enabled.
  • Click Build and Run.

alt text

Game sẽ chạy trên device đã được chọn và profiling data sẽ được hiển thị trên Profiler window bên trong Unity Editor theo thời gian thực khi chúng ta tương tác với game

Đến đây là kết thúc bài mở đầu , tháng sau mình sẽ giới thiệu về optimize các component, các scripts cũng như các rule cần tuân thủ cho việc tăng performance trong unity

Thanks.


Bài viết này được trích dẫn từ blog nội bộ công ty KAOPIZ - カオピーズ
Bài gốc: http://kipalog.kaopiz.com/posts/rcH2qb4Yc5WPamecXcpz3Q

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Kaopiz Software Co., Ltd.

27 bài viết.
23 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
50 2
Bài viết này được trích dẫn từ blog nội bộ công ty (Link) (Link) Bài gốc: https://kipalog.kaopiz.com/posts/RegexHocroimanhuchuahoc (Ảnh) 1. Tự...
Kaopiz Software Co., Ltd. viết 8 tháng trước
50 2
White
5 0
Mở Đầu Chắc hẳn là dev ai cũng từng nghe qua về Docker và Virtual Machine (VBox hoặc Vmware). Docker giúp cho việc xây dựng và triển khai một môi ...
Kaopiz Software Co., Ltd. viết 8 tháng trước
5 0
White
5 0
Introduction Elasticsearch là một công cụ tìm kiếm dựa trên nền tảng Apache Lucene. Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công ...
Kaopiz Software Co., Ltd. viết 8 tháng trước
5 0
Bài viết liên quan
White
4 0
Trước khi bắt đầu viết tiếp phần 2, các anh em có thể xem lại Phần 1 của mình theo đường dẫn bên dưới: (Link) Hoặc là có thể xem bài viết full cả...
Hùng Phạm viết 6 tháng trước
4 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
27 bài viết.
23 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!