Jak / powinny MMO obsługiwać rozłączanie podczas PvP?


20

W MMO (niekoniecznie MMORPG) jakie są techniki radzenia sobie z graczami rozłączającymi się w trakcie PvP?

W szczególności - w jaki sposób unikasz niekorzystnego wpływu na osoby, które rozłączają się z powodu problemów z siecią (a nawet rzeczywistymi), nie wpływając negatywnie na osoby, które ich angażują?

I, co ważne, w jaki sposób zapewniasz, że rozłączanie nie może być stosowane jako metoda oszukiwania?

Odpowiedzi:


15

Mieliśmy ten problem z niektórymi CCG online, nad którymi pracowałem. Najlepsze rozwiązanie, jakie widziałem:

1) Gracze MUSZĄ łączyć się z serwerem, a nie bezpośrednio ze sobą, i NIGDY nie należy przekazywać adresów IP przeciwników w danych przesyłanych strumieniowo do graczy. Zapobiega to atakom typu „odmowa usługi”, w których gracz zmusza przeciwnika do wygrania.

2) Zerwane połączenie = przegrywasz, przeciwnik wygrywa. Musimy założyć, że jeśli upuściłeś, była to kropla, aby uniknąć pewnej straty.

3) Rozłącza próbę ponownego nawiązania połączenia przez pewien czas, aby niewielka czkawka nie zmusiła cię do utraty z własnej winy. Idealnie, czas jest wystarczająco długi, aby umożliwić komuś ponowne połączenie, jeśli przypadkowo kopnął kabel, ale wystarczająco krótki, aby przeciwnik nie był sfrustrowany i nie zasnął podczas oczekiwania. Wydaje mi się, że około 45 do 60 sekund było w porządku.

4) Pozwól graczom zgłosić przeciwników. Jest to konieczne, aby nikt nie znalazł irytującego sposobu obejścia Twojej polisy. Na przykład być może tak werbalnie obelżywy, że przeciwnik spada tylko po to, aby się stamtąd wydostać, lub ciągle się rozłącza i łączy ponownie, aby wydłużyć czas gry, lub stonewalling, aby uniknąć przegranej lub cokolwiek innego. Nie możesz zatrzymać WSZYSTKICH złych zachowań, ale możesz włączyć mechanizm zgłaszania tego w grze, a następnie pozwolić działowi obsługi klienta zająć się resztą.


13

Popularny MMORPG RuneScape używa 1-minutowego timera. Kiedy się rozłączysz, twoja postać pozostaje na świecie przez całą minutę, podatna na ataki, a co nie.


1
To samo dotyczy DAoC. Działa świetnie, ponieważ jeśli tego nie zrobisz, ludzie mogą się rozłączyć, aby uniknąć walk. Kiedyś w DAoC istniało polecenie „Quit To Desktop” / qtd, które powodowało, że ludzie natychmiast wychodzili, i dlatego zostało usunięte.
Ólafur Waage,

8

Musiałem poradzić sobie z tym problemem raz w grze wyścigowej online, w której przegrani gracze często wyłączali konsole, aby uniknąć straty w swoich rekordach. Jednak sprawdza się bardzo dobrze w każdej sytuacji PvP.

Moje rozwiązanie wyglądało następująco:

  1. Na początku meczu, gdy wszyscy gracze dołączą i rozpocznie się gra, obliczyć, jaki byłby wynik, gdyby nasz gracz przegrał mecz. W naszej grze wyścigowej „przegrany” oznacza „znalazł się na ostatnim miejscu”, a zwykły wynik to „minus N punktów w rankingu graczy”.

  2. Zapisz wynik w bezpiecznej lokalizacji (Savegame, liderów, obszar danych online itp.).

  3. Wraz z wynikiem przechowuj flagę „GameStarted”. To tylko oznacza, że ​​gra się rozpoczęła. Będziemy go później potrzebować.

  4. Po zakończeniu gry oblicz rzeczywisty wynik i zastosuj go do wyników / statystyk graczy. Odznacz flagę „GameStarted”. Jest to normalny proces ukończenia gry.

  5. Jeśli jednak gracz rozłączy się, odłączy kabel lub wyłączy zasilanie, ostatecznie wróci do menu gier. W kodzie menu sprawdzamy flagę „GameStarted”. Jeśli jest ustawiony, jesteśmy pewni, że wcześniej wykryliśmy rozłączenie w grze. Następnie możemy zastosować zapisany wynik do wyników / statystyk graczy. Będzie tak samo, jakby gracz przegrał grę. Dobrze jest też ustawić alert informujący gracza o tym, co się dzieje. Następnie, gdy zobaczy, że istnieją konsekwencje odłączenia w trakcie gry, zobaczysz, że zachowanie zaczyna się zmieniać.


