Jak wdrożyć „czas pocisku” w grze wieloosobowej?


29

Nigdy wcześniej nie widziałem takiej funkcji, ale powinna ona zapewnić interesującą okazję do gry.

Więc tak, w środowisku dla wielu graczy / w czasie rzeczywistym (wyobraź sobie FPS), jak mogę wdrożyć efekt zwolnionego tempa / czasu pocisku?

Coś w rodzaju złudzeń dla gracza, który jest obecnie powolny. Więc wszyscy widzą go „w czasie rzeczywistym”, ale widzi, że wszystko zwolniło.

Aktualizacja

Uwaga: pamiętaj, że gra FPS musi być zrównoważona, aby była fajna. Tak więc, ta funkcja czasu pocisku musi być solidna, dając niewielką przewagę „graczowi”, nie odrywając się od innych graczy.

Dodatkowo istnieje możliwość, że dwóch graczy może aktywować swój czas naboju w tym samym czasie.

Ponadto:

Zamierzam to wdrożyć w przyszłości, bez względu na to, czego potrzeba. Pomysł polega na zbudowaniu nowego silnika gry. Jeśli to daje nowe możliwości, jestem bardziej niż zainteresowany słuchaniem pomysłów.

Tymczasem tutaj, wraz z moim zespołem, myślimy o tym, kiedy nasza teoria zostanie stworzona, podzielę się nią tutaj.

Czy to w ogóle możliwe? Odpowiedzi na pytanie „czy to w ogóle możliwe”, teraz nadszedł czas, aby znaleźć najlepsze rozwiązanie.

Trzymam „odpowiedź”, dopóki nie pojawi się coś wyjątkowo dobrego, jak prototypowa teoria z czymś zbliżonym do działającego pseudo kodu.

Co mówią fizycy i filozofowie:

Linki są dla Ciebie interesujące, ponieważ tematy są zamknięte.

https://physics.stackexchange.com/questions/17118/time-traveling-and-time-dilation-within-a-multiplayer-videogame

https://philosophy.stackexchange.com/questions/1704/seeing-everything-in-slow-motion-but-being-real-time

Warunki, o których pomyślałem pisząc pytanie na stronie fizyki (skopiowane):

  1. Gracz pod wpływem zwolnionego tempa ma przewagę, aby wykonywać bardziej precyzyjne działania (strzelanie, ruch itp.), Ponieważ widzi wszystko w znacznie wolniejszym tempie.
  2. Jego działania powinny wpływać na innych graczy w czasie rzeczywistym.
  3. Gracze, którzy patrzą na naszego dotkniętego gracza, nie widzą żadnej różnicy, z wyjątkiem tego, że mogą doświadczyć działań, które wykonał (np. Gracz zostaje postrzelony / dotknięty unika rakiety).
  4. Kiedy gracz wyjdzie z tego efektu, po prostu kontynuuje to samo tempo, jak zwykle. (Jeśli nie jest to możliwe, myślę, że będzie musiał cierpieć, dopóki czas nie zostanie zsynchronizowany)

Referencje dotyczące czasu pocisku (zwolnione tempo):

Niestety większość wdrożeń dotyczy tylko jednego gracza

http://www.gamesradar.com/a-videogame-history-of-bullet-time/


3
Udało się to już w MMORPG The Matrix Online. Doświadczyłeś czasu na pociski podczas walki z przeciwnikami, kiedy wszedłeś do walki z nimi. Dokonano tego zarówno z przeciwnikami PvE, jak i PvP. Wszyscy inni spoza Interlocka widzieli „prędkość w czasie rzeczywistym”. Komentując zamiast odpowiadać, ponieważ nie mam specjalistycznej wiedzy lub wiedzy, aby wyjaśnić, jak to zrobili, po prostu wiem, co się wydarzyło z punktu widzenia gracza.
FallenAngelEyes

3
Było to również obecne w FEAR Combat. W grze wieloosobowej istniał tryb gry o nazwie SloMoDeathmatch. Jest to darmowa gra, jeśli dobrze pamiętam, więc jeśli chcesz ją wypróbować, pobierz ją i sprawdź, czy zostało jeszcze kilka serwerów.
alextsc

