Mô hình tốc độ lan truyền thông tin ánh sáng trong sim chiến đấu không gian


29

Tôi đang làm việc trên một chiếc sim chiến đấu không gian diễn ra trên các khu vực tương đối rộng lớn (một khối không gian ~ 20 phút ánh sáng sang một bên) và sử dụng (hầu hết) vật lý thực tế. Một trong những yếu tố quan trọng tôi muốn mô hình là tốc độ lan truyền thông tin trên không gian chiến đấu - đó là, nếu Người chơi A tham gia vào ổ đĩa chính của mình ở một bên của không gian chiến đấu, sẽ có độ trễ 20 phút trước khi Người chơi B nhìn thấy và có thể phản ứng với nó

Ngay cả đối với không gian chiến đấu tương đối nhỏ, đây là một yếu tố quan trọng với tốc độ liên quan. Một con tàu dài 500m làm 30kps sẽ tự thay thế bằng toàn bộ chiều dài của nó trong 1/60 giây, do đó, ngay cả việc nhắm mục tiêu vào đối thủ chỉ cách một phần mười giây ánh sáng sẽ bị ảnh hưởng bởi độ trễ ánh sáng.

Tôi chưa từng thấy điều này được thực hiện trước đây và tôi tự hỏi liệu có một số thực tiễn tốt nhất để mô hình hóa điều này. Ngay bây giờ tôi đang đánh dấu từng sự kiện và đánh dấu nó bằng một vị trí, đặt nó vào hàng đợi và sau đó từng dấu kiểm tra xem liệu có bất kỳ đối tượng nào trong thế giới trò chơi mới ở cạnh của hình nón ánh sáng và thêm sự kiện đó không để xếp hàng cảm biến của họ. Tôi sẽ (nhưng chưa) tối ưu hóa nó bằng cách loại bỏ bất kỳ sự kiện nào đã được cảm nhận bởi tất cả các đối tượng có thể cảm nhận được, nhưng tôi vẫn nghĩ rằng điều này sẽ trở nên cồng kềnh khá nhanh, và ăn rất nhiều của các chu kỳ nếu có hàng trăm đối tượng cảm biến đang chơi (đó là thói quen khá thường xuyên).

Có mô hình dữ liệu nào phù hợp hơn cho việc này mà tôi nên kiểm tra không?


7
Không có câu trả lời, nhưng tôi sẽ nói thật là một câu hỏi hay!
Tim Holt

Whoa! Trò chơi chủ yếu là về trực quan. Tôi cần biết làm thế nào để bạn có kế hoạch trực quan hóa đối thủ khi pixel quá lớn? Chỉ số HUD đơn giản? Một trò chơi phiêu lưu chế độ văn bản? Vui lòng làm sáng tỏ cho tôi!
Jonas Byström

1
Bạn nói rằng mô hình của bạn là chính xác vật lý. Đó là Newton hay tương đối? Điều đó có thể tạo ra một sự khác biệt lớn trên quy mô như vậy.
MSalters

1
Không phải là nó trả lời câu hỏi, nhưng có lẽ nhìn vào A Slower Speed ​​of Light sẽ cho bạn một số ý tưởng.
Michael Pankov

@ JonasByström - chế độ xem đường dài khá phức tạp và tôi đang cố gắng làm sạch nó. Về cơ bản, tôi hy vọng nó sẽ là một cái nhìn xác suất về mục tiêu sẽ ở đâu trong tương lai, dựa trên độ trễ ánh sáng và ước tính của máy tính tàu của bạn về delta-v tối đa của mục tiêu. Ngay bây giờ, nó khá ít tuyệt vời hơn thế, mặc dù vậy :)
John Biesnecker

Câu trả lời:


9

Chỉ cần động não ở đây ...

Thật thú vị, độ trễ mạng là bạn của bạn trong trường hợp này. Như trong bạn MUỐN một sự chậm trễ xảy ra đối với một số gói dữ liệu, ít nhất là nếu đó là về bản vẽ. Nhưng thay vì độ trễ cơ bản mà mỗi người chơi thường có đối với tất cả các gói dữ liệu bị ảnh hưởng bởi tốc độ mạng của họ, bạn cần áp dụng độ trễ cụ thể cho từng sự kiện cho từng người chơi dựa trên độ trễ tốc độ ánh sáng.