To całkiem sprytne. Oczywiście nie może równie dobrze odnosić się do wszystkich typów gier, ale koncepcja obliczania potencjalnych konsekwencji z góry jest niezła.
Kylotan

1
Jednak dość surowe w przypadku przypadkowego rozłączenia może być rozwiązanie w tym obszarze.
Kzqai

5

Myślę, że jedynym sposobem, aby tego dokonać, jest struktura twojej gry. Istnieją dwa sposoby, dzięki którym oszukiwanie jest mniej pożądane: kara lub nagroda. Więc jeśli nie chcesz kary negatywnej, pomyśl o sposobach nagradzania gracza, który nie upuścił.

Zamiast nagrody z PvP, która jest łupem zdobytego ciała (co sprawia, że ​​upuszczenie jest bardzo złą rzeczą), wygrana daje nagrodę, taką jak exp., Złoto lub coś zupełnie innego (Punkty? Ranking?). Jeśli jeden z graczy zostanie wyrzucony, pozostały gracz otrzymuje nagrodę, a gracz, który został wyrzucony, nie otrzymuje nic, ale nic nie traci. Chyba że jest to system rankingowy, w którym to przypadku gracz opuszczający może stracić część punktów rankingowych.


To wyjątkowa analiza, podoba mi się.
Kzqai

Może to zostać wykorzystane przez dwóch graczy, którzy się znają. Mogą powtarzać to tak często, jak chcą, ponieważ przegrany nie otrzymuje kary.
lub

5

Lineage II robi to tak:

  • Nie możesz opuścić klienta gry podczas walki - każda walka się rozpoczyna, bez względu na to, czy zaatakowałeś, zostałeś zaatakowany lub uleczyłeś kolegę z drużyny, który walczy, i jesteś w „postawie walki”, która trwa 15 sekund po ostatniej takiej akcji został zrobiony.
  • Jeśli mimo to rozłączysz się lub gra się zawiesi, twoja postać pozostanie w grze przez 15 sekund, zanim zniknie. Kontynuuje nawet automatyczne atakowanie, niezależnie od tego, co atakował, ale nie używa umiejętności - tak samo jak w przypadku AFK.
  • Nie jest to sposób, aby odłączyć od razu jednak, podłączając ponownie do tego samego konta z innego klienta. Jest to uważane przez społeczność za oszustwo graniczne, gdy odbywa się to w trybie PvP, a niektóre narzędzia oszukiwania mają również możliwość korzystania z niego, więc nie jest tam często używany. Jednak gryząc za dużo, aby przeżuć PvE, niektórzy ludzie nadal używają tej sztuczki, aby uniknąć niepotrzebnych zgonów (chociaż istnieją przedmioty w grze, które pozwalają na prawie to samo, a mianowicie „błogosławione zwoje ucieczki”).
  • Ponowne połączenie się ze strefą oznaczoną PvP (na przykład teren zamkowy podczas oblężenia) i niektórymi konkretnymi epickimi obszarami bossów, które nie wystąpiły, zamiast tego przenosi postać do najbliższego miasta (bezpieczna strefa). Zatem rozłączenie się tam, aby uniknąć „przegrania”, pociąga za sobą karę dla twojej drużyny, co oznacza, że ​​silnie zniechęcają ją społeczne normy gry.

Osobiście zrobiłbym to podobnie, pozwalając tylko graczom wstępnie zdefiniować działania, które ich postać podejmuje w momencie rozłączenia (zostań i walcz, biegnij do najbliższej bezpiecznej strefy unikając agro, używaj zwykłego zwoju ucieczki, używaj błogosławionego zwoju ucieczka, ...) i niech postacie pozostaną w świecie gry, nawet jeśli gracz nie jest zalogowany.


Ładny! Lubię to! :)
Kliknij Ok

3

Ten, który się rozłączył, umrze, gdy dostanie wystarczająco noża, a drugi zostanie uznany za zabicie. Coś bardziej łagodnego zostanie wykorzystane.