3
Nie sądzę, aby stwierdzenie, że czekasz na pseudokod, pomoże w udzieleniu odpowiedzi. Gdy projekt, który chcesz, jest wystarczająco zestalony, kod powinien być oczywisty.
Tetrad

1
Ponadto, „bez względu na to, czego potrzeba”, cuchnie filozofią złego projektu. Wydaje się, że powinieneś to zrobić tylko wtedy, gdy udowodnisz (za pomocą prototypu lub działającego przykładu w innej grze) metodę, której planujesz użyć, zanim przejdziesz dalej.
Tetrad

4
-1 dla „Zachowuję„ odpowiedź ”, dopóki nie pojawi się coś wyjątkowo dobrego, na przykład prototyp z czymś zbliżonym do działającego pseudo kodu.” Nie bądź palantem.
Trevor Powell,

Odpowiedzi:


22

To zostało zrobione wcześniej. :) Sprawdź specjalistów , mod półtrwania, który ma dwa różne ulepszenia czasu pocisku.

EDYTUJ, aby dołączyć informacje zzzzbov poniżej

Sposób, w jaki czas pocisku działał w „Specjalistach” z perspektywy rozgrywki, polegał na tym, że gracz mógł uzyskać ulepszenia, które dawałyby ograniczone ilości „czasu pocisku”. Gdy zostanie użyty, bańka wokół gracza spowolni fizykę.

Gracze daleko będą poruszać się z normalną prędkością, ale wszystko w bańce (kule, gracze, eksplozje) spowolni. Gracz, który użył ulepszenia, poruszałby się nieco szybciej, pozwalając mu uciec lub użyć wyczynów, aby unikać pocisków.

Ktokolwiek inny złapany w bańkę czasu „pocisku” nadal ma tę zaletę, że może zobaczyć, co się wydarzy, ale względna różnica prędkości między złapanym graczem a pociskami pozostaje taka sama, więc zdolność do reagowania praktycznie nie istnieje.


@Tom IIRC, jest to oprogramowanie typu open source, więc powinieneś zobaczyć, jak oni to zrobili.
Spencer Rathbun

Hmm, wyszukiwarka Google nie zwróciła żadnych wyników dotyczących kodu źródłowego. (plus okropna ilość informacji o The Specialists: Source również jest wyświetlana). Masz link czy coś?
joltmode,

@Tom Myślałem, że to na ich stronie internetowej, do której link powinien znaleźć się w artykule na Wikipedii. Jeśli nie, mogliby go zdjąć, ponieważ kilka lat temu przeszli na silnik HL2. Może być konieczne wysłanie deweloperom wiadomości e-mail, aby uzyskać dostęp. Oczywiście, ja też mogę się umyć.
Spencer Rathbun

Ich strona internetowa też nie działa ..
joltmode

5
Zamierzałem dodać tę samą odpowiedź, dopóki jej nie znalazłem. Sposób, w jaki czas pocisku działał w „Specjalistach” z perspektywy rozgrywki, polegał na tym, że gracz mógł uzyskać ulepszenia, które dawałyby ograniczone ilości „czasu pocisku”. Gdy zostanie użyty, bańka wokół gracza spowolni fizykę. Gracze daleko będą poruszać się z normalną prędkością, ale wszystko w bańce (kule, gracze, eksplozje) spowolni. Gracz, który użył ulepszenia, poruszałby się nieco szybciej, pozwalając mu uciec lub użyć wyczynów, aby unikać pocisków.
zzzzBov

12

Nie mogę wymyślić żadnej gry, która miałaby czas na pocisk w trybie dla jednego gracza, która z powodzeniem przekształciła ją w tryb wieloosobowy w jakikolwiek znaczący sposób. Może być kilka z nich, którzy rozwiązali go, przyspieszając korzystanie z niego przez gracza, ale ten rodzaj pokonuje sens.

Czas na pocisk istnieje, ponieważ chcesz sprawić, że gracz poczuje się jak badass. Dajesz graczowi pozornie niesprawiedliwą przewagę, symulując postrzeganie wyższego poziomu. Efektem końcowym jest to, że gracze mogą celować, robiąc fajne rzeczy, takie jak wyskakiwanie z osłony i tak dalej. Jeśli tylko przyspieszyłeś gracza, gdy ma on włączony czas pocisku, dajesz mu mniej czasu na reakcję, co jest przeciwieństwem tego, czego chcesz.

