Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 7. květen 2021, 11:22:24 Předmět: RTS revival |
|
|
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:
![](http://www.dzejkobgames.eu/shots/rts/shot2.png) |
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
Spytihněv
![](images/avatars/547187017640e17dedf8a3.gif)
Založen: 05. 04. 2011 Příspěvky: 546 Bydliště: Praha
|
Zaslal: 7. květen 2021, 21:38:06 Předmět: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 7. květen 2021, 22:10:47 Předmět: |
|
|
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 )
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 |
|
![](templates/subSilver/images/spacer.gif) |
Spytihněv
![](images/avatars/547187017640e17dedf8a3.gif)
Založen: 05. 04. 2011 Příspěvky: 546 Bydliště: Praha
|
Zaslal: 8. květen 2021, 17:08:33 Předmět: |
|
|
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](images/smiles/icon_cool.gif) |
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
mar
Založen: 16. 06. 2012 Příspěvky: 607
|
Zaslal: 12. květen 2021, 01:47:39 Předmět: |
|
|
obligátní otázka - bude demo? 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
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 |
|
![](templates/subSilver/images/spacer.gif) |
Spytihněv
![](images/avatars/547187017640e17dedf8a3.gif)
Založen: 05. 04. 2011 Příspěvky: 546 Bydliště: Praha
|
Zaslal: 12. květen 2021, 14:15:42 Předmět: |
|
|
mar napsal: |
starý český klon, co jsem už zapomněl, jak se jmenoval ![Smile](images/smiles/icon_smile.gif) |
Paranoia II - srdcovka ![Cool](images/smiles/icon_cool.gif) |
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 13. květen 2021, 13:45:04 Předmět: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
abuki
![](images/avatars/281637399547efd3f0276f.png)
Založen: 31. 07. 2012 Příspěvky: 507 Bydliště: Praha
|
Zaslal: 18. květen 2021, 14:30:19 Předmět: |
|
|
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](images/smiles/icon_smile.gif) _________________ Twitter @abukac
www.amanita-design.net
www.circusatos.com |
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
Spytihněv
![](images/avatars/547187017640e17dedf8a3.gif)
Založen: 05. 04. 2011 Příspěvky: 546 Bydliště: Praha
|
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 28. listopad 2021, 21:20:40 Předmět: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 11. březen 2022, 18:42:22 Předmět: |
|
|
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 |
|
![](templates/subSilver/images/spacer.gif) |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 24. září 2022, 22:56:31 Předmět: |
|
|
milý mrtvý deníčku UPDATE:
Projekt byl odevzdán jako bap a získal A+A. Přes léto jsem si s tím občas hrál a udělal některé úpravy (vynechávám dodělání do bap):
- kompletně překopán pathfinding - má to volné pozicování a separation, cohesion atd. - jako vždy to není úplně ideál, ale co se týče hratelnosti, tak to je velký krok vpřed
- jednotky podporují push forces - tj. střela může posunout nepřátelskou jednotku, která posune okolní jednotky atd.
- efekty, střely, detaily atd atd ...
- dalo hodně práce překopat původní gridový pathfinding od základu včetně všech detailů. Ve finále to ani nepoužívá klasický vector-field, ale dělá to jakousi distribuci vektorů z A* algoritmu do okolních políček s nějakým průměrováním (ve výsledku pak jednotky nejezdí striktně v 8-směrech)
Od odevzdání je hra dá se říct skutečně hratelná - je tam podpora slušného AI, se kterým se dá opravdu hrát a není to úplně snadné (podporuje to něco jako skirmish v rts hrách). Problém je, že mechaniky hry jsou triviální a je tam velký prostor ke zlepšení.
Jakou to má budoucnost nevím - asi nijakou zázračnou - v nějakém bodě se na to už chci vykašlat. Nicméně baví mě to vyvíjet. Největší nepřítel je python - pokud se mi podaří zoptimalizovat pythonní objekty do cythonu, tak tomu ještě nějaký čas asi dám.
Brzo snad udělám nějaké demo.
Nové video tady: https://www.youtube.com/watch?v=dotI3im3WK0 |
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
mar
Založen: 16. 06. 2012 Příspěvky: 607
|
Zaslal: 25. září 2022, 07:47:11 Předmět: |
|
|
wow, tak to je naprostá paráda - plnohodnotné hotové RTS, gratuluji.
na demo se těším.
na steamu pořád ještě frčí retro FPS, tak proč by nemohly retro RTS. třeba se chytí - kdyby se podařilo to nějak zpromovat. |
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 130
|
Zaslal: 25. září 2022, 11:52:46 Předmět: |
|
|
No plnohodnotné to úplně není - je tam 5 budov + 2 věže a 5-6 jednotek pro každou stranu přičemž ta ekonomika báze je zatím strašně triviální (ala c&c zatím bez energie). Vydání plnohodnotné retro rts by muselo předcházet tak rok výroby obsahu.
Každopádně doladím balancing jednotek + další detaily a hodím sem demo na vyzkoušení - resp. hru v aktuální podobě. Ohlasy na to mám docela dobré. |
|
Návrat nahoru |
|
![](templates/subSilver/images/spacer.gif) |
|