Làm cách nào tôi có thể triển khai kỹ thuật che giấu nhiều người chơi bằng hình ảnh chống lại việc hack phía khách hàng?


19

Tôi đã suy nghĩ về việc thực hiện tàng hình trong một trò chơi nhiều người chơi. Đây là một trò chơi theo phong cách MOBA, vì vậy hãy nghĩ rằng Liên minh huyền thoại (LoL) và Heroes of the Storm (HotS). Nhiều máy khách kết nối với một máy chủ duy nhất phát sóng trạng thái trò chơi tới tất cả các máy khách. Khách hàng gửi dữ liệu đầu vào của họ đến máy chủ, có thể từ chối dữ liệu đó khi gặp các lệnh không hợp lệ, do đó, không thể gian lận (theo lý thuyết).

Bây giờ, tôi đề cập đến các trò chơi này trên mục đích vì cả hai thực hiện tàng hình khác nhau. LoL có khả năng tàng hình với hai trạng thái có thể: bạn hoàn toàn có thể nhìn thấy hoặc hoàn toàn vô hình. Mặt khác, HotS thực hiện tàng hình theo cách mà bạn có thể nhận ra bằng một ánh sáng lung linh trong không khí:

Anh hùng tàng hình Bão tố

Tôi nghĩ rằng đây là một cơ chế gọn gàng, vì nó thúc đẩy / phần thưởng chú ý đến môi trường xung quanh bạn. Tuy nhiên, đây là một trò chơi nhiều người chơi khiến tôi nhận ra rằng điều này có thể dễ dàng khai thác.

Khi bạn triển khai tàng hình theo cách 'LoL', bạn chỉ cần dừng gửi tọa độ người chơi đến các máy khách khác. Khi nhân vật của người chơi phá vỡ lén lút, máy chủ có thể phát lại vị trí đó. Tuy nhiên, với mô hình HotS, có thể thấy một ánh sáng lung linh trong không khí nơi nhân vật đang di chuyển. Điều này có nghĩa là máy chủ phải gửi vị trí của người chơi cho các máy khách khác. Điều đó có nghĩa là những người chơi thay đổi kết cấu hoặc mô hình hoặc thậm chí chính mã trò chơi có thể khiến cơ chế áo choàng trở nên vô dụng. Đây là một chủ đề trên bảng HotS về nó.

Câu hỏi của tôi là liệu có cách nào để thực hiện kỹ thuật che giấu (với 'shimmer', à la HotS), mà không gặp vấn đề gì mà người chơi xảo quyệt có thể sửa đổi trò chơi (dữ liệu) và 'đánh bại hệ thống'. Điều này có thể không, và nếu không, làm thế nào để các trò chơi nhiều người chơi khác có cơ chế này đối phó với điều này? Có phải chỉ có phong cách tàng hình LoL là không thể ăn được?

Tôi đã nghĩ về việc máy chủ sẽ gửi các vị trí 'áo choàng' không có thật mọi lúc, nhưng điều này cũng gây hại cho những người chơi công bằng chỉ chú ý, vì vậy điều đó sẽ không xảy ra.


Liên quan là liên kết , nhưng tôi không hỏi về việc va vào người khác (có thể được xử lý bởi máy chủ) mà chỉ hiển thị các đơn vị mặc áo choàng.
chảy

Đây là một gợi ý tồi, nhưng bạn có thể thực hiện tất cả kết xuất đồ họa trên máy chủ, sau đó phát từng màn hình người chơi cho khách hàng của họ. Họ chỉ gửi đầu vào, bạn chỉ gửi đầu ra. Máy khách là một vỏ mỏng chỉ đơn giản hiển thị video và phát âm thanh.
dùng137

Philipp có một ý tưởng rất tốt ở đó. Tôi muốn nói thêm rằng bạn vẫn phải nhận thức được các hộp giới hạn và giao điểm của chúng với các kỹ năng, v.v. Nếu bạn đang gửi các hộp giới hạn, một lập trình viên thông minh có thể đảo ngược kỹ sư nào là nhân vật vô hình (nếu có các anh hùng khác nhau). Nếu bạn có bất kỳ hiệu ứng nào kích hoạt khi đánh, thì bạn sẽ phải gửi bất cứ thứ gì như hộp hoặc ít nhất là vị trí và quy mô của hiệu ứng. Xin lưu ý rằng mọi thứ trừu tượng hơn sẽ nhiều hơn
Greaka