W synchronicznym środowisku wieloosobowym tak naprawdę nie ma żadnego rozwiązania dla aktywowanego przez użytkownika „czasu zwalnia”, który symulowałby wrażenie wynikające z używania go w środowisku dla jednego gracza. Gdyby sam czas został spowolniony, wtedy postrzeganie wszystkich wzrosło. Zwłaszcza w grze na PC, w której celowanie myszą jest generalnie natychmiastowe, wszyscy zyskaliby na wolniej poruszających się celach.

Teraz, jeśli byłeś na tym martwy, sugeruję, aby zamiast uczynić go funkcją aktywowaną przez gracza, uczynić z niej coś w rodzaju „stanu” spotkania. Pomyśl jak w filmie Johna Woo, w którym to jest dobry facet kontra zły facet, a wszystko wydaje się zwalniać, gdy strzelają do siebie. Kiedy więc rozpocznie się „spotkanie”, włącz zwolnione tempo i możesz uzyskać ciekawe efekty. Faceci skaczą i rykoszetują po nie trafionych pociskach unoszących się w powietrzu i tak dalej. Oczywiście, to naprawdę działałoby tylko w przypadku gry 1 na 1. Nie dostaniesz jednostronnej korzyści z czasu pocisku, jak w grze dla jednego gracza, ale może to być interesujące doświadczenie.


1
Można by ją rozszerzyć na więcej niż 1 na 1, spowalniając tylko ludzi, którzy mogliby się zobaczyć, a potem, gdy tylko ktoś by ich zobaczył, spowolnij ich. W ten sposób wszyscy inni mają normalną prędkość, dopóki nie rozpoczną walki.
George Duckett

Można obejść problem natychmiastowego celu, ograniczając szybkość obrotu - prawdziwy problem polega na tym, że w prawidłowym systemie nowy system odniesienia nie powinien mieć wpływu na nikogo innego; powinien tylko widzieć, jak gracz jest przyspieszany.
Jonathan Dickinson

Nie spowalniaj wszystkich. Zamroź innych graczy, dopóki nie dobiegnie końca kula. Chcesz tak ustawić czas, aby po upływie czasu pocisku linie czasu były ponownie synchronizowane.
Martin Sojka

To jedyna jak dotąd odpowiedź obejmująca odpowiedni punkt: nie przyspieszacie ani nie zwalniacie czasu. Spowalniasz prędkość symulacji, aby gracze mieli więcej czasu na reakcję i planowanie ruchów, które, gdyby były wykonywane w czasie rzeczywistym, szybko by się kontrolowały. Aby ta gra działała z punktu widzenia rozgrywki, wszyscy zaangażowani gracze (oglądający lub biorący udział w akcji) muszą zostać spowolnieni, a wszyscy niezwiązani gracze (ci, którzy nie są w pobliżu, by obserwować spowolnienie) będą kontynuować z normalną prędkością. Jeśli nie spowolnisz wszystkich, którzy widzą to wydarzenie, będzie to wyglądać głupio.
MrCranky,

Gry wideo Max Payne używają „czasu pocisku” jako umiejętności w grze. Niektóre gry Star Wars Jedi (Jedi Knight II) mają również „Force Speed”, która przyspiesza cię, spowalniając wszystkich innych (z wyjątkiem innego użytkownika Force Speed).
KeithS

8

Ogólne myśli

Jest to problem najlepiej opisany za pomocą ogólnej teorii względności - weźmy na przykład fakt, że możesz zobaczyć efekty czasu pocisku, po prostu patrząc przez teleskop na satelitę (przyczyna niesławnego neutrina podróżującego szybciej niż problem świetlny) - równania które można rozwiązać, istnieją w tych warunkach; co oznacza, że ​​jest to całkowicie możliwe.

Twoja gra będzie musiała obsługiwać osobne ramy odniesienia - o ile wiem, byłby to efekt netto („gracz” to osoba z aktywnym czasem pocisku):

  • Ludzie widzący gracza zobaczyliby, jak poruszają się niezwykle szybko.
  • Gracz zobaczy, jak ludzie poruszają się bardzo wolno.
  • Gracz poruszałby się w przeszłości / przyszłości w odniesieniu do wszystkich innych.

