Domanda:
Cos'è un segno di spunta?
korrasaur
2015-03-18 00:27:45 UTC
view on stackexchange narkive permalink

Che cos'è un segno di spunta?

Ho sentito molti casi di utilizzo di segno di spunta. Ad esempio, la gente dirà che le demo sono registrate in 16 tick, che i server funzionano in 64 tick, ma i server veramente buoni girano in 128 tick.

Non capisco esattamente cosa sia esattamente un tick. Perché avere potenze superiori di 2 sarebbe meglio? Ho visto molte discussioni sulla richiesta di Valve di aggiungere server tick più alti, ma cosa ti porta un "tick" più alto?

Un insetto succhiatore di sangue.Quando si incontrano in gran numero, si hanno poli-tick, il che spiega molto.
@MasonWheeler Vedo cosa hai fatto lì
Il suono che fa un orologio analogico quando si contano i secondi.
Cinque risposte:
#1
+42
user101016
2015-03-18 01:15:34 UTC
view on stackexchange narkive permalink

Cos'è un segno di spunta?

Per comprendere il significato di un segno di spunta devi prima avere una conoscenza di alto livello di un loop di gioco. In un ciclo di gioco standard hai tre funzioni principali:

  1. Elabora l'input dell'utente
  2. Aggiorna lo stato del gioco
  3. Rendering sullo schermo
  4. Questi verranno ripetuti continuamente durante il gioco. Ci sono controlli sul loop in modo che 2 diversi componenti hardware (ad esempio i PC) non eseguano il loop a velocità diverse. Questo è importante anche nelle configurazioni client-server come Counter-Strike in modo che tutti i client siano sincronizzati. Un tickrate viene utilizzato per controllare la frequenza di aggiornamento dello stato del gioco. Un tickrate di 60 aggiorna lo stato del gioco 60 volte al secondo. Vedrai spesso questo numero rappresentato come ticks , tickrate , tick al secondo e tps .

    Nota che il rendering sullo schermo è spesso controllato in modo diverso (comune vedere 60 frame al secondo o 60fps ). I loop complessi cercano di disaccoppiare il tickrate e il frame rate, in modo che un tempo di elaborazione più lungo non provochi salti nella grafica. Sebbene collegati, è importante capire che gli aggiornamenti del gioco (controllati da tick al secondo ) sono diversi dagli aggiornamenti dello schermo (controllati da frame al secondo ).

    Alcuni giochi online come Titanfall hanno tickrate molto più bassi (20). Ciò significa che ogni secondo il mondo di gioco è stato aggiornato 20 volte e reso sullo schermo 60 volte (assumendo 60 fps ).

    Ho visto molte discussioni su chiedendo a Valve di aggiungere server tick più alti, ma cosa ti dà un "tick" più alto?

    Un tasso di tick elevato renderà il gioco più reattivo perché le tue azioni (spostamento, fuoco, ecc.) si riflettono nello stato del gioco più regolare. Tuttavia, è più impegnativo per la tua macchina / server e la potenziale rete client.

    Per un tickrate più alto, le macchine di fascia bassa potrebbero avere difficoltà. Inoltre, a seconda del netcode (che può essere ottimizzato per 60 anziché 100+) potresti vedere altri bug con sincronizzazione, problemi in virgola mobile ecc.

    Quindi, in breve, un tick rate più alto vedrà i vantaggi se i client possono stare al passo (con CPU e larghezza di banda). In caso contrario, sperimenteranno più lag / problemi rispetto a un server a 60 tick. Inoltre, il costo sarà più alto per i server per eseguire tick rate più elevati (più i costi della larghezza di banda, poiché aggiorni i client più spesso).

    Altri giochi con server dedicati avranno tick rate molto inferiori rispetto 60, sia per aumentare il pubblico (più persone in grado di correre senza problemi) sia per ridurre i costi. Il gioco non sembra reattivo come un gioco / server con tick rate più alto, il che è molto minore considerando che stiamo parlando di velocità di aggiornamento di 20 o 60 volte al secondo. Quante volte puoi fare clic con il mouse in un secondo, comunque?

    Ulteriori letture:

  • Netcode - fornisce alcuni riferimenti a tickrates
  • Game Loop - buono per capire come tickrates e frame rate vengono gestiti generalmente da qualsiasi gioco
  • 10 Tick Rate su Battlefield: protesta per i giochi in esecuzione con tickrate
inferiori
Notoriamente, EVE Online è un gioco in tempo reale che funziona in 1 tick al secondo e in situazioni di stress del server rallenta fino a 1/10 tick (accade quando diverse migliaia di giocatori si combattono in una singola posizione).Tuttavia non è un grosso problema lì, poiché le reazioni rapide danno la precedenza a tattiche e preparazione superiori nel combattimento di un'ora.Nei giochi TBS un "tick" può essere in pochi minuti, quindi non tutti i giochi beneficiano di tassi di tick elevati.
@Ordous Sospetto che anche i giochi TBS abbiano un tick rate, anche se le azioni del giocatore non sono direttamente legate ad esso: sarebbe necessario per il rendering di belle animazioni, se non altro.
#2
+6
Sean Allred
2015-03-18 03:11:14 UTC
view on stackexchange narkive permalink

In poche parole, un "segno di spunta" si occupa del minor tempo necessario al motore di gioco: è il numero di passaggi discreti che il gioco può muovere in un secondo. realistico, ma questo ha un costo elevato in termini di potenza di elaborazione.

In un altro senso, è un conteggio di quanti "campioni" prendi da uno scenario (teorico) di vita reale. Più campioni prendi, meno i dati sono instabili.

#3
+4
Powerlord
2015-03-18 01:26:50 UTC
view on stackexchange narkive permalink

