.[ ČeskéHry.cz ].
RTS revival

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Inkubátor
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
dzejkob



Založen: 17. 08. 2013
Příspěvky: 106

PříspěvekZaslal: 7. květen 2021, 11:22:24    Předmět: RTS revival Odpovědět s citátem

Jenom abych byl členem klubu "máme rozpracováno více nedodělanejch věcí", tak sem dávám mezivýsledek mé overkill semestrálky mého věčného studia.

Je to RTS v pythonu + pygletu. Grafika je použita z mého prehistorického projektu. Trochu jsou upraveny jednotky tanků + nakresleny nové budovy. Prostředí mapy zůstalo původní - hnusné.

Asi to není nijak zvlášť zajímavé - navíc hra toho moc nenabízí, jsou jen tři budovy a strategie v tom vlastně moc není (i když snaha o vybalancování jednotek tam je). Zda v tom budu pokračovat nevím - ale má to nespornou výhodu, že grafika se tvoří poměrně snadno.

V původní hře ještě byli foot troopers - cíl by byl asi do toho dát trochu víc contentu, nějaké upgrades a lepší dynamiku.

Videa:

https://www.youtube.com/watch?v=6QvlCAgPpHI
https://www.youtube.com/watch?v=UUvsXuIcTnA

Screenshoty:


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Spytihněv



Založen: 05. 04. 2011
Příspěvky: 524
Bydliště: Praha

PříspěvekZaslal: 7. květen 2021, 21:38:06    Předmět: Odpovědět s citátem

Mně se to líbí, takový typ RTS jsem si vždycky chtěl zkusit udělat (a stále to mám v ToDo).
Pohyb jednotek vypadá hodně dobře, rád bych to vyzkoušel (pokud to jde ovládat).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dzejkob



Založen: 17. 08. 2013
Příspěvky: 106

PříspěvekZaslal: 7. květen 2021, 22:10:47    Předmět: Odpovědět s citátem

Tyjo díky za reakci ... bohužel ta hra je docela o ničem a dost zásadních problémů mi je zřejmých - jako nejzásadnější spatřuju tu přímočarou grid mapu - pokud by někdo chtěl dělat RTS, tak odlaďte nějakej lepší mechanismus ovládání - že jednotky jezděj po čtverečcích je prostě na prd a nedá se to reálně hrát - když člověk pozoruje novej starcraft (kterej je už vlastně starej) nebo vybavuju hru they are the billions, tak je prostě důležitý smooth ovládání a mikrování jednotek - nebo prostě aby se to chovalo hezky.

Já to vlastně dělám jenom, že mám k tý hře a grafice nostalickej vztah, že jsem to programoval před 15ti lety a místo učení se dějepisu a češtiny jsem matlal něco v c++ a finální výsledek padal snad už i při kompilaci (bez syntax error) ale na starym celeronu to furt občas prošlo Smile)

Jako chtěl bych někde nechat nějakej finál ke stažení a k zahrání - nějakou práci na tom asi ještě někdy udělám, ale zázrak to nebude a kdybych reálně chtěl dělat rts tak to bude na dýl ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Spytihněv



Založen: 05. 04. 2011
Příspěvky: 524
Bydliště: Praha

PříspěvekZaslal: 8. květen 2021, 17:08:33    Předmět: Odpovědět s citátem

Staré RTS taky používaly mřížku a hrálo se to dobře (krom jasných výjimek jako je zarovnaná skupina 3x3, kde prostřední nemůže vylézt). Navíc tvoje jednotky dělají různé oblouky a brzdí před cílem, podle mě fajn. Cool
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 570

PříspěvekZaslal: 12. květen 2021, 01:47:39    Předmět: Odpovědět s citátem

obligátní otázka - bude demo? Smile totéž pro alien tower defense, ale nechce se mi zase čekat měsíce na odpověď.

mně se to taky líbí, nedávno jsem hrál starou Dunu 2 a vzpomněl jsem si i na ten starý český klon, co jsem už zapomněl, jak se jmenoval Smile

citace:
jako nejzásadnější spatřuju tu přímočarou grid mapu

jak to myslíš? souhlasím se Spytihněvem, že ten pohyb je fakt pěkný.

dají se dělat jednoduché triky, jak to zlepšit - např. naplánuješ na gridu, pak se to dá pročistit, abys dostal waypointy, po kterých se dá pohybovat

tzn. např. děláš DDA (=v podstatě raycast) do dalších bodů cesty a dokud nehitneš překážku, můžeš to zahodit body mezi nimi. totéž pak můžeš zkusit odzadu pro ještě lepší výsledek. není to dokonalé, ale výsledky jsou docela dobré.



tady je ukázka z mého starého prototypu

legenda: cesta ze středu spirály do levého horního rohu, tmavě červené jsou tily, co lezly přes prioritní frontu (JPS) a bledě modré čtverečky a čáry jsou výsledná vyfiltrovaná cesta

