Pravidla Ucet
Nepřihlášen

Článek

Menu

Replay 1.díl-zapsání a zopakování
Napsal: Kešu
Přidáno: 27.01. 2011

Jak udělat záznam hraní - tzv.replay? Neuvěřitelně snadno! Sledujte seriál, začneme základním zapsáním a zopakováním cesty.V prvním díle budeme se naučíme zapsat a zopakovat cestu hráče.


Nejdůležitější je, umět zapsat vaší cestu při hraní.
Pro příklad si vytvoříme dva objekty :

obj_hrac - Za toho hrajete, zapisuje cestu.
obj_replay - přehraje replay
Bude to fungovat tak, že budete pohybovat hračem a v replayi počítač váš pohyb zopakuje.
Celá finta je v podtatě v zapsání x a y v určitý čas do proměnné.
K tomu budeou sloužit dvě proměnné s polem.
obj_hrac :
Create :
global.cas=0; //určuje "čas" každého pohybu
global.xx[global.cas]=0; //x v určitý čas
global.yy[global.cas]=0; //y v určitý čas

Step :
x=mouse_x;
y=mouse_y; //pohyb objektu, nyní slouží pro příklad
global.xx[global.cas]=x; //samotné zapisování aktuální pozice x do proměnné
global.yy[global.cas]=y;//samotné zapisování aktuální pozice y do proměnné
global.cas+=1; //pokaždé přičte "jednotku času"
//// po stisku mezerníku se hráč změní v objekt, který pohyb zopakuje
if (keyboard_check_pressed(vk_space))
instance_change(obj_replay,1);

global.cas bude sloužt zároveň jako hranice času při opakování.
obj_replay :
Create :
rcas=0;//čas při opakování pohybu

Draw :
draw_sprite(obrazekhrace,0,global.xx[rcas],global.yy[rcas]);//vykreslíme obrázek hráče na určité pozici v určitý čas
rcas+=1;//přičteme jednotku času
if (rcas==global.cas)
instance_change(obj_hrac,1);
//pokud dosáhneme maximálního času pohybu (prostě ke konci replaye), tak se změníme znovu na hráče


Nyní už umíme zapsat a zopakovat cestu, toto sloužilo pouze pro přiklad, vytvářet jednoduchou hru s replayem (a to nejen s opakováním cesty) začneme příště.
Stáhni příklad
Ostatní díly seriálu:
Klíčová slova: replay záznam cesta Kešu
 

Komentáře:

Napsal: Kešu
Přidáno: 24.05. 2011

Sorry, že zatím nebyly další díly, určitě je udělám. :)

Trvalý odkaz

Napsal: NicharCZ
Přidáno: 16.05. 2011

Ano, šlo :) Ale zatím nevím jak. Při trošce času to zkusím. Podle mě, jak přičítáš jednotku času rcas+=1 to změnit na rcas+=0.5 - Bude se to nahrávat pomaleji => pomaleji se to i přehraje.. Snad by to tak šlo..

Trvalý odkaz

Napsal: akxe
Přidáno: 16.05. 2011

a šlo by to aby se při replay pohyboval pomaleji? treba: speed=3

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 21.02. 2011

Jako myslíš hru každej step ukládat? To je podle mě nesmysl: 1)game_save(...) ukládá snad šechno až na surfacy atd. tj. mnohem víc dat. 2)tím prostě načteš tu hru, takže by se ti pustila hra přesně v tu chvíli, co se udělal snímek. Asi těžko můžeš nahrávat každej step jinou hru, protože to nahrátí ti přeruší všechny nahrávací kódy = bude to podstatně těžší. (možná tak ukládat číslo dalšího snímku do ini, nebo podobnou šílenost, prostě blbej nápad...)

Trvalý odkaz

Napsal: amateur
Přidáno: 21.02. 2011

Musím souhlasit s náročností. Já si představuju závodní hru s osmi auty na čtyři kola. To je 3*8 zápisů na snímek (3proměnné, x,y, direction, krát počet aut). Jestliže by objětí kola trvalo sedm vteřín, při RS 25 to máme 3*7*8*25 což je 4200 zápisů...na jedno kolo. Krát 4 to máme nových 16800 globálních proměnných. To je opravdu dost.

Ale na druhou stranu mě nic lepšího nenapadá.....napadlo mě udělat replay pomoci funkce game_save, ale to by bylo ještě náročnější (i když asi jednodušší).

Trvalý odkaz

Napsal: Kyller
Přidáno: 09.02. 2011

to de líp udělat do texťáku a dělat to přes něj

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 29.01. 2011

V poho :). Ale příště sem radši prostě Blue ;). Jinak sem zvědavej, jak se ti povede pokračování, keep going ;)

Trvalý odkaz

Napsal: Kešu
Přidáno: 29.01. 2011

Tak to je pochopitelný :D.

Trvalý odkaz

Napsal: Peeter
Přidáno: 29.01. 2011

Aha, omlouvám se, četl jsem to chvilku po tom, co jsem vstal :D

Trvalý odkaz

Napsal: Kešu
Přidáno: 29.01. 2011

DDL, tvoje přezdívka způsobuje chaos!

Příště v dílu budem stavět replay na nějakym GM examplu ještě nevim, jakej zvolit.Mám hotový ukládání a nahrávání záznamů, ukládaj se do texťáku, akorát s jinou příponou.Ale dá se to otevřít normálně v poznámkáči.

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 29.01. 2011

O dll nikdo nemluvil, on mluvil na me ;)

Trvalý odkaz

Napsal: Peeter
Přidáno: 29.01. 2011

DLL? Na co probůh? Stačí ti interní funkce GML. Vím to ze zkušenosti, protože v CP jsme si udělali před nějakou chvilkou něco podobného. Zapisuju každý step a hra se nelaguje, akorát trošku chroustá disk.

Trvalý odkaz

Napsal: Kešu
Přidáno: 28.01. 2011

DDL, zapisování do texťáků už mám doma hotový, dokonce i následní čtení.Počkám, až bude tenhle díl "mimo" vypsaný články a uveřejním další.

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 27.01. 2011

Samozřejmě nějakej krátkej úsek hry nebude problém, ale až budeš zaznamenávat celou hru, bude to dost HC :D Ale můžeš to nastavit třeba na 100stepů a pak to prostě dycky v těch polích posouvat. Ale zase to bude o jednu smyčku, která se bude opakovat 100x víc, takže zase nic moc na výkon...

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 27.01. 2011

Hezkej tut, ale dovedeš si představit, co to bude zabírat ramky O_o? Radši bych doporučoval to průběžně zapisovat do texťáků. Třeba každejch 2-5 stepů zavolat z nějakýho objektu skript, kterej zapíše všechny objekty, který nás budou zajímat do texťáku(x,y,rotace,obrázek atd atd atd) a při přehrávání to prostě čet z toho souboru ;).

Trvalý odkaz

Velkej Chytrák
Copyright (c) 2001-2010