nói dối e blog

Vấn Đề Về Thành Phần Phân Cấp

Gần đây tôi đã dành thời gian suy ngẫm về một số thách thức trong kiến trúc ECS. Trong các tình huống nghiệp vụ cụ thể, cấu trúc dữ liệu thường mang tính phân cấp phức tạp, điều mà mô hình bảng hai chiều truyền thống khó biểu diễn hiệu quả. Vấn đề này còn liên quan đến câu hỏi quan trọng: Liệu có nên cho phép một thực thể (entity) chứa nhiều thành phần (component) cùng loại? Chẳng hạn như cách biểu diễn các ô trang bị trên nhân vật hay hệ thống hiệu ứng kỹ năng cần được quản lý ra sao?

Buồng Vang Thông Tin

Trong suốt tháng qua, dù mở Weibo hay Douban, mỗi ngày tôi đều thấy bảng tin bị chiếm lĩnh bởi “vụ phụ nữ bị xiềng xích ở Phong Huyện”. Trong giờ nghỉ trưa ở công ty, tôi cũng từng bàn luận với đồng nghiệp về sự việc này. Từ góc nhìn cá nhân, mức độ nóng và thời gian lan tỏa kéo dài như vậy trong những năm gần đây thật sự hiếm thấy. Những độc giả đang đọc bài viết này chắc hẳn đều đã hiểu rõ ngọn ngành sự việc. Nếu bạn chưa rõ chi tiết, chỉ cần tìm kiếm trên Google cụm từ “người phụ nữ 8 đứa con ở Từ Châu” hoặc “phụ nữ bị xiềng xích ở Phong Huyện” sẽ tìm được rất nhiều thông tin liên quan.

Niềm Vui Từ Factorio

Tôi đã có hơn 2000 giờ chơi Factorio được ghi lại. Từ ngày trò chơi lên Steam, tôi đã bắt đầu trải nghiệm, nhưng phần lớn thời gian tập trung vào hai năm gần đây.

Ban đầu, nhận xét của tôi trên Steam chỉ vỏn vẹn một câu: “Trò chơi này thỏa mãn mọi ước mơ của tôi về thể loại xây dựng thành phố, điều phối logistics, tự động hóa và thậm chí cả mô phỏng đường sắt”. Cảm xúc ban đầu ấy vẫn nguyên vẹn đến tận hôm nay.

Tham Chiếu Đối Tượng Trong ECS

Trong hệ thống ECS, việc các Entity phải tham chiếu lẫn nhau là điều khó tránh khỏi. Bản thân tôi khi áp dụng mô hình ECS luôn khuyến khích việc sử dụng tham chiếu. Vì vậy, tôi đã xây dựng các giải pháp tương ứng cho nhiều mẫu tham chiếu phụ thuộc phổ biến.

Trong phiên bản phát triển gần đây của luaecs, chúng tôi giới thiệu một cơ chế tham chiếu ở tầng Lua: khi tạo Entity, có thể chỉ định một bảng (table) làm tham chiếu cho đối tượng đó. Hệ thống sẽ tự động cập nhật bảng này để duy trì trạng thái hợp lệ (giống như bộ lặp trong quá trình select). Nhờ đó, tầng nghiệp vụ có thể đồng bộ dữ liệu từ Entity bất kỳ lúc nào thông qua tham chiếu này.

Cấu Trúc Bảng Lua Hỗ Trợ Khai Triển Lười Biếng Và Cập Nhật Khác Biệt

Vài ngày cuối cùng trước Tết Nguyên đán, lần lượt phê duyệt phép năm cho các đồng nghiệp trong nhóm, ai nấy đều trở về quê đón Tết. Tôi ở lại công ty nghiên cứu những thứ không liên quan trực tiếp đến dự án.

Gần đây trên diễn đàn skynet, có cuộc thảo luận sôi nổi về vấn đề cập nhật bảng cấu hình. Qua nhiều năm, dù trong nội bộ công ty hay từ các nguồn bên ngoài, vấn đề này luôn được nhiều người quan tâm. Tôi quyết định tổng kết lại các yêu cầu cốt lõi:

Hệ Thống Chất Lỏng

Trong tựa game mô phỏng kiểu Factorio mà nhóm chúng tôi đang phát triển, hệ thống chất lỏng đóng vai trò trọng tâm trong cơ chế logistics. Cá nhân tôi cho rằng đây là subsystem phức tạp nhất cần xây dựng.

Factorio từng trải qua nhiều lần cải tiến hệ thống chất lỏng, với ít nhất ba bản cập nhật được ghi nhận trong nhật ký phát triển: “New fluid system”, “Fluid optimisations” và “New fluid system 2”. Là game thủ gắn bó 2000 giờ với tựa game này trong 5 năm qua, tôi nhận thấy quá trình hoàn thiện hệ thống này chưa từng dừng lại. Đến tận ngày nay, vẫn còn những hành vi “phi trực giác” tồn tại trong cách vận hành hệ thống chất lỏng.

0%