Tôi đã thử tạo một trang web để có thể chơi các game MAME cổ điển ngay trên web.
Có vẻ hiện đã có khá nhiều trang chỉ đơn giản cho chơi trên web, nhưng dường như chưa có trang nào hỗ trợ chơi mạng mượt mà ngay trên nền web, nên tôi đã làm thử với trọng tâm là chơi mạng.
Trước hết, khi người dùng tải lên ROM MAME, phía quản trị sẽ kiểm tra xem ROM đó có vấn đề gì không, sau khi được phê duyệt thì mới hiển thị cho người dùng.
Nếu là game hỗ trợ 1P, 2P thì bất kể thể loại gì, tôi cũng đã làm để có thể chơi mạng.
Backend : FastAPI, Radis, postgresql, wss, likvekit
Frontend : react + vite, tailwindCss
Ban đầu, khi chơi mạng, tôi triển khai theo kiểu mỗi bên mở trình giả lập trên web riêng và chỉ truyền thao tác phím của người dùng, nhưng đã phát sinh vấn đề rất nghiêm trọng ở phần đồng bộ. Chỉ có thao tác phím được truyền qua lại, còn các vấn đề như thiết lập nhân vật hay chênh lệch thời gian tải của trình giả lập khiến việc đồng bộ để chơi game gần như không thể. Vì vậy tôi đã nghĩ đến cách, khi bắt đầu chơi mạng, sẽ truyền toàn bộ màn hình sang trình duyệt của người tham gia. Tôi nghĩ đến LiveKit, và trong trạng thái này chỉ trao đổi thao tác phím với nhau qua WebSocket.
Lúc đó vấn đề đồng bộ mới được giải quyết hoàn toàn, nên dù là game bắn súng hay đối kháng cũng đều có thể chơi mạng mà không gặp vấn đề gì.
Tất nhiên, vấn đề còn lại là lưu lượng mạng.
Tôi đã làm tối giản để có thể chơi nhẹ nhàng, ngoài phần chơi game thì không có thêm chức năng nào khác.
Mong mọi người xem thử và cho tôi biết các điểm cần cải thiện.
Chưa có bình luận nào.