Bạn thực sự không thể thực hiện kỹ thuật che giấu kiểu LoL bằng cách ngừng gửi tọa độ người chơi. Ngay cả khi các nhân vật không được vẽ, họ vẫn cần có thể tương tác với bản đồ (và những người chơi khác) theo những cách khác. Nhưng việc thực hiện lén lút "có thể phát hiện" (dấu chân, bóng, v.v.) sẽ loại bỏ phần lớn động lực để vượt qua rắc rối khi điều chỉnh trò chơi bằng mọi cách: bạn học cách phát hiện các nhân vật bị che giấu và tiếp tục.
Chiếc thìa ngon nhất

2
@TheSpooniest: bạn có thể giải thích ý của bạn bằng cách bạn thực sự không thể thực hiện kỹ thuật che giấu kiểu LoL bằng cách ngừng gửi tọa độ người chơi không? Nếu người chơi A vô hình và máy chủ không gửi đồng phạm nữa cho người chơi B và C, thì máy chủ vẫn có thể xử lý, ví dụ như va chạm giữa người chơi A và B bằng cách từ chối di chuyển nhân vật của B lên trên A (như thể họ đi bộ vào một bức tường). Nếu A (vẫn vô hình) bắn một kỹ năng đến B, máy chủ có thể chỉ cần gửi "kỹ năng được bắn từ vị trí x, y theo hướng d từ A" đến B và C.
chảy

Câu trả lời:


20

Bạn không thể thực hiện hiệu ứng lung linh mà không dễ khai thác ... nhưng nếu bạn sử dụng một phương tiện gián tiếp để cho thấy ai đó ở xung quanh, một phương tiện cũng áp dụng cho người chơi có thể nhìn thấy thì sao?

Ví dụ: điều gì sẽ xảy ra nếu người chơi để lại dấu chân và thông báo "dấu chân được tạo" được gửi từ máy chủ độc lập với vị trí của người chơi? Mọi người chơi đều để lại dấu chân để bạn không thể làm cho mô hình dấu chân rõ hơn mà không che phủ đấu trường trong đó và làm cho mọi bản in riêng lẻ ít bị chú ý hơn, nhưng nếu người chơi nhìn thấy dấu chân xuất hiện mà không có ký tự hiển thị thì họ biết ai đó đang ở đó.

Bạn cũng có thể làm những việc như có những viên sỏi nhỏ bị đập xung quanh, xào xạc cỏ khi ai đó đi qua nó hoặc những gợn sóng xuất hiện khi ai đó di chuyển qua nước. Nếu 'dấu hiệu' chỉ áp dụng cho các vị trí hoặc tài liệu nhất định, điều này có thể thêm chiến lược bổ sung buộc các nhân vật vô hình phải di chuyển cẩn thận và tránh những thứ sẽ từ bỏ vị trí của họ.


without making it easy to exploit-> Điều này áp dụng cho tất cả các cơ chế trò chơi, không chỉ riêng cơ chế này.
S. Tarık Çetin

12
Về đoạn cuối: Hãy nhớ rằng khi một người chơi vô hình là điều duy nhất khiến những điều này xảy ra, thì bạn đang cung cấp thông tin hữu ích cho việc hack. Nhưng bạn cũng có thể kích hoạt từng người trong số họ theo thời gian thông qua các sự kiện ngẫu nhiên hoặc các hành động khác của người chơi. Điều đó sẽ tạo ra tiếng ồn làm mất tập trung vào vụ hack và có tác dụng phụ tốt đẹp để làm cho môi trường trở nên sống động và năng động hơn rất nhiều.
Philipp

2
Đây là một ý tưởng rất thú vị, cảm ơn! Trong trường hợp 'dấu chân', điều này thậm chí có thể thưởng cho những người chơi lén lút 'bước vào bên trong' bước chân (cũ) của mục tiêu, khiến việc lén lút với người khác trở nên thực tế hơn (tức là đến từ phía sau). Ngay cả khi ai đó làm cho kết cấu bước chân (hoặc những gì có bạn) rõ ràng hơn, bước vào chúng sẽ (có lẽ) chỉ làm mới thời lượng hiển thị.
chảy

