Làm thế nào để dự đoán chuyển động chính xác khi người chơi vô hình?


20

Tôi có một trò chơi nhiều người chơi và tôi đang dự đoán phía khách hàng, nhưng một số người chơi có thể uống một lọ thuốc và trở nên vô hình ...

Vấn đề là khi chúng trở nên vô hình, tôi không chia sẻ bất cứ điều gì mà khách hàng có thể sử dụng để biết anh ta ở đó, vì vậy khi một người chơi cố gắng bước vào một ô bị chiếm bởi một người chơi vô hình, anh ta dự đoán rằng anh ta thành công, và sau đó nhận được một điều chỉnh vị trí xấu xí được gửi bởi máy chủ.

Một giải pháp sẽ là chia sẻ một cái gì đó để khách hàng có thể nói, nhưng sau đó tin tặc có thể sử dụng nó để tìm ra nơi người chơi vô hình, gian lận.

Btw Tôi đã giải quyết dự đoán chuyển động thường xuyên, nó hoạt động hoàn hảo.


4
Chỉ cần gửi thông tin về tất cả người chơi. Kẻ gian lận sẽ gian lận. Đừng làm tê liệt trải nghiệm của người chơi trung thực và thay vào đó hãy nghĩ đến việc tạo hệ thống gắn cờ cho kẻ gian lận.
dùng1306322

2
@ user1306322 Bằng cách giúp người gian lận dễ dàng hơn, bạn cũng sẽ làm tê liệt những người chơi trung thực. Một hệ thống gắn cờ là một ý tưởng tốt, nhưng nếu tàng hình là một phần quan trọng của trò chơi, một cái gì đó phòng ngừa có thể là không cần thiết.
ThatOneGuy

@ user1895420 thường đủ tốt để không gửi những thứ như vậy trong văn bản thuần túy, để không người chơi trung bình nào có thể dễ dàng đạt được dữ liệu đó. Nếu chỉ một người am hiểu công nghệ có thể làm điều đó, thì đó là biện pháp phòng ngừa tốt như bất kỳ.
dùng1306322

1
Hoặc, có lẽ, một ý tưởng tốt hơn là thay đổi cơ chế tàng hình một chút để nó không hoạt động rất gần, do đó, ngay cả những người có thể gian lận thông qua dữ liệu của trò chơi cũng không thực sự có lợi thế.
dùng1306322

Làm thế nào về việc chỉ gửi vị trí của người chơi vô hình (với một lá cờ để giữ anh ta / cô ta vô hình) chỉ khi một người chơi có thể nhìn thấy gần? Điều đó sẽ cung cấp cho bạn một vài khung hình để tránh vấn đề chuyển động quá mức, trong khi nó không cho người gian lận đủ thời gian để phản ứng. Đối với hai người chơi vô hình, tôi sẽ chỉ bỏ qua các vụ va chạm. Nếu bạn có một máy chủ trung tâm có tất cả các vị trí của người chơi, bạn cũng có thể điều phối nó khi nào phát sóng vị trí và khi nào thì không.
jdm

Câu trả lời:


30

Đây có thể được coi là một vấn đề hoạt hình. Nếu một hiệu chỉnh vị trí quay trở lại từ máy chủ do cố gắng di chuyển vào một vật thể vô hình, hãy gửi lại không chỉ hiệu chỉnh mà còn một lá cờ cho biết tại sao cần phải hiệu chỉnh. Thay vì một người chơi bật ra phía sau, anh ta có thể thực hiện một kiểu hoạt hình quay ngược "woah", khiến nó trông đáng tin hơn giống như anh ta vừa gặp phải điều gì đó.

Trong các trò chơi sử dụng phương pháp này, sẽ không có gì lạ khi loại bỏ tàng hình (ít nhất là trong giây lát) khỏi bất cứ thứ gì được chạy vào. Trong số những thứ khác, điều này mang lại sự khích lệ cho những người chơi vô hình để tránh đám đông hoặc đến quá gần các nhân vật khác, giảm tần suất va chạm với người chơi vô hình xảy ra ngay từ đầu. Do đó, ngay cả khi hoạt hình của bạn cho loại va chạm này yếu (hoặc không tồn tại), phần nào nó bị ẩn bởi nhân vật vô hình xuất hiện trong tầm nhìn và truyền tải rõ ràng cho mọi người những gì vừa xảy ra.

Nhu cầu hoạt hình có thể được loại bỏ bằng cách không cho phép tàng hình hoạt động ở cự ly gần. Điều này thậm chí còn mang lại nhiều động lực hơn cho người chơi vô hình để tránh gần gũi với các nhân vật khác. Đây là cách tiếp cận phổ biến cho các trò chơi dựa trên lén lút và AI (thay thế "vô hình" bằng "không thể nhìn thấy mục tiêu") và có thể được nhìn thấy trong các trò chơi PvP như World of Tanks. Không cần phải lo lắng về phản ứng va chạm với các nhân vật vô hình nếu bạn không có gì vô hình đủ gần để bạn va chạm (trong giới hạn độ trễ).

Giải pháp của Dracor chỉ cần bỏ qua va chạm với các vật thể vô hình cũng là một cách tốt. Điều này một lần nữa yêu cầu một số hình ảnh động (đối với ứng dụng khách của người chơi vô hình) để các đối tượng không chỉ cắt qua hình đại diện của người chơi trên màn hình của anh ta. Nếu không có gì khác, bạn có thể khiến các vật thể nhìn thấy luôn đẩy những vật vô hình để người chơi vô hình tự động di chuyển ra khỏi máy chủ nếu có ai đó va chạm với anh ta.