pokud nepotřebuješ různé typy terénů, kde řekněme penalizuješ nějaký materiál a dá se to rozhodit pouze na 1-bit průchozí/neprůchozí pro nějaký typ pohybu, tak se dá použít jump point search (viz výš), který masivně zredukuje počet cellů, které jsou potřeba reálně prolézt

a nakonec - seznam waypointů je skladnější a dá se použít pro další triky ke zjemnění pohybu

samozřejmě na začátku se dá zkusit DDA start-cíl a pokud nehitneš překážku, není třeba ani řešit A*, ale to je asi celkem zjevné
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Spytihněv



Založen: 05. 04. 2011
Příspěvky: 524
Bydliště: Praha

PříspěvekZaslal: 12. květen 2021, 14:15:42    Předmět: Odpovědět s citátem

mar napsal:
starý český klon, co jsem už zapomněl, jak se jmenoval Smile


Paranoia II - srdcovka Cool
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dzejkob



Založen: 17. 08. 2013
Příspěvky: 106

PříspěvekZaslal: 13. květen 2021, 13:45:04    Předmět: Odpovědět s citátem

No myslím, že tohle bude spíš prostě někdy k dispozici na githubu.

Co se týče toho pohybu, já mám na mysli trochu jiné detaily. Něco v tom smyslu té optimalizace cest mě napadlo, nicméně už jsem to nestihnul.

Nadhodil bych trochu větší zamyšlení:

- C&C 1 používá grid a má akceleraci a bržďení a naoko to vypadá dobře, ale podle mě se to hůř hraje, protože ty jednotky se v akci víceméně zamotají a musejí vždy dojet doprostřed čtverečku a čekat na zrychlení / brždění. Ve finále ta hra je pak vesměs o tom "vyrob jednotky a pošli to na nepřítele" - což neříkám, že nikdo nehraje chytřejc, ale to ovládání jednotek v akci je omezené

- C&C 2 (red alert) to je asi stejné, ale lze si všimnout, že se akcelerace tolik neřeší a má to i na tom gridu ve výsledku lepší hratelnost, protože se to chová předvídatelně (+ mají nějak lépe vyřešen pohyb více tanků)

- no a pak Starcraft (nevím zda 1, ale 2 určitě), nebo i AOE 2 už gridy nejsou. Nebo jako jsou, ale jednotky na nich bezprostředně neoperují - mohou se zastavit kdykoliv na místě a jednotky se dají flexibilně ovládat i třeba s pomocí klávesnice: attack / stop / stand ground atp.

No a ty hry s volným pohybem mají úspěch. Kdežto na čtverečkové strategie se zapomenulo. Nebo teda ne úplně, ale ovládá se to prostě blbě.

Aby ta strategie mohla (podle mě) mít nějaký potenciál, tak to musel být kompletně vektorovej prostor a tank může zastavit kdekoliv na souřadnici x, y.

Ten pathfinding v tom případě může bejt vlastně podobnej a tu mřížku nějak dopočítat podle spíše průchozích / spíše neproůchozích míst a pak to nějak optimalizovat spojováním těch bodů.

Na zvážení třeba i je to dělat trochu jinak - protože v tý hře takový komplexní bludiště nikdy nebudou.

Nicméně oříšek je interakce hromady jednotek mezi sebou - a nad tím jsem vůbec nepřemýšlel (v případě toho volného pozicování). Asi by to fungovalo podobně, že tank zasahuje do několika čtverečků v mřížce a pak uvnitř toho bude nějaká analytická geometrie - ale chtělo by to dobře promyslet.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
abuki



Založen: 31. 07. 2012
Příspěvky: 507
Bydliště: Praha

PříspěvekZaslal: 18. květen 2021, 14:30:19    Předmět: Odpovědět s citátem

Spytihněv napsal:
Mně se to líbí, takový typ RTS jsem si vždycky chtěl zkusit udělat (a stále to mám v ToDo).


OT: Bojim se zeptat, co bude tématem Smile
_________________
Twitter @abukac
www.amanita-design.net
www.circusatos.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
dzejkob



Založen: 17. 08. 2013
Příspěvky: 106

PříspěvekZaslal: 22. červen 2021, 02:36:41    Předmět: Odpovědět s citátem

Milý deníčku, UPDATE:

- smooth fog pomocí shaderu - dalo mi teda dost práce do toho pygletu nacpat vlastní shadery + nějaké rozumné rozložení barev / alphy v quadu pomohl tento článek: https://asawicki.info/news_1721_how_to_correctly_interpolate_vertex_attributes_on_a_parallelogram_using_modern_gpus

- podpora jednotek různých velikostí - konkrétně 1x1 pro foot troopers a 2x2 pro tanky

- foot troopers obecně

- řešení některých pathing problémů - skupiny více jednotek se zvládnou pohybovat relativně ok, ale má to rezervy

- ground efekty pro stopy jezdících jednotek

- particle efekty - světla, kulomety, paprsky