3
Tất nhiên, trong trường hợp này, một hack phía khách hàng có thể được thực hiện để hiển thị các bản nhạc mới.
Muhd

3
Một hack phía khách hàng có thể làm nổi bật dấu chân được tạo ra ở các khu vực không tương ứng với vị trí của người chơi.
Edward Coffey

31

Khi bạn nhìn vào vô số câu hỏi khác về việc ngăn chặn gian lận trong các trò chơi nhiều người chơi trên trang web này, bạn sẽ dễ dàng thấy rằng thực sự không có biện pháp kỹ thuật nào để ngăn chặn gian lận phía khách hàng.

Tất cả những gì bạn có thể làm là cung cấp ít thông tin hơn về thực thể bị che giấu. Tất cả các khách hàng cần biết để làm cho hiệu ứng méo là có một cái gì đó được che đậy ở vị trí đó. Nhưng nó không cần biết bất cứ điều gì cụ thể về nó, như chính xác nó là gì, nó còn lại bao nhiêu sức khỏe và nó đang làm gì. Tùy thuộc vào trò chơi của bạn, điều đó một mình có thể là một thâm hụt thông tin thay đổi trò chơi cho người chơi.


6
Với "ít thông tin" cũng có "thông tin ít chính xác hơn". Chọn độ lệch 10 feet theo một hướng ngẫu nhiên duy nhất được giữ ở phía máy chủ và gửi vị trí đó thay thế. Trong các cuộc gặp gỡ ngẫu nhiên khác, thêm các ký tự lung linh giả "Bạn có thấy điều đó không? Tôi nghĩ rằng tôi đã thấy một cái gì đó ở đó."
Keeta - phục hồi Monica

2
@Keeta nếu bạn sử dụng điều này, bạn sẽ muốn thực hiện một số thao tác làm mịn (nghĩa là không tạo ra một giá trị hoàn toàn ngẫu nhiên mỗi lần) bằng bộ lọc tín hiệu hoặc với một loại Đi bộ ngẫu nhiên theo hướng của thực thể. Nếu nó quá bồn chồn thì nó thực sự rõ ràng đối với mắt, vì vậy bạn sẽ cần phải cân bằng khả năng ẩn của người chơi trong quá trình di chuyển và bị ẩn khi ở yên. Sau này sẽ và nên có hiệu quả hơn.
Kim cương Nate

@NateDihua Vâng, chính xác. Đó là lý do tại sao tôi nói rằng máy chủ tạo ra một phần bù cụ thể của vị trí thực tế. Sau đó, khi diễn viên thực sự di chuyển, phần bù sẽ khiến cho ánh sáng cũng chuyển động. Bằng cách cẩn thận xem ánh sáng lung linh khi nó di chuyển, bạn có thể suy ra vị trí của diễn viên thực sự, nhưng điều đó cần một số công việc. Nếu tàng hình là có thật, và gây ra sự lung linh này trong cuộc sống thực, tôi tưởng tượng sự tập trung thêm này chính xác là những gì cần thiết để vượt qua sự tàng hình.
Keeta - phục hồi Monica

Có một sửa đổi thú vị và là bản duy nhất thực sự hoạt động, của ioquake3 để tạo ra một máy chủ chống treo tường . Ý tưởng là kiểm tra phía máy chủ xem người chơi A có thể thấy người chơi B khác không (nghĩa là không có tường hoặc ngăn cách khác chặn tầm nhìn) trước khi quyết định xem người chơi A có nên nhận thông tin vị trí của B. Điều này đã được chứng minh là có hiệu quả cao đối với wallhacks, vì chúng đã trở nên vô dụng. Vì vậy, điểm mấu chốt là cách duy nhất để đảm bảo rằng không ai thao túng dữ liệu là không cung cấp cho họ bất kỳ thông tin nào cả.
gabious

@gabious đó là một kiểm tra đắt tiền để làm, đặc biệt là cho mọi người chơi ở mỗi tích tắc. Nó rất có thể là một chi phí đáng giá, nhưng là điều mà nhà phát triển sẽ phải xem xét trong chi phí và khả năng của máy chủ.
Kim cương Nate

