nói dối e blog

Những Cải Tiến Đáng Kể Của Ant Engine

Trong thời gian gần đây, tôi đã tích cực tìm kiếm các dự án hợp tác nội bộ công ty để thúc đẩy ứng dụng Ant Engine. Một trong những lợi thế cốt lõi của động cơ tự phát triển này nằm ở khả năng tối ưu hóa sâu theo đặc thù từng tựa game. Trong phạm vi giới hạn phần cứng thiết bị mục tiêu, chúng tôi có thể nâng cao chất lượng hình ảnh và trải nghiệm tương tác lên mức tối đa. Điều này gần như bất khả thi với các động cơ thương mại phổ thông, nơi mà các kỹ thuật tối ưu hóa thường bị giới hạn bởi kiến trúc cố định.

Sự Chết

Trên đường đi làm buổi sáng, tôi đi qua con phố quen thuộc thì bất ngờ phát hiện một người mặc áo xanh dương đang nằm sấp trên dải phân cách bê tông giữa đường. Dòng xe cộ tấp nập qua lại, tôi chỉ kịp thoáng nhìn rồi lái xe vụt qua. Quay sang vợ ngồi bên cạnh, tôi nói: “Vợ thấy người kia kỳ lạ không?”. Cô ấy gật đầu: “Phải đấy, không hiểu anh ta làm gì giữa đường như vậy?”. Tôi trầm ngâm đáp: “Hôm qua em không để ý sao? Anh ta đã nằm nguyên tư thế đó suốt cả ngày rồi, ngay cả ngón tay cũng không nhúc nhích”.

Cải Tiến Bộ Lập Lịch Nhiệm Vụ Ltask

Trong quá trình phân tích hiệu năng của Ant Engine, chúng tôi nhận thấy cần phải nâng cấp hệ thống ltask - một trong những nền tảng cốt lõi của Ant Engine. Là hệ thống quản lý song song đa nhiệm vụ, hiệu quả của ltask trực tiếp ảnh hưởng đến tốc độ khung hình trong game - yếu tố then chốt quyết định trải nghiệm người dùng.

Khác với skynet tập trung tối ưu hiệu suất máy chủ với hàng ngàn nhiệm vụ đồng đều, ltask hoạt động trong môi trường client với đặc thù: chỉ có 1-2 nhiệm vụ nặng và nhiều nhiệm vụ nhẹ. Điều này đòi hỏi chiến lược lập lịch phải hướng đến độ trễ tối thiểu thay vì tập trung khai thác tối đa lõi CPU.

Thực Thi Hàm Không Đồng Bộ

Trong kiến trúc Skynet, các dịch vụ chạy song song với nhau, nhưng logic nội tại của từng dịch vụ lại được thiết kế theo mô hình tuần tự. Nhà phát triển tự chia nhỏ công việc thành các “khoảng thời gian xử lý” (time slice), mỗi khoảng này sẽ lần lượt chạy trên các luồng làm việc khác nhau. Cách phổ biến nhất là sử dụng một máy ảo Lua cho mỗi dịch vụ, kết hợp với cơ chế coroutine để phân chia các khoảng thời gian xử lý. Nhờ đó, từ góc độ lập trình, các tác vụ dường như được thực thi liên tục mà không bị ngắt quãng.

Một Công Cụ Để Định Dạng Thông Tin Văn Bản

Một công cụ nhỏ để định dạng giao diện thông tin văn bản

Thư viện bgfx cung cấp một bộ API để xuất thông tin gỡ lỗi dưới dạng văn bản, cho phép hiển thị các thông điệp lên màn hình. Tuy nhiên những API này còn rất sơ khai, chỉ đơn thuần mô phỏng bộ đệm chế độ văn bản. Để tiến gần hơn tới chức năng của một giao diện console thì vẫn còn nhiều hạn chế.

0%