nói dối e blog

Công Cụ Hỗ Trợ Avalon Được Đề Cập Lần Trước

Trước đó mình đã chia sẻ một ý tưởng về công cụ hỗ trợ cho trò chơi Resistance: Avalon. Mục tiêu chính là sử dụng điện thoại thông minh để đơn giản hóa các giai đoạn phức tạp như “Đêm xuống, hãy nhắm mắt” hoặc xác định vai trò của người chơi. Thay vì cần một người điều phối liên tục hướng dẫn, mọi người chỉ cần liếc qua màn hình điện thoại là nắm bắt được diễn biến trò chơi. Điều này giúp loại bỏ hoàn toàn vai trò của MC và các đạo cụ vật lý rườm rà, cho phép chơi game linh hoạt ngay trên bàn ăn hoặc bất kỳ đâu mà không cần không gian đặc biệt.

Dự Án Việt Hóa Xenonauts

Là một game thủ yêu thích dòng game X-COM từ những phiên bản đầu tiên (bắt đầu chơi từ năm 1994 và gắn bó suốt 3 năm), phiên bản làm lại chính thức mới nhất thật sự chưa thể lấp đầy kỳ vọng của tôi. Với tư cách là một người kế thừa tinh thần của tác phẩm gốc, Xenonauts chính là trò chơi mang lại cho tôi cảm giác chơi game kinh điển đó.

Thiết Kế Máy Chủ MMO Dựa Trên Skynet

Gần đây, đối tác Momo đã mang theo một nhà phát triển game đến công ty chúng tôi để tham vấn về các vấn đề gặp phải khi triển khai dự án game MMO sử dụng framework Skynet. Trò chơi MMO của họ đang trong giai đoạn chuẩn bị ra mắt nhưng đã bộc lộ nhiều vấn đề nghiêm trọng trong quá trình thử nghiệm tải. Mặc dù qua phân tích, chúng tôi phát hiện phần mềm thử nghiệm tải có nhiều lỗi lập trình, nhưng đồng thời cũng phơi bày những điểm yếu trong thiết kế kiến trúc máy chủ.

Thư Viện Đa Nhiệm Ltask Cho Lua

Ngày 7 tháng 2 năm 2021: Thư viện này đã được thay thế bằng một phiên bản hoàn toàn mới. Chi tiết xem tại:

Câu chuyện bắt đầu khi nhóm kỹ thuật của chúng tôi phỏng vấn một ứng viên. Dự án gần đây nhất của bạn ấy là một hệ thống tên là luajit.io. Sau buổi phỏng vấn, bạn ấy đã dành vài giờ đồng hồ để thảo luận sâu về dự án này với tôi. Ý tưởng cốt lõi là xây dựng một web server dựa trên LuaJIT, tương tự như ngx_lua nhưng không phụ thuộc vào Nginx. Bạn ấy chia sẻ nhiều vấn đề gặp phải với LuaJIT, nhưng vì lý do hiệu năng nên không muốn chuyển sang Lua thuần.

Thêm Hỗ Trợ Unordered Map Cho Sproto

Tôi đã dành 2 ngày để bổ sung hỗ trợ unordered map (bản đồ không thứ tự) cho thư viện sproto, một phần mềm serialize dữ liệu nhẹ dành cho Lua. Tính năng mới này giải quyết một vấn đề rất thực tế trong phát triển game và ứng dụng.

Bối cảnh vấn đề Trước đây, sproto hỗ trợ kiểu dữ liệu array (mảng), nhưng trong nhiều trường hợp, việc sử dụng mảng không phải là lựa chọn tối ưu khi cần xử lý lượng lớn dữ liệu cấu trúc cùng loại. Chẳng hạn khi bạn cần lưu trữ cấu hình các bảng dữ liệu như thông tin bản đồ, NPC, việc dùng array khiến việc truy xuất theo ID trở nên bất tiện. Người dùng phải tự viết code duyệt qua toàn bộ mảng để xây dựng bảng index phụ.

Thoát Khỏi Vòng Lặp Vô Hạn

Trong hệ thống Skynet, module monitor đóng vai trò như “người canh gác” để phát hiện các dịch vụ có nguy cơ mắc kẹt trong vòng lặp vô hạn. Cơ chế hoạt động của nó như sau: mỗi lần xử lý một tin nhắn cho một dịch vụ, hệ thống sẽ tự động tăng giá trị một biến toàn cục liên quan đến dịch vụ đó lên 1 đơn vị. Trong khi đó, luồng monitor chạy độc lập, định kỳ kiểm tra (khoảng 5 giây) toàn bộ các luồng làm việc để phát hiện các luồng không có sự thay đổi trên biến đếm này. Nếu phát hiện một luồng “im lặng” đáng ngờ, hệ thống sẽ nghi ngờ rằng dịch vụ tương ứng đang bị treo trong vòng lặp vô hạn.

0%