1

Có, bất kỳ thông tin nào bạn gửi cho khách hàng, có thể được hiển thị rõ ràng hơn bạn dự định. Nhưng đây là mẹo:

Giảm thiểu tác động

Chắc chắn, khách hàng có thể có một số thông tin, nhưng bằng cách suy nghĩ cẩn thận về những thông tin bạn muốn chia sẻ, và về những gì người chơi có thể làm với nó, bạn ít nhất có thể giảm thiểu tác động của việc hack khách hàng.

1. Người chơi quan sát cái gì?

  1. Bạn thấy nhân vật có đặc điểm tại chỗ: Trong trường hợp này, khách hàng sẽ có tất cả thông tin và các bản hack có thể chỉ cần hoàn tác chiếc áo choàng
  2. Bạn thấy một cái gì đó tại chỗ: Trong trường hợp này khách hàng có thông tin vị trí. Nó có thể làm cho vị trí rõ ràng nhưng thông tin khác vẫn nên được ẩn.
  3. Bạn quan sát một cái gì đó nhưng nó không ở chỗ

a. Bạn nhìn thấy một cái gì đó nhưng nó không ở ngay tại chỗ (Cầu hoặc bụi cây di chuyển, nhưng nó lớn đến mức bạn không biết phải nhắm vào đâu; bước chân chỉ hiển thị với độ trễ 2 giây): Trong trường hợp này, khách hàng chỉ biết rằng có một cái gì đó, nhưng không phải ở đâu / chính xác.

b. Bạn quan sát thứ gì đó theo một cách khác (âm thanh nếu có thứ gì đó trong khu vực; chỉ báo độ gần giống như radar có hoặc không có hướng)

Ảnh chụp màn hình trong câu hỏi dường như nằm trong khoảng từ 1 đến 2 vì nó có thể dựa trên thông tin hạn chế, nhưng bạn vẫn thấy phác thảo có thể cung cấp một số thông tin.

2. Người chơi có thể làm gì?

Giả sử bạn nghĩ ai đó đang phối hợp XY, bạn có thể làm gì? Dưới đây là một số lựa chọn điển hình:

Tấn công

  1. Bạn có thể tấn công anh ta như thể anh ta không bị che đậy
  2. Bạn có thể tấn công anh ta bằng các đòn tấn công / bẫy AOA có làm anh ta bị thương hay không
  3. Bạn có thể chủ động cởi trói cho anh ta và chỉ tấn công anh ta sau đó
  4. Bạn không thể tấn công anh ta cả

Di chuyển

  1. Khi bạn bắt đầu di chuyển, bạn nhận thấy rằng động cơ bí ẩn đưa bạn đi đường vòng
  2. Bạn bắt đầu đi về phía mục tiêu của mình một cách bình thường, nhưng khi bạn tiếp cận nhân vật ẩn, bạn di chuyển xung quanh anh ta hoặc dừng lại
  3. Bạn không bị chặn bởi nhân vật ẩn

Nếu lựa chọn tuyến thường được thực hiện phía khách hàng


Cảm ơn vì đầu vào của bạn. Tôi đã lên kế hoạch cho phép mọi người 'va chạm' vào các nhân vật vô hình, bởi vì đó là thứ mà máy chủ có thể tính toán và xử lý. Ý tưởng âm thanh gọn gàng và thay đổi âm thanh theo cách tinh tế (căng thẳng, nghĩ rằng Hàm ) sẽ tuyệt vời nhưng cũng không dễ dàng thay thế bằng tệp âm thanh lớn hơn hoặc thậm chí là tệp giọng nói nói MỘT SỐ ĐÓNG ĐƯỢC BẮT ĐẦU ?
chảy

1
Một ý tưởng khác dọc theo dòng chữ 'a': Một bóng mờ có thể xuất hiện ngẫu nhiên ở đâu đó gần người chơi mặc áo choàng, nhưng không phải ở vị trí chính xác của chúng. Nếu máy chủ chỉ gửi vị trí của bóng mờ, máy khách thực sự không thể thực hiện nhiều kỹ thuật đảo ngược về điều đó. Trên thực tế, ngay cả khi người chơi mặc áo choàng hoàn toàn có thể nhìn thấy thì nó vẫn hoạt động như một thợ máy.
Jezzamon

