Tính toán quỹ đạo tên lửa xung quanh quỹ đạo trước khi bắn


10

Tôi đang xây dựng một trò chơi với Unity3D. Đó là một bản sao Gravity Wars . Cả tháp pháo của người chơi và AI đều bắn tên lửa vào nhau (đưa ra các biến Góc và Sức mạnh), cố gắng không đâm tên lửa vào các hành tinh. Nhưng đây là câu hỏi của tôi: làm cách nào để AI tính toán sức mạnh và góc trước khi bắn tên lửa của anh ấy, xem xét cả lực hấp dẫn của một hành tinh?

Câu trả lời:


5

Một hệ thống như thế này, với nhiều cơ thể, sẽ trở nên hỗn loạn. Tôi không nghĩ rằng bạn sẽ có thể giải phương trình cho nó trong thời gian thực. Điều tốt nhất bạn có thể hy vọng là tìm ra giải pháp bằng thuật toán di truyền;

1: tạo ra một số (ví dụ 100) các giải pháp ngẫu nhiên (góc, cặp công suất).

2: mô phỏng các giải pháp này.

3: nếu có bất kỳ thứ gì trong số này, cuối cùng sẽ bắn trúng mục tiêu (hoặc đến đủ gần), Xong! Nếu không thì tiếp tục.

4: chọn 10 giải pháp tốt nhất (những giải pháp kết thúc gần nhất với mục tiêu)

5: từ 10 giải pháp này, tạo 10 con cho mỗi giải pháp, bằng cách điều chỉnh ngẫu nhiên góc và sức mạnh của chúng.

6: bây giờ bạn có 100 giải pháp mới, quay lại bước 2

Bạn sẽ cần phải giới hạn số lần lặp, trong trường hợp không có giải pháp nào được tìm thấy, hoặc mất quá nhiều thời gian để tìm kiếm.

Ngay cả cách tiếp cận này không được đảm bảo để tìm giải pháp tốt bởi vì; 1. giải pháp có thể không tồn tại 2. trong một hệ thống hỗn loạn, những thay đổi nhỏ đối với giải pháp có thể có tác động rất lớn đến kết quả


1

Bạn sẽ có thể mô phỏng một shot, mà không cần vẽ nó.

Sau đó, bạn có thể nói, mô phỏng 10 bức ảnh, và sau đó chụp bức ảnh gần nhất trong số 10 bức ảnh.


0

Cho rằng quỹ đạo của tên lửa dựa trên các đầu vào của AnglePower, bạn sẽ có thể giải (nhận được câu trả lời chính xác ) từ một phương trình nghịch đảo.

Các bước AI cơ bản (psuedo) như sau:

  1. Chọn một Powermức ngẫu nhiên . Không quan trọng giá trị chính xác là gì (ở một mức độ nào đó), miễn là nó nằm trong phạm vi hợp lý.
  2. Giải phương trình (đảo ngược từ đường dẫn thực tế) để đưa ra chính xác (tốt, càng gần càng tốt với nhân đôi) Angle.
  3. Chọn một số bù ngẫu nhiên (có thể sửa đổi) từ Angle, để điều chỉnh cho 'độ khó ' của AI.
  4. Bắn tên lửa như một người chơi, tại (ngẫu nhiên) Powervà (tính toán) Angle.

Tất nhiên bạn có thể có lửa AI ở mức ngẫu nhiên cho cả hai đầu vào, điều này có thể tạo ra một số kết quả thú vị ...


Phương pháp này có ý nghĩa hoàn hảo khi tất cả những gì bạn có là trọng lực thẳng xuống và một cơn gió không đổi, nhưng bạn sử dụng phương trình nào để đưa ra chính xác Angle"khi bạn có nhiều vật thể hấp dẫn rải rác trong vũ trụ của bạn? Sức kéo của họ phụ thuộc vào vị trí hiện tại của bạn. Một số bức ảnh thậm chí có thể không thể.
John McDonald

@ John - Nếu một cú đánh là hoàn toàn không thể (giảm giá cho sự lựa chọn năng lượng đầu vào kém), thì có một vấn đề nghiêm trọng với sân chơi của bạn. Với các loại trò chơi này, bất kỳ một trong số những người chơi nên có thể thay thế bằng AI. Cấp, các phương trình trở nên phức tạp hơn (và với nhiều cơ thể, rất nhanh chóng), nhưng nó vẫn có thể.
Clockwork-Muse

Đủ công bằng. Nhưng bạn có biết những gì bạn sử dụng cho một phương trình? Tôi nghĩ đó là lý do tại sao câu hỏi này được tạo ra.
John McDonald

John đã đúng: điều tôi đang tìm kiếm là phương trình đó.
Onofrio

@Onofrio - Xin lỗi, tôi không có các phương trình liên quan ... và có vẻ như bạn cần phép tính đa biến để thực hiện điều này 'đúng'.
Clockwork-Muse

0

Làm thế nào về việc làm cho nó thực tế bằng cách không để họ tính toán, nhưng bắt đầu với một phỏng đoán và điều chỉnh phù hợp?

Khi tôi chơi Gravity Wars, đây là những gì tôi đã làm; bắt đầu với công suất bán ngẫu nhiên và điều chỉnh theo mức tăng. Trong một vài bức ảnh, bạn sẽ thực sự gần gũi.

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.