Tôi đang tạo trò chơi dựa trên lưới trong Java và tôi muốn triển khai ghi và phát lại trò chơi. Tôi không chắc chắn cách thực hiện việc này, mặc dù tôi đã xem xét 2 ý tưởng:Cách tốt nhất để triển khai phát lại trò chơi là gì?
Vài lần mỗi giây, tôi sẽ ghi lại toàn bộ trạng thái trò chơi. Để phát lại, tôi viết một trình kết xuất để đọc các trạng thái và cố gắng tạo ra một biểu diễn trực quan. Tuy nhiên, với điều này, tôi có thể có một tệp lưu lớn và mọi nỗ lực phát lại có thể có độ trễ đáng chú ý.
Tôi cũng có thể viết mọi lần nhấn và nhấp chuột chính vào tệp lưu. Điều này sẽ cho tôi một tập tin nhỏ hơn, và có thể phát lại với độ trễ ít hơn. Tuy nhiên, lỗi nhỏ nhất khi bắt đầu trò chơi (Ví dụ: quay 1 mili giây sau) sẽ dẫn đến trạng thái trò chơi rất khác nhau trong vài phút vào trò chơi.
Vậy thì, cách tốt nhất để triển khai phát lại trò chơi là gì?
Chỉnh sửa- Tôi không chắc chắn cách xác định trò chơi của mình, vì vậy tôi không chắc chắn rằng toàn bộ trò chơi có thể được ghép chính xác bằng cách chỉ ghi lại các lần nhấn phím và chuột.
Đây là một cách thanh lịch để xử lý. Nếu trò chơi thực tế và bản ghi âm dựa trên cùng một cơ chế thời gian/khung hình, bạn nên tránh các lỗi do vấn đề về thời gian. Nếu bạn có ngẫu nhiên trong các sự kiện của bạn, bạn có thể cần phải ghi lại giá trị hạt giống bắt đầu cho trình tạo số ngẫu nhiên của bạn. Đó là cách các chức năng 'Bản đồ ngẫu nhiên' trong các trò chơi RTS cho phép bạn tạo lại một bản đồ ngẫu nhiên mà bạn thích. –
Mẫu này cũng có thể cung cấp cho bạn khả năng Hoàn tác/Làm lại. –