Alarmy i Timeline

Sobota, 27 Grudnia 2008, 19:59
Czas czytania 2 minuty, 54 sekundy
Zgodne z GM: gm5 gm6 gm7 gm8 gms1 gms2
Paczuszka zawierająca 3 przykłady (w gmk i gm6) oraz opis Alarmów i Time Line'ów, czyli bardzo ważnych i przydatnych funkcji Game Makera.
Alarmy to bardzo przydatne funkcje Game Makera, pozwalają nam wykonać akcję po określonym czasie, przydają się nam w różnych sytuacjach, np. odliczanie do startu, odliczanie czasu przeładowania broni etc.. Oczywiście nie będziemy tutaj operować na sekundach, a na krokach bo to właśnie jednostka czasowa w Game Makerze. Jeśli chcemy operować na sekundach musimy zauważyć pewne prawidłowości:kod1 sekunda = 1 * room_speed;Tak więc 1 sekunda w GM to dokładnie tyle kroków co prędkość rooma ( room_speed ). Jeśli chcemy ustawić alarm na 5 sekund to:kod5 sekund = 5 * room_speed;Tak więc odpowiednio jeśli chcemy stawić na N sekund to:kodN sekund = N * room_speed;I tak dalej. Alarmy inicjujemy w dowolnym evencie:kodalarm[0] = 5 * room_speed; //Ustawia alarm 0 na 5 sekundKod który zostanie wykonany umieszczamy w evencie Alarm N, tutaj odpowiednio w Alarm 0.
Przejrzyj też przykłady, aby zrozumieć zasadę działania alarmów.

Time line'y są trochę podobne do alarmów, lecz w alarmie jest wykonywana jedna akcja po skończeniu odliczenia, a zaś w time line'ach w określonej kolejności może być wykonane wiele akcji w różnych odstępach czasowych. Time line'y są trochę podobne do path'ów, lecz path'e to przejścia między kolejnymi punktami ustawionymi w określonych odstępach odległościowych. Te odstępy można porównać do odstępów czasowych w time line'ach. W path'u obiekt będzie kolejno przechodził przez punkty, zaś w time line będzie odliczał czas między kolejnymi momentami i wykonywał akcje które są do nich przypisane.
Timeline dodajemy w menu Add > Add Time Line.
Timeline'y inicjujemy w dowolnym evencie za pomocą takiego kodu:kodtimeline_index = nazwa_timeline;Pozycję timeline'a zmienia się w taki sposób:kodtimeline_postion = N;Z time line'ami zapoznasz się w przykładach dołączonych do kursu.

Przyjrzyjmy się Timeline'om z bliska, kolejno wykonujemy akcje:
- File > Advenced Mode, włączamy "Advenced Mode" jeśli jeszcze tego nie zrobiliśmy.
- Add > Add Timeline, dodajemy nowy time line.

Pojawi się nowe okno z kilkoma klawiszami:
- Add, dodaje moment na time line, moment wykonany w określonym kroku. Po tym możesz skorzystać z kodu lub klocków, aby ustalić jakie akcje mają zostać wykonane w danym momencie.
- Change, zmienia dany moment na inny.
- Delete, usuwa dany moment.
- Duplicate, duplikuje dany moment.
- Shift, przesuwa wybrane momenty o podaną wartość.
- Merge, łączy wybrane momenty w inny jeden.
- Clear, czyści wszystkie momenty.

Obydwie te funkcje są bardzo przydatne. Coraz więcej pytań, których rozwiązaniem jest wykorzystanie alarmów bądź timeline'nów pojawia się na naszym forum, a przecież one są tak proste!

Wróćmy jeszcze na chwilę do alarmów. Gdy alarm zainicjujemy w evencie Step w taki sposób:kodalarm[0] = room_speed * 20;To NIE zostanie on nigdy wykonany ponieważ licznik będzie ustawiany od nowa co 1 krok. Możemy w takim wypadku użyć warunku if:
kodif( alarm[0] == 0 )
{
alarm[0] = room_speed * 20;
}
Jest to też pokazane w przykładzie 3.

Przykłady do tego kursu znajdziesz tutaj.
Komentarze (łącznie 13):
P
Pental (Sob., 27 Gru. 08, 20:58)
#1

Mało tego niestety, było dać więcej przykładów zastosowań i ciekawostek :P . Jak na początek - ok.

HuderLord (Sob., 27 Gru. 08, 21:50)
#2

Nie napisałeś co trzeba zrobić jak by jakiś newbie dał alarm w step.

P
PsichiX (Sob., 27 Gru. 08, 22:10)
#3

timeline'y mimku ;P

L
Lechu4444 (Sob., 27 Gru. 08, 23:05)
#4