Na szczęście dla ciebie oznacza to, że gracz w czasie pocisku ma przewagę nad wszystkimi innymi; nie mogą do niego celować - jednak nie byłoby to przekonujące, ponieważ przeciętny człowiek nie spodziewałby się zauważalnej różnicy podczas obserwacji dylatacji czasu.

Zdecydowanie polecam opublikować to na temat fizyki (wskazać, że jest to gra, ale potrzebujesz prawdziwej wiedzy teoretycznej) i zapytać o pomysły, w jaki sposób przybliżasz efekt w symulacji równoległej.

Jednym z możliwych rozwiązań, na które chciałbym spojrzeć, jest to, że świat dogania gracza (ponieważ przeniósł się w przyszłość), dzięki czemu wszyscy doświadczają progresywnej ilości (znacznie mniej niż rzeczywisty czas pocisku) czasu pocisku w zależności od daleko w tyle ( czas) są. W ten sposób możesz przybliżać różnice czasowe bez konieczności zajmowania się przechowywaniem stanu z przeszłości itp. Potrzebowałbyś jakiegoś sposobu, aby wyjaśnić ten efekt, „odbicie czasu” lub coś takiego, ponieważ nie jest to fizycznie poprawne.

Innym pomysłem jest nadużywanie najbardziej podstawowych równań fizyki ( s = d/t), gdy gracz przechodzi w czas pocisku, wszystko staje się mniejsze - jeśli zmniejszysz wszystko o połowę z jego perspektywy, ale utrzymasz jego prędkość na tym samym poziomie, zgodnie z jego oryginalnym układem odniesienia, (skutecznie dwa razy) równanie nadal się równoważy. Sekwencje napędów warp w filmach kosmicznych wykorzystują tę dylatację kosmiczną do przedstawienia efektu - ludzie są więc przyzwyczajeni do oglądania.

Rzeczywiste rozwiązanie

Zastanowiłem się nad tym. Jeśli spojrzysz na to, jak działa system sieciowy Steamworks ( czy ktoś ma link? ), Serwer jest ciągle do przodu o określony czas; i każdy klient wie o „kolejnej” ramce, do której musi interpolować.

Powiedzmy na przykład, że serwer wyprzedza wszystkich graczy o 20 ms. Kiedy gracz wkracza w czas pocisku, zmień jego interwał aktualizacji na 40 ms (jego symulacja będzie przebiegać co 40 ms, a serwer będzie kolejkować swoje działania 40 ms w przyszłość) - co zasadniczo przesunie się w przyszłość w odniesieniu do innych graczy: dodatkowo sprawiając, że poruszał się szybciej od ich odniesienia i sprawiał, że poruszali się wolniej od niego. Kiedy opuści czas na pocisk, daj wszystkim innym przewagę 5ms nad nim, aby mogli zagrać w „nadrabianie zaległości” (to twoi time reboundprzypadkowo sprytni gracze będą pociskać czas w tych okresach nadrabiania zaległości). Może wyglądać trochę lepiej, jeśli przypiszesz parabolę do jego kroku czasowego - spowoduje to spowolnienie, zatrzymanie, a następnie stopniowe przyspieszenie.

Oświadczenie: Nie jestem fizykiem, ale mam praktyczną wiedzę na temat teorii względności.


4

Chciałem dodać 0,02 USD, ponieważ wdrożyłem prototypowy tryb czasu pocisku, który działał w grach wieloosobowych dla Heroes Over Europe .

W trybie dla jednego gracza naciśnięcie przycisku w odpowiednim momencie spowolniłoby czas i powiększyło zamierzony cel. Nie chciałem spowalniać globalnie czasu w trybie dla wielu graczy, aby powielić tę funkcję (ponieważ gra miała obsługiwać 16 jednoczesnych graczy!), Więc użyłem metody „bąbelkowej”.

W szczególności, gdy uruchomiono tryb czasu pocisku, wokół docelowego samolotu została utworzona kula. Szybkość upływu czasu zmieniała się w zależności od odległości od środka kuli; czas obniżył się liniowo od jego powierzchni do wartości minimalnej gdzieś w pobliżu środka. Szybkość zmieniła się również w zależności od tego, jak długo istniała sfera i jak długo kula pozostała, zanim „wyparowała”.

