2. Biết được nguyên nhân gây hiệu suất kém
Bên cạnh việc lưu ý về duy trì hiệu suất tốt trên
nền tảng di động, bạn cũng cần phải biết những gì làm cho trò chơi
của bạn chậm. Những thứ tôi sắp liệt kê là những gì phổ biến và
gây kém hiệu suất cho bất kì dự án nào. Khi trò chơi của bạn chạy
hcaamj trên các nền tảng đã được kiểm tra, hãy kiểm tra xem bạn có
làm những gì ở đây ko:
- Thay đổi đối tượng văn bản tại mỗi lần tích: cho dù chúng thay đổi kích thước hay văn bản, sẽ tốn khá nhiều hiệu suất. Thông thường, sự biểu diễn văn bản rất nhanh, nhưng khi được thay đổi, đối tượng phải vẽ lại văn bản và thay đổi cấu trúc lưu trữ, có thể tốn kém.
- Sử dụng quá nhiều đối tượng vật lí: đối tượng vật lí thật sự là những thao tác tốn CPU. Sử dụng quá nhiều chúng sẽ gây chậm nặng nề trò chơi của bạn. Cố gắng duy trì một vài đối tượng vật lí lớn hơn là nhiều đối tượng vật lí nhỏ.
- Tạo quá nhiều đối tượng: mặc dù việc tạo ra một đối tượng không đáng kể gì, nhưng nếu tạo ra quá nhiều cùng một lúc thì sẽ gây chậm game. Luôn luôn thiết kế trò chơi của bạn sử dụng một vài đối tượng. Tương tự, tạo ra đối tượng trên màn hình cuộn và quên xóa chúng sau khi cuộn sẽ làm nặng trò chơi.
- Sử dụng quá nhiều hiệu ứng: sử dụng 1 hiệu ứng trên quá nhiều đối tượng là một hành vi gây nặng game của bạn. Tốt hơn là nên có một layer đặc biệt để sử dụng cho đối tượng có cùng hiệu ứng, điều này sẽ làm việc thực hiện các hiệu ứng nhanh hơn, bởi vì C2 có thể thực hiện nó trong một thao tác thay vì làm nhiều thao tác giống nhau.
- Sử dụng quá nhiều sprite: giống như việc tạo quá nhiều đối tượng, sử dụng quá nhiều sprite cũng gây ảnh hưởng đến hiệu suất của game. Vì dụ của việc này xảy ra như thế nào là khi bạn sử dụng quá nhiều sprite để tạo một background, thay vì sử dụng nhiều sprite, sử dụng Tiled ground sẽ hiệu suất hơn. Nếu tạo background không phải là lí do sử dụng quá nhiều sprite, điều này có nghĩa là bạn cần thiết kế trò chơi cẩn thận hơn để tránh sử dụng quá nhiều sprite.
3. Liệt kê những sai lầm tối ưu hóa thông thường
Bây giờ bạn đã biết về những thứ khiến trò chơi
của bạn chạy kém, nhưng khác với điều này, có những điều mọi ngừoi
nghĩ là có ảnh hưởng đến việc kém hiệu suất nhưng thực ra lại ít
ảnh hưởng. Biết những điều này cũng quan trọng như việc biết các
nguyên nhân gây kém hiệu suất, bởi vì bạn có thể tiết kiệm thời gian
của mình trong việc tối ưu hóa hiệu năng. Dứơi đây là một số quan
niệm sai lầm:
- Các đối tượng ngoài màn hình vẫn hoạt động: C2 đủ thông minh để ko vẽ các đối tượng bên ngoài màn hình, điều duy nhất nó làm là chiếm ko gian bộ nhớ. GPU (bộ phận phát triển đồ họa) ko hiển thị hình ảnh đó, hình ảnh bên ngoài màn hình, ngay cả khi chúng là một phần của một sprite đơn lẻ.
- Các định dạng hình ảnh ảnh hưởng đến hiệu suất thời gian chạy: điều duy nhất nó gây ảnh hưởng là kích cỡ tải về, chúng không gây ảnh hưởng đến hiệu suất của thời gian chạy. Cũng giống với định dạng âm thanh.
- Số lượng layer hoặc layout cũng ảnh hưởng đến hiệu suất: số layer sử dụng không ảnh hưởng gì đến hiệu suất, trừu khi có nhiều layer thay đổi đột ngột độ mờ hay áp dụng dụng hiệu ứng. Sẽ ko ảnh hưởng gì nếu sử dụng nhiều layer với cài đặt mặc định. Số layout sử dụng cũng không ảnh hưởng đến hiệu suất.
- Biết bạn đang tối ưu hóa cái gì: một điều cuối cùng tôi cần nói với bạn đó là không cần tối ưu hóa những gì không cần tối ưu hóa.
4. Đánh lại tốc độ khung hình trên giây
Có lẽ chỉ số hiệu suất quan trọng nhất
trong bất kì trò chơi nào đó là nó có thể hiện thị bao nhiêu mỗi
giây, điều này được chỉ ra bởi FPS (khung hình trên giây). Các màn
hình máy tính hiện đại cập nhật ở 60Hz, có nghĩa là nó có thể
cập nhật 60 lần trên giây. Nói theo nghĩa của trò chơi, trừ khi trò
chơi của bạn phụ thuộc vào khung hình cao, ví dụ như đua xe, 30 FPS là
đủ cho game của bạn. Nếu game của bạn chạy 60 FPS hoặc hơn. Ko cần
phải cải thiện hiệu suất trò chơi nữa. Nếu trò chơi của bạn chạy
chậm hơn 30 FPS, tốc độ giảm sẽ gây chú ý đến mắt người, hãy cố
gắng duy trì mức độ 30 FPS.
5. Hiểu được phần nào của trò chơi để tối ưu hóa
Nói chung, các trò chơi xử lí 2 việc: logic và
hiển thị. Logic là nơi tất cả các luận lí trò chơi của bạn được
thực hiện, ví dụ như chạy các logic sự kiện, kiểm tra va chạm, chạy
vật lí, vân vân. Hiển thị đơn giản là quá trình vẽ hình ảnh trên
màn hình. Nó ko phải là ko bình thường cho một trò chơi dành 10%
thời gian xử lí logic và 90% trong phần hiển thị.
Điều này có nghĩa là bất cứ khi nào bạn muốn
tăng tốc trò chơi của mình, luôn luôn cố gắng cải thiện hiệu suất đồ
họa của bạn đầu tiên. Điều này có thể làm bằng cách giảm số lượng
sprite trên màn hình, cố gắng sử dụng Tiled background khi có thể, ko sử dụng quá nhiều hiệu ứng,
vân vân.
6. Xem trước qua Wifi
WAITING FOR LUV
Bạn có muốn cải thiện khả năng thiết kế đồ họa của mình? Chắc hẳn các bạn cũng biết, nếu các dòng code là linh hồn của một trò chơi, thì đồ họa chính là bộ mặt của trò chơi đó. Đồ họa đẹp, dễ nhìn sẽ khiến trò chơi của bạn tăng tỉ lệ hấp dẫn người xem đến 90%. Hiện tại có hai công cụ hỗ trợ thiết kế đồ họa game tiện nhất mà mình biết, đó là Photoshop và Illustrator. Mình sẽ cố gắng tìm kiếm và chia sẻ các đồ họa game miễn phí cho các bạn tại blog này; tuy nhiên,
một trò chơi mà 100% do chính mình tạo ra vẫn hơn là đi cóp nhặt hình ảnh từ nơi khác đúng không nào. Tiện đây, mình có chia sẻ một khóa học thiết kế đồ họa Game 2D cho Mobile. Các bạn có thể tham khảo dưới đây để được giảm 40% học phí nhé.
C2 có tính năng rất hữu ích khi bạn muốn test game
của bạn trên thiết bị khác; cái này được gọi là xem trước quá Wifi
tức thì. Ví dụ, nếu bạn có một máy tính hay một Ipad sử dụng chung
một kết nối Wifi, bạn có thể test game trên Ipad mà không cần xuất game
ra trước.
Để sử dụng tính năng này, chúng ta phải kích hoạt
nó từ C2. Mở File menu và sau
đó là hộp thoại Preferences. Sau
khi hộp thoại Preferences, lựa
chọn Preview tab và nhìn vào phần
Preview on LAN address. Theo định
nghĩa, nó sẽ hiển thị localhost,
điều này có nghĩa là bạn đnag xem trước trên PC của bạn. Kích vào
hộp nhỏ bên phải để hiển thị địa chỉ local:
Danh sách local addresses là địa chỉ mạng địa phương của bạn, nó thường xuất hiện theo định dạng sau: 129.168.X.Y. thông thường, chỉ có một trong số đó ngoài localhost; chọn nó và nhấn nút OK.
Sau đó, nhấn nút Ok trong hôp thoại Preferences. Bước tiếp theo là đóng
C2 và khởi động lại với sự cho phép của quản trị viên (adminstrator). Nếu bạn chạy project của bạn bây giờ, bạn sẽ nhận thấy sự thay
đổi nhỏ trong địa chỉ của trò chơi được hiển thị ở thanh địa chỉ,
điều này khác cho mỗi thiết lập. Nó sẽ như thế này:
Nếu bạn gõ địa chỉ được hiển thị ở đây trên
trình duyệt của di động hay máy tính bảng, bạn sẽ có thể xem trước
game trên điện thoại của mình. Điều này rất hữu ích khi bạn đang tạo
các trò chơi di động, vì nó tiết kiệm nhiều thời gian và công sức.
Xem trước qua Wifi không có sẵn trong bản free.
Đừng đóng Preview tab, hãy thử thay đổi một cái gì đó trong project và chạy lại nó. Bạn sẽ thấy trình duyệt trên PC hay thiết bị của bạn tự động làm mới, hiển thị bản mới nhất của trò chơi. Điều này thật sự tuyệt vời!
Bài 3. Sử dụng bộ nhớ của bạn một cách khôn ngoan
Được rồi, tôi đã đề cập đến những điều thông
thường và kĩ thuật bạn nên biết khi bạn muốn cải thiện hiệu suất
trò chơi của mình. Tuy nhiên, có một điều bạn cần phải biết khi phát
triển những trò chơi: bộ nhớ. Thiết bị di động có bộ nhớ hạn chế, chính
vì vậy luôn lưu ý đến bộ nhớ khi làm game.
1. Tránh sử dụng các tệp hình ảnh lớn
Có thể bạn vẫn nhớ tôi đã nói rằng không sử dụng
quá nhiều sprite trong project của bạn, hoặc nếu bạn cần sử dụng một
hình ảnh liên tục, thì tốt hơn nên sử dụng Tiled background thay thế,
bởi vì C2 coi nó như một đối tượng. Một điều bạn cần lưu ý là bạn
không nên sử dụng một tệp hình ảnh quá lớn hoặc chi tiết trong trò chơi
của bạn. Nếu bạn là một nhà thiết kế và muốn sử dụng hình ảnh HD
cho level của bạn, hãy biết rằng nó sẽ không hoạt động, đặc biệt là
trên di động.
Hãy để tôi giải thích. Hình ảnh được tạo từ các
điểm ảnh, chính vì vậy một hình ảnh 1920 x 1080 pixels sẽ bao gồm
2073600 pixels. Mỗi pixel chiếm khoảng 4 bytes trong bộ nhớ cho các giá
trị đỏ, xanh lá cây, xanh dương và trong suốt. Để tìm ra không gian bộ
nhớ cho hình ảnh này, chúng ta chỉ cần một phép tính đơn giản:
2073600 x 4 = 8294400 bytes, khoảng 8 megabytes.
Nhiều thiết bị không hỗ trợ hình ảnh mà kích thước
của nó không mũ hai, tức là 16x16, 32x32, 128x128 và vân vân. Hình ảnh ko
có kích cỡ mũ hai sẽ được đặt trong khối bộ nhớ đủ để chứa chúng.
Trong trường hợp tệp hình ảnh HD của chúng ta, chúng sẽ được đặt
trong khối bộ nhớ của kích cỡ 2048x2048; tức là 8 MB sẽ trở thành 16
MB.
Có thể bạn đang nghĩ, vấn đề ở đâu khi mà máy
tính ngày nay có nhiều hơn 4GB bộ nhớ? Máy tính thường có bộ nhớ
video / VRAM cho việc hiển thị, và cho hiệu suất tối đa, tất cả hình
ảnh phải phù hợp với nó. Nếu hệ thống chỉ có 256MB VRAM, bạn chỉ
có thể đặt 32 hình anh HD vào trong đó, và đây là nếu bạn được phép
truy cập tất cả VRAM. Hệ điều hành sẽ sử dụng một số VRAM cho các
ứng dụng khác, chính vì vậy hầu hết thời gian bạn ko thể sử dụng
tất cả VRAM và đừng qên rằng bạn còn sử dụng hình ảnh khác ngoài
hình ảnh HD.
Điều này thậm chí còn đáng quan tâm hơn trên thiết
bị di động, bởi vì hầu hết thiết bị di động không có VRAM và sử dụng
bộ nhớ hệ thống cho mọi thứ. Có thể một chiếc điện thoại di động
có khoảng 100 MB bộ nhớ có sẵn. Giả sử trò chơi của bạn dùng một
nửa bộ nhớ có sẵn, khoảng 50 MB, và hình ảnh HD của bạn chiếm đến 16
MB, bạn sẽ chỉ có chỗ cho hai hình ảnh. Nhiều vãi nhỉ, hừm z.z.z.z.
Hình
ảnh phải được thiết kế theo kích thước dự kiến của chúng trong trò
chơi. Không sử dụng hình ảnh quá lớn và thay đổi kích thước của
chúng trong C2 bằng cách kéo các điểm thay đổi kích thước. Điều này
sẽ dẫn đến một hình ảnh lộn xộn, lỗi.
2. Thực hiện đúng cách
Hãy để tôi nói cho bạn một bí mật: không ai tạo một
cấp độ game với quá nhiều hình ảnh lớn, không phải tôi, không phải tất cả
các nhà phát triển khác. Bạn không thể làm một trò chơi nhanh, mượt mà
với một cái background lớn như thế. Những gì bạn có thể làm thay
vào đó là sử dụng Tiled background để sử dụng lặp lại một sprite mà
ko ảnh hưởng đến hiệu suất và sử dụng một số sprite khác để thêm
các biến thể. Bạn cũng có thể xoay và cân đối các đối tượng để
thực hiện mức độ cảu bạn ít lặp đi lặp lại.
Ảnh chụp màn hình tiếp theo là ví dụ về cách
bạn có thể sử dụng nhiều sprite nhỏ để tạo một cấp độ. Một lợi
thế của việc làm thế này là bạn có thể sử dụng lại chúng để tạo
cấp độ khác. Một điểm cộng nữa là bạn có thể tạo trình chỉnh sửa
cấp độ đặc trưng cho game của bạn, và các nhà thiết kế có thể sử
dụng các sprite này để tạo một cấp độ, trong khi các lập trình viên
và họa sĩ làm công việc của họ; đó chính là tăng năng suất.
Ảnh chụp dưới đây hiển thị ví dụ của một cấp độ bao gồm
nhiều đối tượng nhỏ, một trong số này tròn:
Một điểm tốt khác khi bạn tạo cấp độ của bạn
theo cách này là bạn có thể thêm cái này vào bộ máy gameplay của
bạn. Bạn có thể đẩy các hộp, hoặc một quả bom để nổ, nó phụ
thuộc vào sự sáng tạo của bạn.
3. Construct 2 - kết cấu tải
Trong C2, kết cấu được tải trên layout, điều này
có nghĩa là nó sẽ tải tất cả kết cấu mà layout đó sẽ sử dụng
trước khi bắt đầu. Điều này làm cho trò chơi chạy nhanh hơn, bởi vì
tải kết cấu trong khi chơi sẽ làm trò chơi bị dừng một chút, rất
khó chịu. Khi chuyển sang layout khác, C2 sẽ loại bỏ tất cả các kết
cấu ko sử dụng đến và tải các kết cấu ở layout tiếp theo.
Điều này có nghĩa là việc sử dụng bộ nhớ của
trò chơi là kết quả của layout và hầu hết các hình ảnh, ko phải
tổng số hình ảnh được sử dụng trong trò chơi. Điều này cho phép bạn
có một thiết lập của sprite cho một khu rừng, hay một thiết lập khác
cho núi, hoặc dung nham.
4. Những hạn chế trên thiết bị di động
Mỗi pixel trên thiết bị di động chỉ có thể vẽ 3
lần trên mỗi khung hình trong khi vẫn duy trì 60 FPS; điều này có
nghĩa là bạn chỉ có thể sử dụng 3 hình ảnh kích cỡ toàn màn hình
để duy trì hiệu suất 60 FPS. Tôi đã đề cập ở phần đầu chương này
rằng một hình ảnh cũng bao gồm các điểm ảnh trong suốt, vì vậy nếu
bạn có một hình ảnh quá nhiều điểm trong suốt, bạn nên cân nhắc
việc cắt hình ảnh này thành bộ phận nhỏ hơn để tránh ảnh hưởng
đến hiệu suất.
GPU xử lí một hình ảnh bất kể màu sắc hay thành
phần của giá trị alpha; điều này có nghĩa là các phần trong suốt
của hình ảnh cũng được hiển thị. Đây là một hạn chế phần cứng, không chỉ riêng C2 mà các framework khác, có thể tránh được nó. Giải pháp tốt nhất là sử dụng nhiều hình
ảnh nhỏ hơn, bởi vì hiển thị nhiều hình ảnh nhỏ dễ dàng hơn vẽ một
hình ảnh lớn trong 1 hành động.
Tổng kết
Biết làm một trò chơi là không đủ, bạn cần phải
biết cách tối ưu hóa nó. Đảm bảo rằng trò chơi của bạn chạy đủ
nhanh trên bất kì thiết bị nào. Có rất nhiều thứ mà bạn cần chắc
chắn rằng hiệu suất ổn định, hãy test trước trên mọi thiết bị có
thể. Bạn có thể tăng hiệu suất bằng cách không tạo quá nhiều đối
tượng trên màn hình. Bạn nên nhớ rằng physic object tốn nhiều CPU, hãy
cố đừng sử dụng chúng quá nhiều.
Trong việc sử dụng asset của bạn, bạn cần phải
nhớ định dạng tệp tốt nhất mà bạn sử dụng: 32 bit với hình ảnh PNG
và 16 bit WAV với tệp âm thanh. C2 có thể chuyển đổi âm thanh sang các
tệp phù hợp với mọi trình duyệt hiện nay. Nên sử dụng nhiều hình
ảnh nhỏ thay vì một hình ảnh lớn.
Bạn đã biết cách tạo một trò chơi trong C2 và
các best practice để sử dụng khi tạo game. Chỉ còn một điều cuối
cùng bạn cần biết: xuất bản trò chơi của bạn, đưa trò chơi ra khỏi
C2 để mọi người cùng chơi. Bạn sẽ được học điều này trong chương
cuối.
Bản dịch do construct2vn.ga thực hiện
Ai sao chép hay chia sẻ hãy ghi nguồn và đưa link www.construct2vn.ga vào đầu bài chia sẻ nhé
Ai sao chép hay chia sẻ hãy ghi nguồn và đưa link www.construct2vn.ga vào đầu bài chia sẻ nhé