1
@Jezzamon vâng, một số loại cơ khí 'dịch chuyển' cũng sẽ rất tuyệt. Tuy nhiên, trong tình huống áo choàng sẽ không hoạt động: Tôi không muốn trừng phạt những người chơi đang tìm kiếm sự lung linh; họ sẽ cần phải có vị trí 'chính xác' của sự lung linh để nhắm mục tiêu, ví dụ như kỹ năng.
chảy

-2

Hiệu ứng gợn có thể được thực hiện thông qua mã shader. Bạn có thể tắt sử dụng kết cấu trong chế độ này để thay đổi kết cấu đơn giản không còn là vấn đề nữa.

Trong 3D, khi mô hình xuất hiện, bạn vẫn có thể thay đổi shader thành mô phỏng khúc xạ, chỉ sử dụng bề mặt của mô hình, loại bỏ màu. Ngay cả khi mô hình được thay thế bằng cách nào đó, hiệu ứng vẫn còn.

Sửa đổi shader được biên dịch trước sẽ khó như sửa đổi mã trò chơi và tôi nghĩ rằng nó khó hơn một cấp so với một số tra cứu kết cấu trong các tệp trò chơi.


3
Bạn đã bỏ lỡ câu hỏi thực tế. Đó không phải là về cách tạo ra một hiệu ứng méo như vậy về mặt kỹ thuật. Đó là về cách cung cấp cho khách hàng thông tin để hiển thị nó mà không cung cấp cho nó thông tin hữu ích mà nó có thể hiển thị cho người chơi.
Philipp

1
Vâng, tôi giải quyết điều này : Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless. Và tôi không thấy lý do tại sao tôi bỏ lỡ câu hỏi whether there is some way to implement cloaking (with a 'shimmer', à la HotS), without having the issue that crafty players can modify the game (data) . A: Nó quảng cáo che giấu bằng ánh sáng lung linh, B: khó sửa đổi hơn thay đổi kết cấu đơn giản. WHERE để thực sự kết xuất là một mặt khác. Nếu vị trí là thứ duy nhất chúng ta cần để áp dụng hiệu ứng gợn xung quanh, thì đó sẽ là dữ liệu duy nhất được gửi cho người chơi.
Sao Hỏa

2
Tôi đã phát triển hack bên khách hàng trong quá khứ. Quan niệm cho rằng khó sửa đổi shader là rất, rất sai lệch. Vâng, nó dừng hình thức tấn công cơ bản nhất có thể, nhưng bất cứ ai có Google-fu đàng hoàng đều có thể tìm ra nó vào một buổi chiều. Bây giờ hãy chơi trò chơi của bạn chống lại một hacker tốt và xem phải mất bao lâu cho đến khi họ lấp đầy sự tốt lành của phía khách hàng.

Sao chép-dán nhận xét của bạn vào mọi câu trả lời ở đây, vì mọi thứ phía khách hàng đều có thể được khai thác. Tôi biết không khó để sửa đổi mã (có bot, hack, mod trong trò chơi AAA), nhưng tôi thấy việc tìm kiếm kết cấu bán trong suốt trong các tệp trò chơi dễ dàng hơn so với tìm kiếm các hướng dẫn cụ thể về hiệu ứng gợn của shader. Tất nhiên, nếu các tập tin shader là văn bản đơn giản và hầu như không được nén, thì ngay cả một đứa trẻ cũng có thể phá vỡ nó. Tôi vừa đưa ra một câu trả lời, có thể được kết hợp với "ít dữ liệu được chuyển đến người chơi" để cung cấp mức độ bảo mật tốt. Tôi thực sự không biết điều gì sai với nó, vì nó cung cấp giải pháp thực tế
Mars

@Thebluefish một cách công bằng, chính vì điều này mà các nhà phát triển đã tránh xa việc tiêu tốn tài nguyên để ngăn chặn gian lận, và thay vào đó đã dành tài nguyên cho các phương pháp rất phức tạp, tối nghĩa và được xây dựng tốt để phát hiện gian lận và cấm hoàn toàn người chơi khỏi nền tảng của họ ... (rõ ràng tham khảo các hệ thống như VAC của Steam).
Trotski94
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.