Ogólnie rzecz biorąc, Twoje ciało opuszcza świat od 1 do 5 minut.


3

Nie ma sposobu, aby ustalić, co spowodowało rozłączenie (czy nastąpiło wyłączenie zasilania? Czy wściekłość rzuciłem moją maszynę o ścianę?), Więc możesz jedynie założyć, że użytkownik próbuje (lub spróbuje) oszukać i narazić ich na niebezpieczeństwo przez X minut.


3

Sposób obsługi tego przez EVE Online jest następujący:

  • Statek zaczyna atakować warp 15 sekund po rozłączeniu. Jeśli jest zakodowana, statek nie wypaczy się. (Statek twojej postaci zacznie „uciekać” po 15 sekundach, chyba że zostanie „uwięziony” przez innego gracza)

  • Timer PVP (czas, po którym gracz „ucieka” podczas walki PvP) jest ustawiony na 3 minuty. (Ma to na celu przeciwdziałanie wielu innym licznikom).

  • Timer NPC pozostaje na 1 minucie, ale statek wypacza się po 15 sekundach, chyba że NPC zostanie zakodowany.

  • Gdy statek jest zablokowany przez gracza, powinien przełączyć się na licznik czasu PvP (aby go skontrować za pomocą 1-minutowego timera, jeśli rozłączy się w okolicznościach, w których nie można go celować, dopóki zegar nie zostanie ustawiony).



2

Jeśli masz sposób na modelowanie zwyczajnych schematów graczy w bitwie, możesz wysłać ich do trybu AI, aż ponownie się połączą lub bitwa się zakończy, w zależności od tego, co nastąpi wcześniej. Ale nie przyznawaj im żadnych nagród (exp, przedmiotów itp.) Za bitwę, chyba że powrócą w X czasie.


0

Zaimplementowałbym jakąś histerezę. Możesz użyć marchewki i kija. Ale wybór, który użyć, może być oparty na historii (możesz również dokonać analizy ich połączenia i bieżącej „zdolności wygranej” i użyć tego). Mam nadzieję, że tak zrobisz to osobiście. Prosty model:

  • Jeśli jestem „zły”, a ja DC dostaję kij. Jestem teraz bardziej zły.
  • Jeśli jestem „zły” i ukończę grę, nie dostanę kija, ale też nie dostanę nagrody. Jestem teraz bliżej bycia dobrym.
  • Jeśli jestem „dobry” i ja DC, nie dostaję kija, ale też nie dostaję nagrody. Jestem teraz bliżej bycia złym.
  • Jeśli jestem dobry i ukończony, dostaję nagrodę. Jestem teraz bardziej dobry.

Możesz to nadużyć tak. Ale zrobienie tego może wymagać więcej wysiłku niż tylko ugryzienie kuli. (Jeśli zajęło to 2 DC, aby na przykład być złym, możesz technicznie pozbyć się połowy swoich strat. Ale to zmniejsza pewne nadużycia, a w przypadku mniej niż sprytnych graczy wszystkie nadużycia).

Użycie tego oznacza, że ​​tablice wyników nie sumują się do 100%. Ponieważ możesz DC, gdy jesteś dobry i nie nagrywać straty. Ale drugi dobry gracz może zanotować zwycięstwo. Również nie sumowanie do 100% oznacza, że ​​2 graczy może współpracować, wyłączając odtwarzacz DC, aby wygrać stos.

Więc nie był niezawodny, ale dodana Bayesowska analiza połączenia gamestate + mogła prawdopodobnie wykryć funkcjonalność i uczynić ten schemat kuloodpornym. (Możesz pokonać analizę bayesowską, ale ludzie nie są w tym dobrzy, a matematyka jest dla większości ludzi poza zasięgiem, nie wspominając już o inwestowaniu czasu w „przygotowanie” walki, aby przetrwać z DC w porządku).


Hmmm. Widzę jeden problem, którego nie da się naprawić ... Jeśli „złe” wygrane mogą narzekać na nieosiągnięcie ich „zwycięstwa”, chyba że program zostanie bardzo jawnie udokumentowany. Co oczywiście zachęca do wtrącania się. Możliwe rozwiązanie: ukrywanie nagród do końca „sezonu”, który przynajmniej utrwala problem ... ale może prowadzić do „złych” graczy odpadających z „straconej” inwestycji. Win-win?
Czarny
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.