- detaily, detaily, detaily ...

Video:
https://www.youtube.com/watch?v=AVgc6cKqQmc
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Spytihněv



Založen: 05. 04. 2011
Příspěvky: 524
Bydliště: Praha

PříspěvekZaslal: 23. červen 2021, 21:53:03    Předmět: Odpovědět s citátem

Arrow https://careers.blizzard.com/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dzejkob



Založen: 17. 08. 2013
Příspěvky: 106

PříspěvekZaslal: 28. listopad 2021, 21:20:40    Předmět: Odpovědět s citátem

UPDATE:

Nakonec z celé téhle věci budu dělat bakalářku - dá se na tom demonstrovat dost zajímavých algoritmů a principů. Momentálně hotovo:

- překopání dost věcí na podporu multiplayeru. Idea je taková, že herní svět je striktně deterministický a synchronizuje se především fronta instrukcí jednotlivých hráčů. "Kupodivu" to už někoho napadlo dávno - stejným způsobem jsou vyrobeny age of empires 1-4 viz.: https://www.gamedeveloper.com/programming/1500-archers-on-a-28-8-network-programming-in-age-of-empires-and-beyond

- přeorána hromada věcí, aby hra fungovala v diskrétním stavovém prostoru. Nespoléhá to ani na floaty - i když jsou v principu deterministické, tak jejich implementace na různých strojích nemusí být. Než abych řešil, jak zajistit, aby na floaty bylo spoleh, tak prostě hra funguje v zásadě tak, že aby tank dojel o jedno políčko vpřed, tak spotřebuje např. 15 ticks a samotný pohyb se aproximuje na těch 15 ticks. Totéž otáčení, střely apod. Pro to otáčení to má mapu něco jako "diskrétních úhlů" - kde si to udržuje 2d tabulku pozic a pevně definované úlhy v nějakých jednotkách (stupně v celých číslech bohatě stačí).

- client server mechanismus, pro zakládání her, přenos fronty instrukcí atd.

- vyhozena gui knihovna glooey (je extrémně pomalá) a vytvořena jednoduchá vlastní (stačí pár základních prvků)

- vyřešeny snad skoro všechny out of the sync problémy - typicky to jsou unordered sety nebo unordered cokoliv. Nicméně když už to vypadalo, že to jede na 100%, tak jsem zas nějaký sync problém objevil - dá se to lehce ladit přes snapshoty stavů, které v debug módu klienti posílají na server - ale je to docela peklo, viz ten článek

- přidáno několik dalších trooper jednotek

- další detaily

Video devlog #2: https://youtu.be/zd2wKRdTFEs
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
dzejkob



Založen: 17. 08. 2013
Příspěvky: 106

PříspěvekZaslal: 11. březen 2022, 18:42:22    Předmět: Odpovědět s citátem

UPDATE:

- lepší textury mapy a mechanismus prolnutí jednotlivých kombinací textur (je to škaredě hranaté, ale to už vylepšit asi nestihnu) + hezčí a živější objekty stromů

- lepší generátor map na bázi jednoduché geometrie a jednoduchého celulárního automatu

- mechanismy stavby báze a upgradů + budova laboratoře

- minimapa

- pathfinding pomocí vektorového pole. Tady byl dost zásek a výsledek není ideální - neboť to je stále striktně omezeno na čtvercový grid. Výkon se nicméně efektivně rozkládá (posun např. 200 jednotek přes celou mapu se rozloží na několik iterací)

- optimalizováno pomocí Cythonu - což mimochodem naznačuje, jaký nesmysl vlastně je programovat hru v Pythonu. Dílčí věci, jako cykly apod. se optimalizují krásně. Nicméně celý objektový přístup optimalizaci dost podkopává a naráží to na limity (nejde snadno ukládat reference na pythonní objekty a pracovat s tím). Celkové zrychlení dílčích částí může být někde 2x a někde třeba 10x nicméně někde to vlastně vůbec nejde (nebo by to znamenalo kompletní přepsání). Inklinuje to k tomu, to přepsat do cythonu celé, což už dost výhody pythonu smazává. Ten generovaný céčkový zdroják je potom neuvěřitelné peklo. Teoreticky pokud člověk zná python a cython a ví, co dělá, tak to možná může dávat smysl - ale lepší to nedělat. Python na vývoj her není. Alespoň ne těch v reálném čase.

- diskrétní prostor vyřešen jinak - používají se násobky celých čísel s celočíselným dělením + diskrétní odmocninu + číselné mapy sinus, cosinus (i reverzně) + celočíselné úhly

- obarvování jednotek stran pomocí masek

- nová obléhací jednotka druhé strany

- doděláno gui - selectboxy, checkboxy, nastavení nové hry, menu nastavení atd.

- odladěny a opraveny synchronizační chyby - první testy multiplayeru dvou fyzických hráčů

Video devlog #3: https://www.youtube.com/watch?v=sOHYhVu_5iE
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Inkubátor Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna