nói dối e blog

Sắp Xếp Thứ Tự Trong Cấu Trúc Phân Cấp Cảnh

Đây là bài viết tiếp nối của bài “Quản lý cấu trúc phân cấp cảnh”. Gần đây tôi đang tái cấu trúc mô-đun quản lý cảnh của engine. Một trong những động lực chính là do các chức năng hiện có đang trở nên quá phức tạp (vì yêu cầu liên tục tăng) và chúng tôi phải sửa chữa nhiều lỗi phát sinh.

Sau vài ngày suy ngẫm, tôi quyết định tách riêng phần quản lý thứ tự phân cấp ra thành một mô-đun độc lập. Vấn đề cụ thể ở đây liên quan đến:

Thiết Kế Prefab Trong Động Cơ Game

Khái niệm Prefab được Unity phổ biến rộng rãi, nhưng trước đó Unreal Engine đã có một công nghệ tương tự gọi là Blueprint. Dù có nhiều điểm chung, hai công nghệ này về bản chất không hoàn toàn giống nhau. Trong quá trình tự thiết kế động cơ game, tôi ưa chuộng mô hình Prefab của Unity hơn, tuy nhiên xét về mặt ngữ nghĩa thì cái tên Blueprint lại phản ánh chính xác bản chất hơn.

Tối Ưu Hóa Bất Biến Và Phép Toán

Cách đây một năm, nhóm chúng tôi đã tiến hành phân tích hiệu năng trên engine game đang phát triển. Khi số lượng đối tượng trong cảnh tăng cao, chúng tôi nhận thấy có một phép toán chiếm hơn 10% thời gian CPU. Dù nhận định đây là điểm có tiềm năng tối ưu, nhưng do khâu ưu tiên công việc, vấn đề đã bị tạm gác lại.

Cụ thể, hệ thống engine mỗi khung hình đều đưa các đối tượng trong cảnh vào “hàng đợi kết xuất” (render queue). Mỗi đối tượng có thông tin lưới, vật liệu, khối bao bọc AABB (Axis-Aligned Bounding Box) và ma trận không gian thế giới.

Tối Ưu Hóa Phân Rã Ma Trận Trong Engine Game

Trong engine game của chúng tôi, một chức năng quan trọng là phân rã ma trận 4x4 thành ba thành phần cơ bản: T (dịch chuyển), R (xuyên suốt), và S (tỷ lệ). Trong đó, T có thể thu được trực tiếp từ hàng cuối cùng của ma trận. Tuy nhiên, việc phân tách SR lại đòi hỏi chi phí tính toán cao hơn, đặc biệt là R phụ thuộc vào kết quả trích xuất S.

Cải Tiến Phiên Bản Cache Server Của Skynet

Dự án cache server thay thế cho phiên bản Unity cache server do tôi phát triển từ năm ngoái đã dần thay thế hoàn toàn phiên bản chính thức của Unity trong nội bộ công ty. Hệ thống này nhận được phản hồi tích cực từ người dùng nhờ hiệu năng vượt trội, khả năng bảo trì dễ dàng và độ ổn định cao hơn đáng kể so với phiên bản gốc.

Một Vấn Đề Với Git Shallow Clone

Trong quá trình làm việc từ xa gần đây, tôi đã gặp phải một sự cố khó chịu ngay từ đầu: đường truyền mạng gia đình không ổn định khiến việc git clone các kho dữ liệu lớn trở nên bất khả thi. Dù biết rằng git hỗ trợ clone nông thông qua tùy chọn –depth 1, cho phép lấy về toàn bộ các tập tin cần thiết cho phiên bản HEAD của nhánh cụ thể, nhưng tôi vẫn gặp trục trặc.

0%