Il tickrate del server è il numero di frame di gioco che il server elabora in un solo secondo. Questo a volte viene anche chiamato FPS del server, che è fonte di confusione poiché il server ha ancora il comando max_fps .

Ogni frame di gioco, il gioco chiama il metodo GameFrame di un'entità ( se ne ha uno) per qualsiasi elaborazione logica di gioco. Per proiettili, giocatori, porte, ecc ... questo include l'elaborazione fisica. Il gioco fa anche logica interna in questo momento ... e qualsiasi plugin Valve Server (VSP) come MetaMod: Source e SourceMod può anche agganciare le proprie chiamate GameFrame (per SourceMod, questo è usato per i timer SourceMod e tutti i plugin che hanno OnGameFrame hooks).

Come avrai intuito, più alto è il tickrate, maggiore sarà la potenza della CPU che il gioco utilizzerà.

Non deve sempre essere un potere di 2. In effetti, alcuni proprietari di server CS: GO giurano di 102 / 102,4 tick invece che di 64 e 128 tickrates predefiniti. Affermano che rende le prestazioni del server più coerenti e riduce i picchi di CPU.

Tuttavia, questo potrebbe essere cambiato poiché Valve ha aggiornato il gioco.

Tieni presente che impostare solo il tickrate più alto non migliorerà l'esperienza dei giocatori. Devi anche assicurarti che le tue tariffe siano impostate correttamente per la quantità di larghezza di banda che hai a disposizione.

Come per gli altri giochi di Valve, molti utilizzano tickrate bloccati:

  • 30 frame di gioco al secondo
    • Left 4 Dead
    • Left 4 Dead 2
  • 66 frame di gioco al secondo
    • Day of Defeat: Source
    • Counter-Strike: Source
    • Team Fortress 2

Il 66 i fotogrammi di gioco al secondo non erano sempre bloccati a 66. Valve ha cambiato questa impostazione qualche tempo fa dopo aver apportato modifiche al codice di gioco. Queste modifiche hanno reso alcuni giochi (TF2 in particolare) molto più sensibili ai cambiamenti di tickrate ... impostarlo troppo alto o troppo basso ha cambiato la velocità con cui le porte si aprivano / si chiudevano e causava problemi.

In una nota a margine, il tickrate del server e il tickrate del client potrebbero non essere gli stessi.Il client può limitare la frequenza con cui riceve i frame dal server (`cl_updaterate`).Detto questo, il server può impostare valori minimi e massimi per queste impostazioni (`sv_minupdaterate` e` sv_maxupdaterate`).Indipendentemente da ciò su cui si impostano questi valori minimi e massimi, il server elaborerà i frame di gioco `-tickrate` al secondo al numero più vicino di millisecondi (cioè 66 fps è 1000/66 o 15 ms).
Quindi, come fa un tickrate alto a riconvertirsi in tick rate più bassi, nel caso di una demo eseguita su un server valve (poiché tutte le demo sono fatte apparentemente in 16 tick).
@0-framelinks Un file .dem lato client contiene tutti i pacchetti che un client ha ricevuto e quindi registrerebbe a qualunque `cl_updaterate` un client stesse usando (assumendo che la loro` rate` fosse abbastanza alta da sostenerla).Un .dem lato server creato con SourceTV / GoTV sul lato server (usando `tv_record`) contiene molte più informazioni poiché registra tutto ciò che accade in ogni frame di gioco ovunque sulla mappa e non ha una prospettiva fissa.
Notare che tickrate e framerate sono spesso disaccoppiati.Molti giochi hanno FPS molto più alti di TPS e DwarfFortress ha un TPS molto più alto di FPS.
#4
  0
TheFaster
2015-03-18 00:30:28 UTC
view on stackexchange narkive permalink

Da un forum Counter-Strike:

Durante ogni tick, il server elabora i comandi dell'utente in arrivo, esegue una fase di simulazione fisica, controlla le regole del gioco e aggiorna tutti gli stati degli oggetti. Dopo aver simulato un segno di spunta, il server decide se un client necessita di un aggiornamento mondiale e, se necessario, scatta un'istantanea dello stato del mondo corrente. Un tickrate più alto aumenta la precisione della simulazione, ma richiede anche più potenza della CPU e larghezza di banda disponibile sia sul server che sul client.

Per favore includi la tua fonte.
Cos'è la precisione della simulazione?Non lo capisco esattamente
Ci siamo.Aveva negli appunti, ho appena dimenticato di collegarlo.Grazie.
@0-framelinks Bene, se vengono effettuati più calcoli al secondo, otterresti una simulazione più accurata e precisa, giusto?
Quindi fondamentalmente un segno di spunta è quanto accurate le informazioni vengono inoltrate al server dal client?
@0-framelinks Sì.In sostanza, riduce il ritardo tra ciò che fa il giocatore e ciò che si riflette nel mondo.
#5
  0
Valid
2015-03-19 01:15:02 UTC
view on stackexchange narkive permalink

In un solo segno di spunta il motore di gioco elabora tutte le azioni (da un utente o da un'IA o da un altro processo interno) e aggiorna di conseguenza lo stato e la posizione di tutti gli oggetti nel mondo. Il motore di rendering prende tutti gli stati e le posizioni e visualizza gli oggetti sullo schermo utilizzando la tua posizione nel mondo. Per un gioco autonomo, normalmente c'è un rendering per tick. Per un gioco online, la relazione dipende dal gioco, ad es. il tuo client World of Warcraft riceve informazioni sullo stato e sulla posizione dal server e la tua macchina locale esegue semplicemente il rendering degli oggetti al proprio ritmo.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...