Co to jest „tyknięcie” w kontekście tworzenia gier?


12

Ok, więc jest to pytanie dla początkujących, ale muszę to wiedzieć, do czego odnosi się określenie „tyknięcie” w kontekście rozwoju gry? Czy to to samo, co FPS? Dzięki!


1
Skąd ta terminologia od BTW? Niektórzy nazywają to po prostu tyknięciem, ponieważ physics engine update framejest zbyt długi, aby zwykli gracze mogli go zapamiętać / zrozumieć.
Bálint

Odpowiedzi:


18

Tik jest jednostką miary czasu, a konkretnie odnosi się do pojedynczego wystąpienia powtarzanej akcji (zwykle akcji szerokiej) w grze lub okresu czasu, który ta akcja zużywa.

Kleszcze są powtarzane i (głównie) regularne; termin pochodzi od jednego z dźwięków wydawanych przez zegar („tik” i „tock”).

Zazwyczaj tyk jest iteracją pewnej pętli, takiej jak główna pętla logiczna gry. Można powiedzieć na przykład, że logika gry „zaznacza” raz ramkę lub że „podczas zaznaczania pozycje postaci są aktualizowane”.

Może jednak odnosić się także do bardziej szczegółowych okresów; można powiedzieć, że „znacznik AI w grze jest ograniczony do 5 ms czasu przetwarzania”.

FPS jest miarą liczby klatek (zwykle renderujących klatki), które gra przetwarza w ciągu sekundy. Kleszcze i FPS niekoniecznie są ze sobą powiązane, jednak czasami ludzie nazywają wykonanie pojedynczej pętli logicznej gry „ramką logiczną”, w którym to przypadku (logiczna) szybkość FPS byłaby liczbą przetwarzanych tyknięć na sekundę. Jest to szczególnie powszechne w przypadku gier, które z dowolnego powodu wymuszają ustaloną szybkość klatek dla logiki gry lub fizyki.


2

Większość gier jest implementowana w pętli. Coś jak

def main
 setup(a, bunch, of, stuff)
 load(a, bunch, of, stuff)
 while true do {
   // <- A tick starts here
   read(a, bunch, of, inputs)
   call(a, bunch, of, stuff)
   do(a, bunch, of, stuff)
   update(a, bunch, of, stuff)
   // <- A tick ends here
 }
 clean(a, bunch, of, stuff)
 save(a, bunch, of, stuff)
end

Jest to dość standardowy sposób robienia rzeczy i podczas gdy elementy renderowania i interfejsu użytkownika mogą być obsługiwane w osobnym wątku, rzeczywista logika gry (naciśnij w, aby przesunąć statek do przodu), dzieje się wewnątrz tego tiku.

Jest to również nazywane „ramką” i jest zwykle określane jako szybkość klatek (nie mylić z grafiką). Tick ​​stał się popularnym synonimem, który pomaga odróżnić oba.

Jako programista Twoim celem jest utrzymanie stałej, stabilnej szybkości klatek (tykania) bez względu na wszystko. Dzięki temu odpowiedzi w grze są płynne i racjonalne, a jednocześnie pozwala modelowi (programowaniu, a nie grafice) przetwarzać rzeczy w sposób przyjazny dla komputera. Czasy tykania nie są stałe we wszystkich grach i nie ma magicznej liczby. Niektóre gry mają 100 klatek na sekundę, inne to 1 tyknięcie co 3 sekundy.


1
Ważne jest, aby pamiętać, że nie wszystkie gry mają statyczny wskaźnik tyknięcia. Zarówno Screeps, jak i Eve online obsługują zmienne częstości tykania. Minecraft powinien być stabilny, ale zazwyczaj go nie osiąga i dobrze sobie z nim radzi. Dwarf Fortress ma statyczną liczbę klatek na sekundę i jest do bani, gdy nie może nadążyć, ale nadal działa.
coteyr

Myślę, że trochę za bardzo mieszacie terminy „ramka” i „tykacie”. Kleszcze mogą również obejmować wiele ramek (lub aktualizować cykle).
Tyyppi_77

1

„Kleszcz” może odnosić się do dwóch różnych rzeczy. Może odnosić się do zaznaczenia ramki, jak powiedziałeś, gdy wszystkie widoczne grafiki na ekranie zostaną zaktualizowane. Jednak termin „tyknięcie” może również odnosić się do tyknięcia w pętli gry. Ten typ znacznika jest miejscem, w którym wykonywany jest Twój kod. Zazwyczaj twoje tiki są w kontekście pętli tych samych powtarzających się tików, które będą kontynuowane aż do zakończenia gry.


1

Zazwyczaj tik odnosi się do jednej iteracji pętli gry, w której obliczana jest cała logika, więc gry zazwyczaj mają wiele tyknięć na sekundę.

Jednak wiele gier uruchamia zarówno grafikę, jak i pętlę gry w tym samym wątku, ponieważ grafika zwykle nie wyświetla się tak długo, aby logika została przerwana lub odwrotnie (chociaż programiści sprawdzają, czy takie sytuacje nie są takie, jak biorąc różnicę czasu między ostatnią i bieżącą klatką i odpowiednio dostosowując szybkość ruchu).

FPS oznacza F rames P er S eond, więc w wielu grach tak, technicznie rzecz biorąc, każda klatka to jeden tik.


Więc mogę używać obu terminów zamiennie?
user3843164,

2
Nie zrobiłbym tego. Używałbym „FPS” w odniesieniu do grafiki i „tyka” w odniesieniu do logiki, ponieważ niektóre gry, szczególnie te z intensywną grafiką, mają zwykle dwie pętle: jedną dla grafiki i jedną dla logiki.
StrongJoshua,

Kleszcz nie jest nicią.

@JoshPetrie Oooh, widzę mój błąd, dziękuję za zwrócenie na niego uwagi. Teraz jest naprawione.
StrongJoshua,

1
Gry zazwyczaj mają wiele tyknięć na sekundę. Może „często”. „Ogólnie”, nie. Gry planszowe lub strategiczne mogą zaznaczać tylko wtedy, gdy użytkownik wykona ruch, zarówno w trybie „iteracji głównej pętli”, jak i w trybie „renderowania”.
Anko,
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.