Zostało to zsynchronizowane między komputerami poprzez wysłanie pakietu, który określa przyszły czas uruchomienia bąbelka; pozwoliło to zachować synchronizację efektu pomimo opóźnień. (Podobnie, gdy efekt miał się wcześnie skończyć, pakiet ogłosi przyszły czas, w którym miał się zakończyć.)

Szybkość upływu czasu była zawsze definiowana funkcjonalnie: biorąc pod uwagę definicję kuli, aktualny czas i pozycję, można było określić, jak szybko płynie czas.

Aby efekt zadziałał, kilka systemów gier musiało zostać dostosowanych do tej „funkcjonalnej” definicji czasu. Samoloty, pociski, pociski i inne efekty wykorzystywały osobę, dtktóra została opracowana przez wywołanie odpowiedniej funkcji. Większość pracy związanej z uruchomieniem prototypu została tutaj wydana.

Wynik zadziałał całkiem nieźle: gracz celowany w czas pocisku zauważalnie zwolniłby i miałby (małą) szansę na wymknięcie się z celownika agresora z dala od gradu pocisków w zwolnionym tempie. Pobliscy gracze widzieli, jak samoloty i pociski omijają się nawzajem w zwolnionym tempie, ale poza tym pozostały nienaruszone.

Zwróć uwagę, że gracz wyzwalający został również spowolniony, ale nie był w tym szczególnie niekorzystny: mieli powiększony widok celu i mogli wpływać na zabójstwa jednym strzałem na swoją ofiarę. Inny gracz może próbować cię zabić (lub zabić kradzież!) W tym stanie, ale ich samolot (i kule) zostałyby naruszone po wejściu do bańki, dając ci czas na ucieczkę.

Niestety, chociaż działało, nigdy nie mieliśmy czasu na ukończenie i dopracowanie tej funkcji do gry wieloosobowej, więc została ona usunięta. (Jeden gracz nadal zachował tę funkcję, jako „Ace Kill”.)


2

Nie tak naprawdę czas na pociski, ale może być świetną zabawą:

Co z czymś podobnym do sposobu, w jaki Braid spowalnia czas? Tj. Im bliżej osoby doświadczającej czasu pocisku, tym wolniej się dzieje ... a jeśli jesteś poza strefą wpływów, czas płynie normalnie.

... na przykład, jeśli gracz A ma czas na pocisk, to otacza go stopniowana kula „wolnego czasu”, aby mógł odpowiednio celować, ale niekoniecznie poruszać się szybciej - wtedy gracz B strzelający do niego musiałby przesadzić, gdzie trafi kula, ponieważ zwolni, im bardziej się do niego zbliży.

Chociaż im więcej o tym myślę, tym mniej myślę, że to zadziała, ponieważ może po prostu sprawić, że Gracz A będzie łatwym celem (ponieważ jego głowa zwolni?) - ale i tak byłoby interesujące zobaczyć to w 3D.


1
Ciekawe, ale jeśli pociski zwalniają, im bardziej zbliżają się do gracza, powinien być w stanie ich uniknąć.
joltmode,

Tak, ale podobnie jak w przypadku plecionki, sam gracz również zwalnia - tzn. Prędkość obracania się graczy może być nadal duża, więc blokowanie lub tarcze byłyby łatwiejsze do rozmieszczenia, aby uniknąć pocisków, ale faktyczny ruch latania w powietrzu, aby się wydostać Drogi kul będzie wolniej ...
Seb

2

Wiem, że to stare pytanie, ale z trudem nie wspomniałem o problemie z większością odpowiedzi dotyczących względności

Zaimplementowane z efektami opisanymi w pytaniu czas pocisku w grze wieloosobowej nie jest możliwy.

Powodem jest to, jak działa względność; niektórzy z was o tym wspominali i oczywiście rozumieją teorię względności, ale problem polega na tym, że wasze modele są niepoprawnie skonfigurowane.

Wiele osób użyło w swoich odpowiedziach „Referencji Gracza A kontra Gracza B”, ale niestety żadna z tych rzeczy tak naprawdę nie istnieje. Tak, masz graczy, może nawet wielu z nich, i tak, mogą kontrolować swój świat i wchodzić w interakcje z nim oraz mieć własną perspektywę gry, ale perspektywa nie jest punktem odniesienia w czasie: jest to po prostu przestrzeń XYZ rzutowana na XY samolot.