Va chạm vô hình-vô hình là một chút phức tạp hơn. Có thể thuận lợi khi chỉ vô hiệu hóa các va chạm trên chúng vì không ai có thể nhìn thấy nếu hai vật thể vô hình đang kết hợp với nhau (giả sử là "vô hình", chúng tôi có nghĩa là cả hai đối tượng không thể nhìn thấy cho cùng một khách hàng). Nếu một trong các đối tượng trở nên hữu hình, nó sẽ tự động trở lại phản ứng va chạm không nhìn thấy được (đẩy xa đối tượng vô hình).

Tất cả điều này trở nên khó khăn hơn nếu tàng hình có những nhóm người phức tạp có thể nhìn thấy ai. Giải pháp đầu tiên hoặc thứ hai ở trên có khả năng tốt nhất ở đây nếu bạn cần nó. Không phải mọi vấn đề như thế này đều cần một giải pháp kỹ thuật; nhiều người chỉ cần giải pháp thiết kế (ví dụ: không cho phép tính năng này cho nhà thiết kế của bạn).


5
Trò chơi Team Fortress 2 sử dụng cách tiếp cận đầu tiên đó ... Nếu một điệp viên vô hình chạm vào người chơi khác, người chơi khác có thể nhìn thấy điệp viên (hoặc nếu từ phía sau, ít nhất là cảm nhận được một số trở ngại).
Xantix

4

Tôi thực sự chỉ thấy hai tùy chọn ở đây nếu bạn không muốn cho khách hàng biết người chơi vô hình ở đâu: 1) Bạn bỏ qua xung đột đơn vị cho người chơi vô hình - một giải pháp đơn giản và người chơi sẽ không thể tìm thấy người chơi vô hình bằng cách kiểm tra va chạm hoặc. 2) Sau khi quyết định đường dẫn dự đoán, bạn gửi cho máy chủ đường dẫn dự đoán và tự sửa đường dẫn ở phía máy chủ, sau đó gửi đường dẫn mới trở lại.


Vấn đề với việc bỏ qua va chạm cho người chơi vô hình là nếu một người chơi vô hình ngừng vô hình ngay khi nó va chạm với người khác. Ngoài ra, nó không cảm thấy đúng. Trong trò chơi của tôi, tôi không thực sự có đường dẫn hoặc tìm đường, người chơi chỉ có thể di chuyển theo 4 hướng, mỗi bước một bước
affiszervmention

Sau đó, những gì còn lại là gửi chuyển động dự đoán (một vectơ đơn hoặc một mảng vectơ) và kiểm tra phía máy chủ. Hoặc chỉ hoạt hình sửa chữa, như nói dưới đây.
Daniel Rusznyak

1
Nếu bạn có một bản đồ dựa trên lưới và đang kiểm tra từng ô vuông bằng mọi cách, bạn cũng có thể thử mã hóa vị trí của các ký tự vô hình ở phía máy chủ bằng mã hóa một chiều, chẳng hạn như SHA-1 hoặc SHA-2 , sau đó kiểm tra đường dẫn của riêng bạn bằng cách mã hóa tọa độ đã kiểm tra với cùng thuật toán. Không thể nói nó hiệu quả về mặt hiệu suất, nhưng nếu bạn thực sự muốn làm điều đó ở phía khách hàng, giải pháp này có thể hoạt động tốt với một số vị trí hạn chế và việc hack có thể thực sự rắc rối do số lượng điểm lưới cực lớn để mã hóa và khớp với dữ liệu trong bộ nhớ.
Daniel Rusznyak

Tôi có thể thấy rằng làm việc. Bản đồ nhỏ nhất của tôi có 1500 vị trí khác nhau. Tôi có nên sử dụng HMAC với phím thay đổi cứ sau vài giây để ngăn kẻ tấn công tính toán trước tất cả các vị trí không?
affiszervmention

5
Không, bất kỳ kế hoạch nào bạn có thể đưa ra sẽ không "an toàn" trước tin tặc. Nếu khách hàng có thể xác định liệu người chơi có va chạm với một vị trí nhất định hay không, thì ai đó có thể hack trò chơi của bạn. HMACing với một phím xoay sẽ không ngăn khách hàng thực hiện 1500 HMAC một giây. Đừng không cố gắng để làm mật mã chính mình. Nếu bạn muốn đạt được mục tiêu ban đầu, chỉ gửi vị trí người chơi vô hình cho khách hàng nếu họ ở trong 1 hoặc 2 ô của người chơi. Sau đó, bạn chỉ có thể hack để biết ai đó ở ngay bên cạnh bạn (điều này không hữu ích vì bạn chỉ có thể di chuyển để kiểm tra điều này).

2

Trừ khi tôi hiểu nhầm điều gì đó, giải pháp rất đơn giản. Không gửi thông tin khách hàng về tất cả người chơi vô hình, chỉ những người trong phạm vi mà họ có thể bị va chạm trong giới hạn chuyển động trong khoảng thời gian được dự đoán. Nói cách khác, nếu khách hàng chỉ phải dự đoán 200 ms trong tương lai, chỉ gửi thông tin về người chơi vô hình trong max_player_velocity units/sec * 1/5 seccác đơn vị đi.


Tôi đoán điều đó có thể làm việc, nhưng trò chơi của tôi dựa trên gạch (quên nói).
affiszervmention

Vì vậy, chỉ tiết lộ người chơi vô hình trong gạch liền kề, hoặc 2 bước, hoặc bất cứ điều gì.
R ..

sau đó không chắc chắn họ sẽ va chạm, và những người chơi vô hình sẽ phải tránh xa bất kỳ ai hack để không bị phát hiện
affiszervmention
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.