Trình điều khiển AI trong trò chơi đua xe


17

Tôi tò mò làm thế nào tôi có thể điều khiển xe trong một trò chơi đua xe.

Nhân viên AI của tôi có nên điều khiển chiếc xe của mình bằng các lệnh như "ga trên 0,35, bánh xe đứng trên 0,5 phải, phanh trên 0,0" không? Hay tôi nên tính toán trước một đường cong mà chiếc xe dính vào, và hình ảnh như bánh trước quay chỉ là để làm cho mọi thứ trông ổn định? Hoặc có cách nào khác không?


4
Chiến lược "bám sát đường cong lý tưởng" chỉ hoạt động miễn là không có sự can thiệp. Khoảnh khắc các đặc vụ AI bắt đầu tương tác với những chiếc xe khác (né chúng hoặc đâm vào) chúng sẽ cần phải ứng biến.
Phi

1
Đúng, một cái gì đó giống như các nút dọc theo đường đua với chỉ đạo loại boids.
MichaelHouse

1
Đây là một bài viết về AI trong Colin McRae's Rally 2.
gre_gor

@gre_gor, đây là bài viết rất hữu ích, cảm ơn bạn!
dargemir

Câu trả lời:


16

Chúng ta có thể nói rằng ở một mức độ nào đó, trò chơi đang đi theo một con đường được tính toán trước. Vì các bản nhạc của trò chơi đua xe (thường) là một con đường được tính toán trước.

Ngay cả khi chúng ta đang nói về việc tạo ra các bản nhạc một cách ngẫu nhiên, trò chơi vẫn phải tính toán phần hiện tại của các bản nhạc cho thời điểm chiếc xe đến đó.

Vâng, đó là dễ dàng. Bất cứ điều gì khác về nó?

Cả hai, đi theo một con đường được tính toán trước và điều khiển chiếc xe một cách có hệ thống trong ngành công nghiệp trò chơi. Câu trả lời là sử dụng cả hai, loại.

Trước hết, tôi muốn đề cập rằng "tính toán một đường cong" có thể có nghĩa là hai điều:

  • Tạo các hàm sẽ xuất vị trí trên đường cong, có tham số như bạn muốn truy vấn.

  • Tạo một đường dẫn, được hiểu là danh sách các điểm (hoặc hướng dẫn và thông tin kiểm soát khác) để theo dõi.

Cái trước có thể hữu ích cho dự đoán hoặc trong một số mô phỏng vật lý. Tuy nhiên, khi chúng ta nói về việc kiểm soát một đối tượng, thì cách sau là cách tiếp cận được đề xuất.