czegoś się tam zawsze dowiedziałem

Paqoo (Sob., 27 Gru. 08, 23:08)
#5

Same podstawy, ale na pewno są tacy którzy tego nie wiedzieli :> I są dwie możliwości używania timingu w grze :D Ładne przykłady.

L
Lechu4444 (Nie., 28 Gru. 08, 00:28)
#6

ha słyszałem że za pomocą timelines da się zrobić loading i myślałem że to tutaj będzie pokazane ale i tak się domyślam jak to teraz zrobić tylko wersja PRO jest potrzebna.

Marmot (Nie., 28 Gru. 08, 01:12)
#7

Taka mała rada ode mnie - treść z PDF mogłeś wkleić na stronę i w pliku dać tylko przykłady. Nie każdemu chce się ściągać artykuł, oraz nie każdy ma akurat Adobe Readera. Poza tym, dałeś sam tekst. Wszystko to można bez problemu wpisać w Panelu Redaktorskim ;) .
A sam artykuł nie jest zły. Przyznam, że trochę Timelines niedokładnie wytłumaczyłeś, bo prawdę mówiąc nigdy ich nie używałem, a po lekturze Twojego artykułu nadal nie rozumiem celu i zasady ich działania.

P
Pental (Nie., 28 Gru. 08, 08:30)
#8

Marmot, timelines to kawałki kodów wykonujące się w podanych przez ciebie odstępach czasowych :P . Coś jak pathy, tylko zamiast odległości (w terenie?) jest odległość czasu, a każdy punkt to wykonywany kod :P . Kumasz?

mimek (Nie., 28 Gru. 08, 13:21)
#9

Dobra Marmot - na twoja prośbę zrobiłem tutaj Arta i przykłady są w paczce, ale poprawi ktoś, żeby to wyglądało ładnie i przejrzyście, bo ja już nie umiem...

Marmot (Wto., 30 Gru. 08, 12:01)
#10

Pental, ;p . Nie musiałeś się wysilać, bo jak coś to bym do dokumentacji zajrzał :P .

baca (Pią., 27 Maj. 11, 17:32)
#11

Jeśli gra zamuli to już ci nie ustali dokładnego czasu.
Można to inaczej zrobić:
W Create:
tstart = current_time;
w Step:
if(current_time- tstart>1000)
{
tstart = current_time;
}

1000 = 1s;
10000 = 10s;

TheMarcQ (Pią., 27 Maj. 11, 19:54)
#12

tylko pytanie: po co?

baca (Pią., 27 Maj. 11, 20:11)
#13

Dużo jest powodów dla których warto ten sposób stosować.

Najnowsze wersje GameMakera:

Stabilna
2023.8.1.102 • 2023.8.1.148
wydana 14 dni temu
LTS
2022.0.1.31 • 2022.0.1.30
wydana 169 dni temu
Beta
2023.800.0.406 • 2023.800.0.429
wydana 30 dni temu
= IDE, = Runtime
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
16 użytkowników online na discordzie:
ACCESS_ViOLATiON, MKP, Carl-bot, PolTomski, staszek09_01, Radek Ignatów, s..., Alkapivo, Pako, LadyLush, sgames, Fylyps, bagno, Dyno, SzymonKe, moeglich
Shoutbox
gnysek (14:59, 28.09.23)
Poszedł dziś update strony :)
Adriann (21:06, 14.08.23)
Jest..hoho:D
Adriann (21:04, 14.08.23)
Nie znam tego, poszukam. Nie mówisz mam nadzieję o tej podmiance wewnątrz skryptu?
gnysek (10:38, 14.08.23)
Przecież jest: Search & Replace. Do tego nazwy skryptów i zasobów akurat Feather podmienia praktycznie bez problemów.
Adriann (14:39, 12.08.23)
Przydałaby się opcja do globalnej zmiany nazwy zmiennejobiektu we wszystkich skryptach i obiektach :D Tak to jest dość ciężko zabrać się za sprzątanie
SimianVirus7 (10:39, 12.08.23)
To nie burdel, to nieład artystyczny
exp (00:35, 12.08.23)
Feather nie zrozumiał, że burdel jest elementarną częścią mojego projektu
exp (00:34, 12.08.23)
Miałem to samo, nie tyle otworzyłem stary projekt, co w końcu ściągnąłem aktualizację (bo olewałem ten komunikat od chyba półtora roku)
gnysek (23:48, 10.08.23)
Kolizje tilesetowe rządzą!
gnysek (20:01, 26.07.23)
zobaczycie nowy edytor kodu, powinen wskoczyć do bety w sierpniu...
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Kiedy wyjdzie GameMaker (Studio) 3.0?