Jest tylko jeden punkt odniesienia czasu i jest nim serwer (lub host). Jest tylko jeden pogląd na fizyczny stan świata, a zatem tylko jeden punkt odniesienia. Gracze widzą na ekranie różne widoki graficzne tej samej symulacji fizycznej.

Aby jeden gracz mógł zobaczyć przebieg symulacji przy jednej prędkości, a drugi zobaczyć tę samą symulację przy innej prędkości i nie mieć desynchronizacji, po prostu nie jest to możliwe. Gdzieś coś musi dać.

Wszelkie próby przeprowadzenia wielu symulacji lub uruchomienia serwera przed klientami po prostu nie mają sensu. Efekt opisany w poście po prostu nie może zostać osiągnięty bez wymuszenia pojedynczego punktu odniesienia lub pozostawienia myśli zsynchronizowanych i poinformowania graczy, że ich działania naprawdę nie miały miejsca po tym fakcie.

Myślę, że najlepsze rozwiązanie jest podobne do tego, które już podano, które ma mieć efekt przypominający warkocz, w którym prędkość zmienia się w bańce wokół gracza. To powiedziawszy, gracz nie zwalniał, a bąbelek zawsze był ustawiany i przesuwany z nim na środku. To sprawia, że ​​gracz porusza się z pełną prędkością, podczas gdy najbliżsi czują się spowolnieni. Dostaje przewagę mocy, a ludzie daleko od tego obszaru nie odczuwają efektu. Ci, którzy są w pobliżu, są spowolnieni, ale byłoby oczywiste, że ktoś używa mocy (sugerowałbym wyróżnienie gracza, który z niej korzysta, aby gracze przeciwni mogli w pełni zrozumieć, co się dzieje i dlaczego).


1

To byłoby bardzo niezręczne. Nawet nie patrząc na problem dylatacji czasu, wyobraź sobie, że jesteś graczem, który spędził 4 sekundy w czasie pocisku, podczas gdy wszyscy inni w grze spędzili 2 sekundy w czasie rzeczywistym. Ponieważ ten sam czas minął w rzeczywistości dla wszystkich, będziesz musiał w jakiś sposób „odzyskać” te dwie sekundy w grze. W pewnym momencie musisz „przeskoczyć” 2 sekundy czasu gry lub poświęcić trochę czasu na bieganie szybciej niż normalnie, albo coś innego, co prawdopodobnie spowodowałoby stratę czasu na kuli.

Co więcej, chodzi o to, aby wysłać to, co robisz, w 2 sekundy swojego czasu z powrotem w czasie 1 sekundy do wszystkich innych.


1

Rzucaj graczowi mini-podobne wydarzenia w czasie, aby unikać pocisków lub automatycznie śledzić wrogie cele, jednocześnie sprawiając, że ruchy gracza wyglądają rozmazane lub „rozłożone” na innych graczy (aby nie zadrapali głowy, dlaczego ich pociski nie są uderzanie). To wydaje się być najprostszym, najbardziej praktycznym tłumaczeniem, jakie możesz zrobić dla wielu graczy.

Każde inne rozwiązanie wymaga zmiany jednego fizycznego elementu gry dla jednego lub większej liczby graczy, który nie stosuje się równolegle do innych, wyobrażam sobie.


0

Po prostu spowolnij wszystkich pozostałych, wykonując pocisk przez gracza. Możesz to zrobić, zmniejszając wrażliwość myszy.


Jak to przełoży się na „zrównoważoną rozgrywkę”? : D
joltmode,

Jest zrównoważony, a gracz nie przyspiesza, otaczający świat zwalnia. Gracz miałby tę samą przewagę, gdyby przyspieszył, ale jest to bardziej prawdopodobne.
Derek

0

Załóżmy, że mamy gracza A w czasie pocisku i gracza B w czasie rzeczywistym. I robią następujące z punktu widzenia gracza B:

  • Czas 0s - Gracz A aktywował czas pocisku
  • Czas 2s - Gracz A strzela do gracza B
  • Czas 3s - Gracz B strzela do gracza A