Thông thường, máy chủ sẽ gửi các bản cập nhật cho tất cả các máy khách cùng một lúc, nhưng điều bạn cần là máy chủ tính toán "độ trễ ánh sáng" cho mỗi sự kiện (dựa trên khoảng cách của người xem), và sau đó không gửi bản cập nhật cho đến khi đó thời gian.

Vì vậy, đối với mọi sự kiện, hãy tính thời gian trễ giữa sự kiện và từng người chơi, sau đó xếp hàng sự kiện đó để không được gửi để vẽ cho người chơi đó cho đến khi thời gian trì hoãn đã qua.

Điều này không giải quyết ảnh hưởng của việc thay đổi vị trí hoặc tốc độ của người chơi sau khi sự kiện xảy ra, nhưng bạn có thể điều chỉnh các sự kiện đã được xếp hàng dựa trên các thay đổi của người chơi. Một người chơi bắt đầu di chuyển gần hơn, di chuyển sự kiện gần hơn trong thời gian. Người chơi di chuyển đi, di chuyển trong thời gian.

Sự thay đổi Doppler sẽ là một điều thú vị để đưa vào hỗn hợp, dựa trên đồng bằng chuyển động giữa người xem và sự kiện.


Tôi đã sắp xếp mô hình vị trí và tốc độ thay đổi. Mặc dù quy mô, các vật thể trong trò chơi thường không đạt được một phần đáng kể về tốc độ ánh sáng, vì vậy các sự kiện vượt qua chúng tương đối dễ dàng, nhưng có một kiểm tra tại mỗi tích tắc nếu người nhận ở trong quả cầu có thể nhìn thấy sự kiện này, vì vậy nếu bạn di chuyển tới hoặc đi ở một clip hay, nó có thể ảnh hưởng đến điều này bởi một vài tích tắc. Doppler sẽ thực sự thú vị, mặc dù! Một cái gì đó để xem xét. :-)
John Biesnecker

2
Một điều cần lưu ý, nếu bạn sử dụng phương pháp này, không ai quét các gói sẽ có thể lấy thông tin trước khi cần. Eve Online làm một cái gì đó tương tự với tàu bị che giấu. Khi bất kỳ con tàu nào di chuyển trong một khu vực, tất cả các khách hàng đều được thông báo, nhưng khi một con tàu bị che giấu di chuyển, khách hàng sẽ không nói gì. Mặt khác, mặc dù máy khách không hiển thị tàu, các gói sẽ.
Ray Britton

5

Câu hỏi là: chính xác thì bạn cần hình ảnh bị trì hoãn của mình như thế nào để nó thực sự phát ra như thế nào? Nếu bạn đang tìm kiếm độ chính xác 100%, bạn sẽ cần lưu các hành động hoặc trạng thái của mọi đối tượng trên bản đồ ở mỗi tích tắc và, như bạn nói, hãy phát lại chúng trên độ trễ dựa trên khoảng cách. Nếu bạn không quan tâm nhiều đến độ chính xác chính xác, điều mà bạn hiếm khi cần trong các trò chơi, bạn có thể lưu trạng thái theo các khoảng thời gian và ngoại suy giữa chúng khi độ trễ bắt kịp. Bạn có thể tối ưu hóa bằng cách không lưu các bản cập nhật giống hệt nhau.

Ngoài ra, bạn có thể vector hóa tất cả các chuyển động và lưu một đường dẫn cho từng đối tượng cùng với thời gian bắt đầu nhìn thấy từ một người quan sát phổ quát. Sau đó, bạn có thể chỉ cần tính toán vị trí dự kiến ​​của một đối tượng cho mỗi người quan sát dựa trên bộ đếm thời gian chung thời gian cục bộ dựa trên các nút đường dẫn mà nó đã lưu. Khi dấu thời gian của nút đường dẫn đi phía sau lightcone của tất cả các đối tượng có liên quan mà bạn loại bỏ nó.

Chỉnh sửa: Trên đây giả định rằng bạn sẽ gian lận tính tương đối cơ bản bằng cách có một người quan sát tuyệt đối (tôi giả sử người chơi). Điều này sẽ cướp đi của bạn một số khía cạnh thú vị hơn của sự giãn nở thời gian, nhưng mô hình hóa chúng sẽ là một dự án trong chính nó> _>

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.