Geek tričko zdarma Python týden
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python
Avatar
Karak Dalík
Člen
Avatar
Karak Dalík:22.1.2017 18:19

Nazdar
Pracuji na old-school střílečce, potřeboval bych pomoct s její optimalizací.
Děsně se to seká. Důvodem lagů jsou o sebe třoucí enemácí, používám pro jejich pohyb mp_potential_step(Pla­yer.x,Player.y,7,tru­e),je jich tam vcelku velké mno
žství, mají vlastnost solid a hráč taky. No neví někdo co s tím?

Já vím, snažit se mi poradit je jako věštit z křišťálové koule, přiložil bych sem soubory, ale nevím jak :(

 
Odpovědět 22.1.2017 18:19
Avatar
David Šercl
Člen
Avatar
David Šercl:23.1.2017 10:29

Ahoj, musíš být trochu přesnější nebo sem vložit část kódu, kterého se ten problém týká. Opravdu na vložení zdrojáku nic není, stejně by to asi celý nikdo louskat nechtěl, jen si dát trochu práce :-)
Jinak si nejsem jist v čem je přesně problém, protože píše, že lagy zřejmě vznikají při kolizi s objekty. To může být problémů více, fakt musíš být přesnější. Např. pohyb je generován náhodně nebo podle nějakého vzorce, co objekty dělají když kolidují, docela by mě i zajímalo kolik tam těch objektů máš (10,100,1000??). A obecně platí pokud chceš s něčím pomoci ZADARMO, tak jsem vložím co nejvíce informací, protože my ti do hlavy nevidíme :-D

 
Nahoru Odpovědět  +1 23.1.2017 10:29
Avatar
Karak Dalík
Člen
Avatar
Karak Dalík:23.1.2017 17:37

Aha, rozumím.
Je jich tam 14,pohybují k hráčské postavě, pokud skolidují nedělají nic ve Stepu mají tento kód

//pohyb k hráči
mp_potential_step(Pla­yer.x,Player.y,7,tru­e)

tedy pohybujíé se směrem k hráči, nejsou tam žádné jiné objekty s vlastností solid,
No, doufám že to stačí.

jinak v průběhu hraní nedělají nic

 
Nahoru Odpovědět 23.1.2017 17:37
Avatar
David Šercl
Člen
Avatar
David Šercl:24.1.2017 10:19

Jsem z toho trochu zmaten. Píšeš, že se to kouše když se o sebe enemáci třou (což znamená, že kolidují) a teďka zase, že když kolidují tak nic.
Z toho co píšeš se jedná o klasický CHASE(pronásle­dování určitého objektu, v tvém případě hráče), což je opravdu začátečnická věc.
Předpokládám, že mluvíme o 2D hře, když jde o střílečku. Toho kódu jsi sem moc nevložil, navíc píšeš, že tě zajímají jen SOLID objekty a v příkazu:

mp_potential_step(Player.x,Player.y,7,true) //pohyb k přesně určeným souřadnicím s rychlostí 7

máš poslední hodnotu nastavenou na "TRUE", což znamená, že koliduje se všemi instancemi. Měl jsi jí nastavit na hodnotu "FALSE" pokud ti jde jen o solid, stačí mrknout do nápovědy.
Vložím ti sem jak bych udělal jednoduché pronásledování:

if distance_to_object(obj_player)<128{
        pohyb_x=obj_player.x;
        pohyb_y=obj_player.y;
}else{
        pohyb_x=x;
        pohyb_y=y;
}
if !position_meeting(pohyb_x,pohyb_y){
        mp_potential_step(pohyb_x,pohyb_y,7,false);
}else{
        speed=0;
}

To je jen základ pronáslednování od určité vzdálenosti, neřeším tu rotace, náhodný pohyb..atd

Editováno 24.1.2017 10:22
 
Nahoru Odpovědět 24.1.2017 10:19
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Karak Dalík
TomBen:24.1.2017 15:24

Ještě pro jistotu doplním, že pokud se sem nedá link na vyexportovaný projekt, je jakákoli pomoc účinná jen částečně. Hra se může sekat z více důvodů ( například přehnaně velké sprites, memory leaky, opakované cyklické procházení instancí, atd. ), což je pak právě ono věštění z křišťálové koule. Zbytečně.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 24.1.2017 15:24
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Karak Dalík
Člen
Avatar
Karak Dalík:24.1.2017 20:22

Děkují vám oběma, ale TomBenovi více, měl jsem moc velké spirity.

A nechtěl by jste ji někdo otestovat? Je to zatím jen prakticky jen kostra, ale funkční a hratelná.
Moc ocení každou radu.

https://uloz.to/…gun-game-exe

 
Nahoru Odpovědět 24.1.2017 20:22
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Karak Dalík
TomBen:24.1.2017 22:44

Jako cvičení v programování je to v pohodě, ale jako hra to moc díru do světa asi neudělá. Chtělo by to originální nápady. Něco nového.

Nahoru Odpovědět 24.1.2017 22:44
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Karak Dalík
Člen
Avatar
Karak Dalík:25.1.2017 18:46

Já nechci dělat díru do světa, já chci jen něco naprogramovat :)

 
Nahoru Odpovědět  +1 25.1.2017 18:46
Avatar
David Šercl
Člen
Avatar
Odpovídá na Karak Dalík
David Šercl:30.1.2017 9:54

Koukám, že si tu plácám játra, grat. Tomíku, mno neva. Co se týče toho projektu tak nevím o co tam jde, tedy pokud ti jde jen střílení těch koleček, ale jestli to bereš jen jako pokus programování, tak je to OK. Jen tak dál :)

 
Nahoru Odpovědět 30.1.2017 9:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.