Nhật Ký Công Việc Gần Đây
Dự án sproto cơ bản đã hoàn tất. Sau khi phiên bản chính thức của Lua 5.3 ra mắt, việc hỗ trợ kiểu số nguyên 64-bit sẽ được bổ sung. Tôi đã phát triển lớp bao bọc Lua cho sproto nhằm tối ưu hóa khả năng hỗ trợ giao thức RPC. Đồng nghiệp Zixun đã hoàn thiện phiên bản sproto sử dụng công nghệ JIT, tuy nhiên hiệu năng chưa có cải thiện rõ rệt như kỳ vọng. Trong phiên bản lớn tiếp theo của Skynet, tôi dự kiến đưa sproto vào danh sách giao thức truyền thông C/S được khuyến nghị sử dụng.
Tính năng mới đang phát triển cho Skynet cho phép ghi log toàn bộ tin nhắn đến từ bên ngoài vào một tệp tin riêng biệt cho từng dịch vụ. Hiện tại đã hỗ trợ ghi log tin nhắn thông thường và tin nhắn socket, có thể mở rộng thêm để ghi log tin nhắn multicast khi cần thiết. Ban đầu tính năng này chủ yếu phục vụ mục đích gỡ lỗi. Về lâu dài có thể phát triển công cụ hỗ trợ chuyên dụng - ví dụ như công cụ phát lại các bản ghi tin nhắn đã lưu nhằm tái hiện quá trình xử lý của dịch vụ cụ thể. Với dữ liệu thời gian và nội dung tin nhắn đã lưu trong log, trừ khi chứa địa chỉ bộ nhớ, phương pháp này sẽ hiệu quả để kiểm tra lại logic xử lý.
Hiện tại chưa gặp tình huống cần phân tích sâu như vậy (ví dụ như tái hiện lỗi dịch vụ thông qua các bản ghi lịch sử), sẽ phát triển công cụ phù hợp khi có yêu cầu cụ thể. Khi Lua 5.3 chính thức phát hành, tôi sẽ cập nhật thư viện pbc và thay thế tính năng int64 hiện tại của Skynet bằng cơ chế chính thức của Lua 5.3. Sau đó sẽ phát hành phiên bản Skynet 1.0 chính thức.
Dự án ejoy2d nhận được nhiều sự quan tâm từ đồng nghiệp công ty, vì vậy tôi đã chuyển kho lưu trữ chính sang tên tổ chức ejoy. Do hai dự án mới đang phát triển gấp gáp, gần đây ejoy2d được bổ sung nhiều API tạm thời phục vụ dự án cụ thể, chưa có thời gian chuẩn hóa hệ thống. Nhiều tính năng mới (như liên kết hạt nhân, hỗ trợ tải tài nguyên không đồng bộ) vẫn chưa được cập nhật tài liệu đầy đủ.
Kiểm thử thực tế cho thấy ejoy2d gặp vấn đề hiệu năng trên iPhone 4. Để giải quyết, chúng tôi thêm tính năng renderbuffer - cho phép xuất dữ liệu đỉnh (vertex) vào bộ đệm cố định, mang lại hiệu quả với các nền tĩnh phức tạp. Tuy nhiên điểm yếu chính vẫn nằm ở GPU iPhone 4 kém hiệu suất, khiến shader đoạn phức tạp hoạt động ì ạch. Có thể sẽ phát triển khả năng tùy chỉnh shader linh hoạt hơn cho ejoy2d.
Sau nhiều ngày tối ưu hóa, chúng tôi đã nâng fps của dự án mới từ 12 lên 18 trên iPhone 4 - tạm chấp nhận được nhưng vẫn chưa đạt mục tiêu 30fps. Có thể tiếp tục tinh chỉnh để cải thiện, tuy nhiên sẽ làm tăng độ phức tạp sản xuất. Không rõ năm sau có còn cần hỗ trợ phần cứng tầm thấp như iPhone 4 hay không.
À nhân tiện, nhân dịp Steam giảm giá, cuối tuần qua tôi đã chơi trọn vẹn phần mở rộng thứ hai của Civilization V - vẫn rất xuất sắc. Đang háo hức chờ đón ra mắt Civilization Beyond Earth vào cuối năm nay.