Lưu ý: Đối với các trò chơi cũ hơn (những năm 1980), những chiếc xe khác có nhiều chướng ngại vật hơn. Họ đã ở đó để bạn tránh chúng và vượt qua chúng. Chúng tôi không nói về những điều đó.


  • Theo một đường dẫn được tính toán trước: Điều này hữu ích cho các cảnh quay hoặc cảnh lặp lại. Ví dụ, trong GTA San Andreas, nhiệm vụ rượt đuổi mục tiêu đuổi theo và tất cả các xe đều đi theo một con đường được xác định trước (điều này đảm bảo rằng mục tiêu đuổi theo có thể tránh được giao thông ※). Tuy nhiên, ngay khi bạn làm phiền họ, họ sẽ quay trở lại kiểm soát AI, trong trường hợp này, AI sẽ phải tìm đường để đi đến nơi cần đi theo con đường thông thường.

    ※: Trên thực tế, nó đã được ghi sẵn. Ghi và phát lại là một trong những tính năng mới của công cụ trò chơi GTA SA.

  • Điều khiển bởi AI:

    AI ở dạng đơn giản nhất của nó là một máy trạng thái. Nó kiểm tra trạng thái của nó và thực hiện một số hành động tùy thuộc vào đó. Tôi sẽ đề cập đến những sự kết hợp giữa trạng thái và hành động như những hành vi. Các hành động không phải phù hợp với gamepad của người chơi. Không làm các hành vi.

    Đối với một trò chơi đơn giản, có lẽ bạn chỉ cần hai hành vi đáng chú ý: 1) nếu đó là trên đường đua thì hãy theo dõi tránh những chiếc xe khác và bất kỳ chướng ngại vật nào và 2) nếu không có trên đường đua, hãy quay lại đường đua.

    Ở giai đoạn này, nó không còn xa nữa khi đi theo một con đường (đường ray). Tuy nhiên, vì các đường đua không thực sự là một đường, chúng tôi không nói về việc đi theo một con đường, mà ở gần nó (trong khi tránh những chiếc xe khác và bất kỳ chướng ngại vật nào). Điều đó có nghĩa là AI phải giải quyết việc điều khiển, hãm và tăng tốc độ.

    Đối với một trò chơi hiện đại, chiếc xe cũng sẽ được mô phỏng vật lý (để giải quyết va chạm và giữ tính chân thực). Do đó, mỗi lần lặp của vòng lặp trò chơi, chiếc xe sẽ được cập nhật dựa trên tốc độ và khả năng tăng tốc của nó, và cả hệ thống lái, phanh và tăng tốc (điều chỉnh tốc độ) sẽ được áp dụng để tuân theo hành vi hiện tại.

    Tôi cũng muốn đề cập rằng các trò chơi hiện đại có thể có những hành vi phức tạp hơn, ví dụ, AI có thể chọn đánh xe khác hoặc chặn đường của chúng. Trên thực tế, AI thậm chí có thể chọn áp dụng dựa trên một số hình thức học máy, nhưng tôi lạc đề.

    Cuối cùng, xem xét rằng nó cũng có thể hữu ích để có một điều khiển đơn giản hơn cho xe ô tô AI ngoài tầm nhìn của người chơi. Cho hiệu suất hoặc cho Rubber Banding (trong trường hợp này giữ cho xe AI ở gần người chơi để giữ cho cuộc đua thú vị, nó có thể được coi là gian lận AI khi bạn không thực sự bỏ lại phía sau bất kỳ đối thủ nào).


Về hoạt hình, thường không phải là một ý tưởng tốt để mô phỏng vật lý cho các bánh xe một cách độc lập. Nếu bạn làm điều đó, nó có thể sẽ thêm tính chân thực vào trò chơi, nhưng sẽ tốn kém về hiệu suất. Thông thường trò chơi sẽ làm động các bánh xe dựa trên hành vi thay vì thể hiện hành vi theo chuyển động của các bánh xe và mô phỏng hậu quả.

Tất nhiên, bạn có thể cần phải xem xét bổ sung trong bất cứ điều gì hoặc không các bánh xe có liên quan đến mặt đất. Và có lẽ hoạt hình đình chỉ.


Đây chỉ là câu trả lời tuyệt vời, cảm ơn bạn rất nhiều.
dargemir

0

Tôi thực sự khuyên bạn nên tách mô hình vật lý / trạng thái xe hơi khỏi bộ điều khiển xe hơi và làm cho tác nhân AI và bộ điều khiển trình phát trở thành hai loại bộ điều khiển có thể hoán đổi cho nhau, với các lệnh cấp cao giống như các câu hỏi mà bạn đề xuất trong câu hỏi của bạn.

Điều này có một số hiệu ứng đẹp:

  • Bạn có thể thực hiện và gỡ lỗi mô hình vật lý / trạng thái một lần cho cả người chơi và AI
  • Bất kỳ tính năng mới nào của mô hình vật lý / trạng thái ngay lập tức áp dụng cho cả người chơi và AI
  • Người chơi và xe AI hoạt động nhất quán trên đường đua, điều này làm tăng sự công bằng nhận thức và thực tế (nếu bạn muốn tạo điểm chấp cho các tay đua, tất nhiên, bạn có thể làm điều đó bằng cách thay đổi thông số trên xe)
  • Nhiều loại hỗ trợ nhiều người chơi trở nên dễ dàng hơn để phát triển.

Đây là một trường hợp cụ thể của tách MVC .


2
Tôi thích câu trả lời này, nhưng tuyên bố cuối cùng đó chỉ là vô lý. Hủy bỏ nó và bạn có một điểm từ tôi. Phân tách mối quan tâm ? - Chắc chắn rồi. Nhưng MVC không áp dụng trong bối cảnh câu trả lời đầy đủ của bạn.
Kỹ sư

1
Ngoài thực tế là khía cạnh Chế độ xem không được thảo luận trong câu hỏi hoặc câu trả lời, tại sao bạn nghĩ rằng thật vô lý khi đóng khung này là MVC?
Russell Borogove
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.