Ghi lại lối chơi trong chính trò chơi?


8

Tôi hiện đang làm việc trên một trò chơi đua xe 3D cho nền tảng iOS. Tôi đã phải thực hiện một hệ thống phát lại và sau đó ghi lại phát lại đó trong một tệp video để tải nó lên YouTube.

Tôi chỉ gặp vấn đề với phần ghi âm, phần còn lại đã xong. Những gì tôi đang làm là sử dụng glReadPixels()lệnh của OpenGL ES 1.1 để ghi lại nội dung bộ đệm khung và tạo video từ các khung này trong thời gian chạy (sử dụng khung AVFoundation).

Vấn đề tôi gặp phải là tôi phải gọi glReadPixels()trong mỗi bản cập nhật rất chậm. Nó giảm FPS từ khoảng 30 xuống chỉ còn 2-3 ... Có cách nào thay thế cho glReadPixels()lệnh không? Hoặc có ai đã tạo ra một hệ thống phát lại và ghi lại thành video?

Câu trả lời:


8

Vì bạn đã có hệ thống phát lại tại chỗ, tôi khuyên bạn chỉ nên lưu trữ dữ liệu phát lại trong khi chơi trò chơi và sau đó kết xuất video từ phát lại ngoại tuyến. Ví dụ. sau khi trò chơi kết thúc và người dùng chọn đăng phát lại dưới dạng video, sau đó bạn sẽ kết xuất video từ dữ liệu phát lại (bằng cách phát lại và sử dụng glReadPixels).


k phương pháp này là mới và đáng được kiểm tra ... hey bạn đã làm điều này trước đây?
Lốc xoáy

1
Không, tôi chưa từng làm điều này trước đây. Nhưng tôi sẽ triển khai hệ thống phát lại như được nêu trong câu hỏi này và sau đó kết xuất các khung hình ngoài màn hình, có thể sử dụng phương thức kết xuất để kết cấu sau khi cuộc đua kết thúc.
bummzack

2
Tôi nghĩ rằng hầu hết các trò chơi làm điều này (Starcraft cho một người chắc chắn làm). Tuy nhiên, bạn phải chắc chắn rằng mô phỏng của bạn là hoàn toàn xác định, nghĩa là, đưa ra một bộ đầu vào nhất định, bạn sẽ LUÔN có cùng một đầu ra. Ngoài ra, dữ liệu phát lại của bạn nhỏ hơn đáng kể và có thể chia sẻ.
pek

@bummzack - các liên kết bạn cung cấp sẽ rất hữu ích với tôi ... cảm ơn vì điều đó
Tornado

0

Tôi nghĩ cách đơn giản nhất là ghi lại các hành động và trạng thái của người dùng và AI trong quá trình chơi trò chơi, chứ không phải các khung hình thực tế. Sau khi chơi xong, người chơi hoàn thành cuộc đua hoặc thoát khỏi menu chính, họ được cung cấp tùy chọn để xem lại (hoặc lưu một) và chỉ sau đó những hành động đó được sử dụng để tạo lại khung bằng cách phát lại các hành động và nhà nước thông qua các công cụ trò chơi. Điều này có lợi ích bổ sung là không (về cơ bản) phải vẽ mỗi khung hình đầy đủ nhiều lần trong quá trình chơi trò chơi.


2
Tôi về cơ bản đã đưa ra câu trả lời tương tự. Điều gì phân biệt cách tiếp cận của bạn với tôi?
bummzack

Một cảnh báo ở đây là nếu bạn có AI không xác định. Vì là trò chơi đua xe, bạn cần đảm bảo tất cả các tay đua AI hành xử giống hệt như khi bạn phát lại dữ liệu phát lại của người chơi.
Apreche
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.