Teraz z punktu widzenia gracza A zajmie to dwa razy dłużej - ponieważ świat porusza się dla niego wolniej:

  • Czas 0s - Gracz A aktywował czas pocisku
  • Czas 4s - Gracz A strzela do gracza B
  • Czas 6s - Gracz B strzela do gracza A

Wreszcie serwer zawiera następujące zdarzenia:

  • Czas 0s - Gracz A aktywuje czas naboju
  • Czas 3s - Gracz B strzela do gracza A (B inicjuje tę akcję, aby postępowała zgodnie z linią czasu)
  • Czas 4s - Gracz A strzela do gracza B (A inicjuje tę akcję)

Mamy więc dwa początkowe problemy. Po pierwsze, A ma teraz 3 sekundy czasu gry za wszystkimi innymi. To może być interesująca mechanika gry, jeśli masz pomysł, który oznacza, że ​​musiał spłacić ten dług. Wyobraź sobie strzelankę opartą na osłonie, w której możesz aktywować czas pocisku, aby przebić się przez otwartą przestrzeń, ale gdy znajdziesz się bezpiecznie pod osłoną, musisz stać w miejscu, dopóki reszta świata nie dogoni cię (trzy sekundy, które przegapiłeś, są odtwarzane )

Drugi problem jest znacznie większy. Serwer musi reorganizować wydarzenia chronologicznie dla każdego gracza i ustalić wynik. Najpierw B strzela do A - dzieje się to trzy sekundy po grze, a A widzi to po 6 sekundach - jak dotąd żaden problem. Po 4 sekundach gracz A strzela do linii B. Na osi czasu B miało to miejsce dwie sekundy temu. Co więc robimy z dwiema sekundami rozgrywki, które już minęły, w tym jego strzałem w A?

Możemy to unieważnić - po prostu powiedzieć „Wiem, że gracz B myśli że zastrzelił tego faceta, ale okazuje się, że już nie żył, więc udawajmy, że nigdy się nie zdarzyło” To byłoby gówniane doświadczenie, bardzo podobne do opóźnienia, ale rozwiązałoby problem .

Moglibyśmy dokonać ewangelii obu osi czasu - wykorzystać punkt widzenia serwerów jako całą prawdę i martwić się osią czasu każdej osoby niezależnie. Po 3 sekundach B strzela w A i zabija go. Po 4 sekundach A strzela w B i zabija go. Obaj gracze umierają z powodu strzałów, których nie widzieli. Nie brzmi to dobrze, ale może jest to dobry sposób, po tym jak wszystkim graczom pokonasz krótki kurs w szalonym świecie względności.

Możemy mieć system pseudo-czasu rzeczywistego - gra turowa, w której najpierw planujesz swoje ruchy, a następnie uruchamiasz jednoczesne obliczanie zdarzeń. Dobre rozwiązanie, które rozwiązuje wszystkie problemy oprócz tego, że nie jest typem gry, którą chcesz napisać.

Krótko mówiąc nie sądzę, że to dobry sposób, aby wdrożyć bullet time traktując go w klasycznym sensie efekt jest na osobę używając go - oni poruszać się szybciej, oni widzą świat jako wolniejsze, wszyscy wykonuje normalnie. Jeśli odwrócimy to i wszyscy inni zostaną wpuszczeni w punkt widzenia licznika czasu i zobaczą siebie jako poruszających się wolniej, a ich sterowanie staje się powolne, to wszystko dzieje się synchronicznie i nie ma żadnych problemów. Ale czy to naprawdę pocisk? Choć może to wyglądać na zewnętrznego obserwatora (i powtórki meczu), żaden z uczestników nie uzyskałby oczekiwanego efektu.


Dokonano tego, a efekt był prawdziwy i przez kilka sekund czułeś się jak bóg (specjalista, max payne 3).
Katu

-1

Nie, nie jest to możliwe. Wyobraź sobie, że jeden gracz obraca się w zwolnionym tempie, co zobaczyliby inni gracze? Chcesz, żeby zobaczyli, że gracz czasu pocisku porusza się normalnie, ale ma odruch błyskawiczny, prawda? Ale niestety wszyscy grający w tę grę będą grać w tym samym czasie rzeczywistym. Dlatego jedynym sposobem na zrobienie tego byłoby spowolnienie całej gry, pozbycie się wszelkich korzyści, jakie ona przynosi, tak jak wszyscy byliby w kuli. Również denerwujące byłoby spowolnienie gry przez cały czas, gdy ktoś naciskał ten przycisk.

