Zastanawiałem się nad wprowadzeniem skradania w grze wieloosobowej. To gra w stylu MOBA, więc pomyśl o League of Legends (LoL) i Heroes of the Storm (HotS). Wielu klientów łączy się z jednym serwerem, który nadaje stan gry wszystkim klientom. Klienci wysyłają swoje dane wejściowe do serwera, który może je odrzucić w przypadku napotkania nieprawidłowych poleceń, uniemożliwiając w ten sposób oszustwo (teoretycznie).
Teraz wspominam o tych grach celowo, ponieważ obie implementowały podstępnie inaczej. LoL ma podstęp z dwoma możliwymi stanami: jesteś albo całkowicie widoczny, albo całkowicie niewidoczny. Z drugiej strony HotS implementuje podstęp w taki sposób, że migotanie w powietrzu pozwala stwierdzić:
Myślę, że to fajna mechanika, ponieważ promuje / nagradza zwracając uwagę na twoje otoczenie. Jednak ta gra wieloosobowa uświadomiła mi, że można ją łatwo wykorzystać.
Po zastosowaniu ukrycia w „LoL” możesz po prostu przestać wysyłać współrzędne gracza do innych klientów. Gdy postać gracza przerywa skradanie się, serwer może ponownie nadać lokalizację. Jednak w modelu HotS migotanie można zobaczyć w powietrzu, w którym porusza się postać. Oznacza to, że serwer musi wysyłać lokalizację gracza do innych klientów. Co oznacza, że gracze, którzy zmieniają teksturę lub model, a nawet sam kod gry, mogą uczynić mechanikę płaszcza bezużyteczną. Oto wątek na płytach HotS na ten temat.
Moje pytanie brzmi: czy istnieje jakiś sposób na wdrożenie maskowania (z „migotaniem”, à la HotS), bez problemu, że przebiegli gracze mogą modyfikować grę (dane) i „pokonać system”. Czy to możliwe, a jeśli nie, jak radzą sobie z tym inne gry wieloosobowe z tą mechaniką? Czy tylko styl niewidzialności LoL jest nie do pokonania?
Myślałem o tym, aby serwer co jakiś czas wysyłał fałszywe lokalizacje „peleryny”, ale szkodzi to również uczciwym graczom, którzy tylko zwracają uwagę, więc nie zrobi tego.
źródło
Odpowiedzi:
Nie możesz wdrożyć efektu migotania bez ułatwienia wykorzystania ... ale co, jeśli użyjesz pośredniego sposobu pokazania, że ktoś jest w pobliżu, środka, który dotyczy również widocznych graczy?
Na przykład, co jeśli gracze zostawiają ślady stóp, a wiadomości „utworzone ślady stóp” są wysyłane z serwera niezależnie od lokalizacji gracza? Każdy gracz pozostawia ślady, więc nie można uczynić modelu śladu bardziej widocznym bez zasłonięcia areny i uczynienia każdego pojedynczego wydruku mniej zauważalnym, ale jeśli gracz zobaczy ślad śladu bez widocznej postaci, wie, że ktoś tam jest.
Możesz także robić rzeczy, takie jak przewracane małe kamyki, szeleszcząca trawa, gdy ktoś przez nią przechodzi, lub zmarszczki, które pojawiają się, gdy ktoś porusza się w wodzie. Jeśli „znaki” odnoszą się tylko do niektórych lokalizacji lub materiałów, może to dodać dodatkową strategię, która zmusza niewidzialne postacie do ostrożnego poruszania się i unikania rzeczy, które zdradzą ich pozycje.
źródło
without making it easy to exploit
-> Dotyczy to całej mechaniki gry, nie tylko tej konkretnej.Gdy spojrzysz na niezliczone inne pytania dotyczące zapobiegania oszustwom w grach dla wielu graczy, które są na tej stronie, łatwo zauważysz, że tak naprawdę nie ma technicznego środka, aby zapobiec oszustwom po stronie klienta.
Wszystko, co możesz zrobić, to podać mniej informacji o zamaskowanej istocie. Aby uzyskać efekt zniekształcenia, klient musi tylko wiedzieć, że w tej pozycji jest coś ukrytego. Ale nie musi wiedzieć o tym nic konkretnego, jak dokładnie to, ile pozostało zdrowia i co robi teraz. W zależności od gry sam ten może stanowić przełomowy dla gracza deficyt informacji.
źródło
Tak, wszelkie informacje, które wysyłasz do klienta, mogą być pokazywane w bardziej oczywisty sposób niż zamierzałeś. Ale oto sztuczka:
Łagodź wpływ
Jasne, klient może mieć pewne informacje, ale uważnie zastanawiając się, jakie informacje chcesz udostępnić i co gracze mogą z nimi zrobić, możesz przynajmniej złagodzić wpływ włamań do klienta.
1. Co obserwuje gracz?
za. Widzisz coś, ale nie jest to na miejscu (most lub krzak porusza się, ale jest duży, więc nie wiesz, gdzie celować; kroki stają się widoczne tylko z 2-sekundowym opóźnieniem): W tym przypadku klient wie tylko, że istnieje coś, ale nie gdzie / co dokładnie.
b. Obserwujesz coś w inny sposób (dźwięk, jeśli coś znajduje się w okolicy; wskazanie bliskości jak radar z kierunkiem lub bez)
Zrzut ekranu w pytaniu wydaje się mieć wartość od 1 do 2, ponieważ prawdopodobnie opiera się na ograniczonych informacjach, ale nadal widzisz zarys, który mógłby dostarczyć pewnych informacji.
2. Co może zrobić gracz?
Załóżmy, że uważasz, że ktoś koordynuje XY. Co możesz zrobić? Oto kilka typowych wyborów:
Napadający
W ruchu
Jeśli wybór trasy odbywa się zwykle po stronie klienta
źródło
Efekt falowania można uzyskać za pomocą kodu modułu cieniującego. Możesz wyłączyć użycie tekstury w tym trybie, aby prosta zmiana tekstury nie była już problemem.
W trybie 3D, gdy model wchodzi w grę, nadal możesz po prostu zmienić moduł cieniujący na taki, który symuluje załamanie, używając samej powierzchni modelu, odrzucając kolor. Nawet po zmianie modelu efekt pozostaje.
Modyfikowanie wstępnie skompilowanego modułu cieniującego byłoby tak samo trudne jak modyfikowanie kodu gry i myślę, że jest o jeden poziom trudniejszy niż wyszukiwanie tekstur w plikach gry.
źródło
Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless
. I nie rozumiem, dlaczego przegapiłem pytaniewhether there is some way to implement cloaking (with a 'shimmer', à la HotS), without having the issue that crafty players can modify the game (data)
. Odp .: Reklamuje maskowanie migotaniem, B: trudniej jest zmodyfikować niż zwykłą zmianę tekstury. GDZIE faktycznie renderować jest inna strona. Jeśli pozycja jest jedyną rzeczą, którą musimy zastosować efekt tętnienia, powinny to być jedyne dane wysyłane do gracza.