Để sử dụng Watch tab, trước hết bạn phải chọn
thuộc tính mà bạn muốn xem. Bạn có thể làm điều này bằng cách
kích vào biểu tượng mắt bên cạnh mỗi thuộc tính.
Sau đó, bạn
có thể thấy thuộc tính được xem ở Watch
tab:
Sau đó, bạn
có thể thấy tất cả các thuộc tính đã xem, được phân loại theo đối
tượng nào chứa thuộc tính. Khi trò chơi được tiếp tục, bạn có thể
thấy sự thay đổi ở những giá trị này trong thời gian thực; đây là
cách hay để kiểm tra nếu bạn nghĩa rằng có nhiều hơn một giá trị
của thuộc tính cần kiểm tra. Bạn có thể xóa một thuộc tính ở Watch tab bằng cách kích vào biểu
tượng gạch chéo ở phái bên tay phải của thuộc tính:
Tab thứ 3
của công cụ gỡ lỗi là Profile
tab; nó sẽ cung cấp lời giải thích chi tiết hơn về hiệu năng của CPU.
Trò chơi phải chạy liên tục để có thể thu thập dữ liệu. Sau đó nó
cho thấy ước tính thời gian CPU được sử dụng là bao nhiêu trong mỗi
quá trình. Các hồ sơ cập nhật dữ liệu cho thấy mỗi một giây, giá
trị được hiển thị cho 2 giây trước đó.
Hãy nhớ rằng,
việc sử dụng CPU chỉ là ước tính, do đó, các giá trị hiển thị trong
hồ sơ không phải lúc nào cũng chính xác. Các chi tiết được trình bày
ở đây chỉ nói về các quá trình liên quan đến JavaScript, trong khi CPU
có thể làm việc với các tác vụ khác, chẳng hạn như xử lí âm thanh.
Ngoài ra hồ sơ không tính toán thời gian nó lấy cho CPU để biểu diễn
trò chơi trên màn hình.
Mặc dù
nhược điểm của nó, hồ sơ có thể được sử dụng để xác định những
nơi nó cần để tối ưu hóa nếu có rắc rối về hiệu năng. chúng ta sẽ
thảo luận chi tiết về tối ưu hóa sau.
4. Đọc hồ sơ
Được rồi,
tôi nghĩ sẽ rất khó để biết hồ sơ hiển thị những gì chỉ với hình
ảnh trước, chính vì vậy tôi sẽ chỉ cho bạn biết cách đọc hồ sơ. Hồ
sơ chia thành vài phần hiển thị nơi quy trình trò chơi của bạn đang
diễn ra. Các phần đó như sau:
- Events: điều này cho bạn biết bạn dành bao nhiêu thời gian chạy logic trong event sheet.
- Physics simulation: cái này trình bày thời gian chạy các tính toán vật lí trong game. Bởi vì vật lí có thể tăng cường độ CPU, chú ý tới điều này nếu bạn có nhiều đối tượng vật lí.
- Draw call: điều này cho thấy phải mất bao lâu cho CPU để đưa ra giải thích các hướng gọi, nó ko bao gồm thời gian nó lấy cho GPU để vẽ đồ họa. Thỉnh thoảng, vẽ các hướng gọi mất nhiều thời gian, đặc biệt nếu bạn có nhiều đối tượng được hiển thị trên màn hình cùng một lúc.
- Engine: đây là thời gian cho việc tính toán C2, không bao gồm bất cứ thứ gì được kể trước đó. Điều này nghĩa là chăm sóc các hành vi của đối tượng khác nhau và các quá trình engine khác trong background.
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é.
5. Sơ lược hiệu suất
Ở phía trên
cùng bên trái của công cụ gỡ lỗi, bạn có thể thấy sơ lược hiệu
suất của trò chơi. Bạn có thể sử dụng cái này để đo tốc độ trò
chơi của bạn nhanh như thế nào. Các gái trị như sau:
- The objects cout: đây là tổng số các đối tượng được tạo, cố không làm quá nhiều đối tượng vì nó có thể làm giảm hiệu suất.
- The framerate: cái này hiển thị trò chơi chạy bao nhiêu lần trên giây; các trò chơi nên chạy ở 60 fps, khoảng từ 30 đến 60 là tốt.
- The estimated CPU time: cái này ước tình thời gian CPU được sử dụng trong game. Đây chỉ là ước tính và không phải lúc nào cũng chính xác. Nếu bạn thấy số này đi lên, điều này có nghĩa là CPU đang phân bố rất nhiều năng lượng để thực hiện logic của trò chơi. Bạn có thể cố gắng làm những thứ hiệu qả hơn bởi không làm qá nhiều thứ ở mỗi lần tích.
- The estimated image-memory use: đây là ước tính có bao nhiêu không gian trong bộ nhớ được sử dụng bởi hình ảnh trong game. Cái này chỉ trình bộ nhớ được sử dụng bởi các hình ảnh đã tải, bởi vì những hình ảnh sử dụng nhiều không gian nhất trong một trò chơi. Chú ý rằng cái này ko trình bộ nhớ được sử dụng bởi âm nhạc và hiệu ứng âm thanh. Nếu con số cao, tức là bạn đang sử dụng quá nhiều hình ảnh lớn có thể làm chậm trò chơi, chuyển sang những hình ảnh nhỏ hơn là ý tưởng hay.
- Thư renderer: cái này nói cho bạn biết bạn sử dụng loại báo cáo nào trong C2. Để hiệu suất nhanh hơn, bạn nên sử dụng webgl thay cho canvas2d. Nhưng nếu thiết bị hoặc máy tính mà trò chơi chạy ko hỗ trợ webgl, C2 sẽ trở lại canvas2d.
6. Sử dụng các điểm ngắt
C2 có
một công cụ gỡ lỗi mà các ngôn ngữ lập trình truyền thống cũng có:
breakpoint. Breakpoint là một tính năng tân tiến có thể giúp gỡ lỗi
trong game của bạn. Breakpoint dừng việc chạy game ngay trước sự kiện
đánh dấu với nó được thực hiện và cho phép bạn kiểm tra cẩn thận
thuộc tính của đối tượng trước khi tiếp tục.
Breakpoint
ko có sẵn trong bản free.
Để sử dụng
breakpoint bạn cần kích chuột phải vào một sự kiện, một điều kiện
của sự kiện hay một hành động của sự kiện mà bạn muốn kiểm tra.
Một cửa sổ pop up sẽ xuất hiện và chọn thiết lập Toggle breakpoint. Bạn cũng có thể xóa một breakpoint được
áp dụng trước đó theo cách thức được chỉ trong màn hình sau:
Bạn có thể
áp dụng breakpoint trong sự kiện hoặc hành động ngoại trừ:
- Trigger
- Sự kiện phụ của trigger
- Loop (các vòng lặp)
Bạn có thể
áp dụng cho nó bất cứ sự kiện phụ nào nếu nó ko dưới 1 trigger. Khi
bạn áp dụng một breakpoint tới một sự kiện, hệ thông breakpoint sẽ được
hiển thị bên cạnh nó:
Các breakpoint không hoạt động nếu bạn chạy layout bình thường, chúng chỉ hoạt động nếu bạn sửa lỗi layout. Tôi đã nói rằng breakpoint dừng game trước khi sự kiện đánh dấu với nó được chạy; trong trường hợp các sự kiện, điều này nghĩa là trò chơi sẽ dừng trước khi các điều kiện được đánh giá. Trình gỡ lỗi ko biết cả điều kiện được đáp ứng và sự kiện đang chạy hay ko, bạn phải tiếp tục thực hiện để có thể biết.
Khi trình gỡ
lỗi gặp một breakpoint, các nút Pause
và Resume sẽ thay đổi thành Continue và Next. Nút Continue làm
cho game chạy lại đến khi nó qua một breakpoint khác trong khi nút Next đi tiếp một bước tại thời
điểm dừng tới sự kiện tiếp theo. Cái này rất hữu dụng khi bạn muốn
kiểm tra thay đổi trong tab Inspector
từng bước một.
Khi trò chơi
bị dừng lúc gặp breakpoint, sự kiện tương ứng sẽ được vạch ra trong
một hình chữ nhật gạch đỏ để chỉ ra rằng đó là một breakpoint được
thử nghiệm.
Nếu bạn áp
dụng một breakpoint vào điều kiện của sự kiện, sau đó trò chơi sẽ
dừng trước khi sự kiện được kiểm tra, và C2 sẽ không biết điều kiện
được đpá ứng hay ko. Nếu bạn có một sự kiện với hơn một điều kiện,
và bạn đặt một breakpoint ở điều kiện thứ hai, nó sẽ được đánh giá
sau khi điều kiện một được kiểm tra. Nếu điều kiện một không được đáp
ứng, breakpoint ở điều kiện thứ 2 sẽ ko được kiểm tra, và C2 sẽ tiếp
tục sự kiện tiếp theo.
Nếu bạn đặt
một breakpoint trên một hành động, trò chơi sẽ tạm dừng sau khi sự
kiện được đánh giá và tất cả các điều kiện được đáp ứng trước khi
hành động đầu tiên được thực hiện. Đặt một breakpoint trên hành động
đầu tiên trong một sự kiện là tốt, bởi vì nó chắc chắn rằng tất
cả các điều kiện được đáp ứng trước khi dừng trò chơi trên một
breakpoint.
Nơi cuối
cùng bạn có thể áp dụng breakpoint là sự kiện phụ. Giống như khi
breakpoint được áp dụng cho một hành động, đặt các breakpoint trong sự
kiện phụ chỉ dừng trò chơi sau khi sự kiện được đánh giá và tất cả
điều kiện được đáp ứng. Nếu điều kiện không được đáp ứng, C2 sẽ tiếp
tục cho sự kiện tiếp theo.
7. Mức độ khác nhau của lỗi
Trước khi
kết thúc chương này, chúng ta sẽ thảo luận chút về mức độ khác nhau
của lỗi. Hầu hết các nhà phát triển game đều dùng cái này để phân
loại lỗi mà họ gặp phải trong trò chơi của họ và dùng nó làm cơ
sở cho những lỗi cần chăm sóc đầu tiên. Theo mức độ, được sắp xếp
từ quan trọng đến bình thường như sau:
- Critical bugs: (lỗi nghiêm trọng) Đây là những lỗi sẽ làm trò chơi giật lag hoặc đơ hoặc làm cho người chơi không thể tiếp tục trò chơi được nữa. Những lỗi này có thể khiến cấp độ tiếp theo ko load được hay dừng hoạt động của nút Play trên màn hình.
- Major bugs: (lỗi chính) những lỗi này gây khó khăn cho người chơi để chơi game. Đây có thể là dưới hình thức một nhân vật ngẫu nhiên dừng tấn công hay một khả năng nhất định không làm việc, hoặc kẻ thù không chết khi thanh HP của chúng dưới 0.
- Minor bug: (lỗi nhỏ) đây là những lỗi không gây ra rắc rối trong game nhưng vẫn đáng chú ý. Những lỗi này có thể gây hiển thị sai đồ họa hay kẻ địch bất động.
Sửa lỗi luôn
luôn là quan trọng, bắt đầu từ những lỗi quan trọng đến lỗi nhỏ, không chỉ thế, sửa những lỗi quan trọng khiến việc test game dễ dàng hơn.
Tổng kết
Bạn đã học
được rất nhiều kĩ năng quan trọng trong chương này, nhất là sửa lỗi.
Biết về cách gỡ lỗi trong game vô cùng hữu ích, nhưng tất nhiên vẫn
ko tốt bằng việc bạn viết đúng code ngay từ lần đầu ^^. Ở chương
tiếp theo, ta sẽ học những thực hành tốt nhất C2, bao gồm tránh lỗi
và cải thiện hiệu suất trò chơi của bạn.
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é