Istnieją różne rozwiązania, w wyniku których gracze mieliby podobną przewagę (jeden jest w stanie poruszać się szybciej itp.), Na przykład spowalniając wszystkich ELSE i pozwalając ci normalnie się poruszać (wtedy w powtórce możesz przyspieszyć ich do normalnego i reagować szybko), ale nie sądzę, że tak naprawdę chcesz.


1
Zostało to zrobione wcześniej, więc stwierdzenie, że to niemożliwe, jest rażącym błędem.
zzzzBov

@zzzBov dosłownie niemożliwe jest wprowadzenie czasu pocisku w grze wieloosobowej w jego prawdziwej formie. Będziesz musiał najpierw spowolnić całą grę, a następnie spowolnić rzeczywisty czas dla wszystkich innych graczy w prawdziwym świecie. Po prostu o tym pomyśl. Aby obejść ten problem, musisz wdrożyć pauzę / nadrobić zaległości, ale w prawdziwej formie nie jest to możliwe.
SirYakalot

Masz rację, najprawdziwsza forma czasu pocisku gdzie jeden użytkownik pracuje z normalną prędkością, a drugi w czasie pocisku nie jest to możliwe, jednak OP był po „... [wykonawcze] zwolnionym tempie / efekt kuli czasu”, który został byli wykonane przed.
zzzzBov

@zzzBov „Coś w rodzaju złudzeń dla gracza, który obecnie jest w zwolnionym tempie. Więc wszyscy widzą go„ w czasie rzeczywistym ”, ale widzi, że wszystko zwolniło.” Cytat z pierwotnego pytania. Pyta konkretnie o jednego użytkownika biegającego z normalną prędkością, a drugiego innego o czasie pocisku. Właściwie to prawie słowo po słowie, o które prosił.
Trevor Powell,

Fakt, że zostało to już zaimplementowane w grze MP (specjalista, między innymi Max Payne 3) lata temu, sprawia, że ​​ta odpowiedź jest nieprawidłowa.
Katu

-1

FEAR miał czas na pociski w trybie dla wielu graczy, ale dotyczyło ono całej drużyny i spowolniło wszystkich w drugiej drużynie.

Kula czasu w trybie wieloosobowym w czasie rzeczywistym bez spowalniania innych spowodowałaby zsynchronizowanie klientów, gracz w zwolnionym tempie reagowałby na wydarzenia, które inni grali dawno temu, podczas gdy reagowali na bieżące wydarzenia.


1
Chociaż jest to rozwiązanie; Nie podoba mi się to - jedyną osobą, na którą należy wpłynąć, jest gracz w czasie pocisku - tylko dlatego, że satelity obserwują cię, gdy porusza się wolniej, nie oznacza, że ​​poruszasz się wolniej we własnym układzie odniesienia.
Jonathan Dickinson

Przepraszam, moja poprzednia edycja brzmiała trochę młodzieńczo. „Pocisk czasu rzeczywistego” brzmiał jednak jak sprzeczność.
Chomik

-2

Być może powinieneś rozmieścić sprzęt niezbędny do strzelania do gracza na PC, który wyzwalał pocisk w kosmos z prędkością bliską prędkości światła.

Rozwiązałoby to wszystkie problemy, ale może generować wyższe ping / opóźnienie.


-3

cóż, nie byłoby problemu, gdyby wszystkie poruszały się wolniej niż zwykle, ale nie za wolno, a ten, kto je aktywuje, będzie poruszał się szybciej, jak zanurzenie całej gry pod wodą lub przeniesienie jej do przestrzeni wyprzedzającej, gdy ta aktywująca porusza się tak spokojnie jak zawsze


1
Nie ma nic złego w odpowiadaniu na stare pytania. Jednak nadal należy dążyć do tego, aby odpowiedzi były dobre , a ta tak naprawdę nie oferuje zbyt wiele kompletnego rozwiązania, ani też nie obejmuje gruntu, który nie jest objęty istniejącymi odpowiedziami.
Josh
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.