Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 24. červenec 2018, 22:53:57 Předmět: |
|
|
Už je to rychlé (teda asi 30 fps, ne 60) - Explorer, Edge, Firefox, Chrome (všude stejně). _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 26. červenec 2018, 20:39:16 Předmět: |
|
|
Mne to na Firefox na Linuxe beha dobre. Nevidim FPS ale chodi to plynulo. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 19. srpen 2018, 22:06:08 Předmět: |
|
|
Milý deníčku, vývoj stále pokračuje Zatím dělám content - optimalizace spritů jsem ještě neřešil.
Přidáni noví vetřelci:
Chodící alien jenž spawnuje létající alieny:
Kteří vypadají takto:
Bug alien - jenž umí castovat štíty alienům kolem:
Pak snail alien - který má poměrně komplikovanou genezi - původní verze nevypadala příliš vetřelsky:
Ale zásadní problém je pak celkem samozřejmé zjištění, že ty jasné úhly v těch 8 pohledech nefungují v perspektivě - ledaže by se zrušil perspektivní pohled - což jsem zkoušel - nevypadá to hezky + hlavně ostatní sprity pro to nejsou stavěné. Tak jak to je teď mi přijde ok - neboť vzadu budou vždy periferně vidět hordy nepřátel a hráč bude řešit co se děje vepředu.
Proto nový snail:
Jenž když dojde k hitu, tak se v určitých intervalech schová a damage je 0 - a je tak zaměstnána věž co má focus.
DD to nemá žádný - dělám co mě o víkendu napadne - výsledek bude asi trochu "pejsek s kočičkou ...". Ale v akci to celé podle mě vypadá dobře.
Potom několik dalších věcí jako stíny pod alieny, princip skillů atp.
Toť zatím vše. Build aktualizován není - aktualizuju až to bude více optimalizované.
Co se týče 30ti fps - tak zatím počítám s tím, že to takto zůstane zafixované - musel bych dodělat nějaké posuvy rychlosti herní logiky, když někomu nebude stačit fps (na integrovaných kartách) atp - popř. to nechám na konec.
Potom sleduju, že "Alien invasion tower defense" je už bohužel obsazeno - takže to posléze přejmenuju na [NĚCO_A] Alien [NĚCO_B] Tower defense/TD + nějakou landing-page, aby něco začal zaindexoval gůgl. Kdyby vás nějaký nazev napadl klidně pište Z podstaty hry to vůbec nemusí být chytrý. "Alien smash tower defense" .. "Kick alien tower defense" .. cokoliv. Mimochodem pod alien kick jsem našel nostalgickou hru. |
|
Návrat nahoru |
|
 |
satik
Založen: 06. 05. 2010 Příspěvky: 161 Bydliště: Krkonose
|
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 22. srpen 2018, 16:50:23 Předmět: |
|
|
satik napsal: |
v cem to animujes? ty animace jsou husty  |
Díky Animace jsou polo-vynález přes animate tag u svg. Udělám několik frames v inkscape a zbytek je lineární aproximace. V některých případech to funguje až překvapivě dobře - v jiných až překvapivě špatně. Nejde přes to udělat všechno - ale principielně by se to dalo rozšiřovat. Zatím jsem si vystačil s tím co mám. Mám to popř. popsaný na webu (aby se tam alespoň něco indexovalo). |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 26. srpen 2018, 13:25:04 Předmět: |
|
|
Tak si hraju s výkonem a vyrábím buffered sprite komponentu - a vypadá to nadějně.
Zde sprite tester:
http://www.dzejkobgames.eu/alien_td/test.php
2000 klasických spritů (dole vybrat classic sprite a pak T přidá 1000 spritů) už má výkonostní problémy na integrované gf.
Kdežto buffered sprite je celý jeden mesh a je to rychlé - má to teda pomalejší zápis ale výkon znatelně lepší - zvládá to i 20 tis spritů na integrované gf.
Zvládá to transformace a natočení na kameru + vertex colors + změny uv per face - což je vše co potřebuju.
Textury / animace patrně vyřeším přes atlas mapy a změny uv.
EDIT: problém je, že jedna animace se horko těžko vejde na texturu o velikosti max_texture_size - patrně teda bude nezbytný zredukovat rozlišení
když udělám test, že každý sprite má jiný material index - tak to evidentně navýší počet draw calls a blíží se to výkonově zpátky k nativním spritům (ale pořád to je o něco rychlejší - ale ne řádově)
lze to ale rozsegmentovat - že sprity s materiálem 0 jsou na začátku a sprity s materiálem 1 na konci - nicméně to by se muselo nějak sortovat za běhu - nebo to zkombinovat s těma atlas mapama podle toho, co se do textury vejde - a pak ty sprity vytahávat a přesouvat podle toho kterej typ kde je třeba zobrazit - a na pozadí mít třeba 20 meshů se sprity přes atlas mapy posouvanými podle UV
začíná mi to připadat docela složitý
nenapadá vás nějaký jednoduchý řešení? |
|
Návrat nahoru |
|
 |
satik
Založen: 06. 05. 2010 Příspěvky: 161 Bydliště: Krkonose
|
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 26. srpen 2018, 18:31:05 Předmět: |
|
|
dzejkob napsal: |
lze to ale rozsegmentovat - že sprity s materiálem 0 jsou na začátku a sprity s materiálem 1 na konci - nicméně to by se muselo nějak sortovat za běhu - nebo to zkombinovat s těma atlas mapama podle toho, co se do textury vejde - a pak ty sprity vytahávat a přesouvat podle toho kterej typ kde je třeba zobrazit - a na pozadí mít třeba 20 meshů se sprity přes atlas mapy posouvanými podle UV
začíná mi to připadat docela složitý
nenapadá vás nějaký jednoduchý řešení? |
Proč sortovat? Můžeš mít třeba 2D pole [material][sprite] a pak to z toho poskládáš Dá se to vylepšit ještě tak, že si do dalšího 1D pole zapamatuješ použité material indexy a ty pak přeskáčeš, pokud těch materiálů (u tebe textura?) bude hodně.
Nebo prostě přeindexovat ty materiály podle pořadí, jak byly použitě jako primární index do toho 2d pole, možností je spousta.
Pokud ti jde o sorting hloubky, tak pokud použiješ alpha test (=discard), tak to za tebe vyřeší depth buffer. |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 26. srpen 2018, 22:12:08 Předmět: |
|
|
mar napsal: |
Proč sortovat? Můžeš mít třeba 2D pole [material][sprite] a pak to z toho poskládáš Dá se to vylepšit ještě tak, že si do dalšího 1D pole zapamatuješ použité material indexy a ty pak přeskáčeš, pokud těch materiálů (u tebe textura?) bude hodně.
Nebo prostě přeindexovat ty materiály podle pořadí, jak byly použitě jako primární index do toho 2d pole, možností je spousta.
Pokud ti jde o sorting hloubky, tak pokud použiješ alpha test (=discard), tak to za tebe vyřeší depth buffer. |
Noo já pořád žiju v restriktivním světě three.js A ono to poskytuje pouze addGroup(faceIndex, facesCount, materialIndex) - a v tom rozsahu faces to udělá jeden drawCall. Ale opět dobrej postřeh - proč neudělat svůj princip na separování drawcallů - jenom musím upravit patrně renderBufferDirect ve WebGLRenderer.js - dodělat patch
EDIT: no asi to tak jednoduchý nebude - ty pole vertexů to "nějak" sype do toho gl - a tam se to renderuje opět přes gl funkce drawArrays start - count - musel bych toho přepsat hodně + patrně víc rozumět webgl
Nějak to vymyslím - asi se nevyhnu těm atlas mapám a prostě bude několik buffered geometries (pro každou mapu) |
|
Návrat nahoru |
|
 |
mar
Založen: 16. 06. 2012 Příspěvky: 610
|
Zaslal: 26. srpen 2018, 22:40:43 Předmět: |
|
|
dzejkob napsal: |
Noo já pořád žiju v restriktivním světě three.js A ono to poskytuje pouze addGroup(faceIndex, facesCount, materialIndex) - a v tom rozsahu faces to udělá jeden drawCall. |
No však to by ti mohlo stačit, ne? Co ti brání to setřídit ručně a až pak to nasypat do three.js? Ten buffer si totiž stejně vyrábíš sám. |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 26. srpen 2018, 23:44:47 Předmět: |
|
|
No ten buffer se mění ale uvnitř to musí být fixed-length pole - a kompletní aktualizace toho bufferu je pomalá. Přitom potřebuju, aby material indexy šly po sobě a nestřídaly se uvnitř toho bufferu. Co ale jde jsou updaty coordinates. Takže já to můžu sortovat způsobem, že swapnu coordinates spritů a změním material indexy - to si ale nemyslím, že dokážu udělat rychle pro hodně spritů. Podobně nedává smysl udělat nějakej hash material x sprites a pak to sypat do toho bufferu, kterej bude třeba předalokovanej (a ty faces nějak skrytý) - důvod je, že to je javascript - a mám obavu, že to bude taktéž pomalý. |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 16. září 2018, 22:49:13 Předmět: |
|
|
Update:
* vyroben atlas map generátor - současná grafika se vejde do cca 13 map 2048x2048 (prostor pro optimalizaci tam bude). + při použití pngquant se to zredukuje do několika MB
* úspěšně implementovány buffered sprites - funguje to nakonec tak, že tam je mesh per atlasmapu - takže to dělá max 13 drawcallů. Vzhledem k tomu, že předtím těch callů byly tisíce, tak ten performance boost je hodně znát. Přesun spritu z jednoho meshe do druhého to dělá optimálně, že mrtvý sprit posune mimo viewport a vytvoří nový nebo použije jiný mrtvý sprit. Kompletní rebuild těch meshů to dělá v okamžicích, kdy se nic neděje.
* loop herní logiky je už plynulý - problém byl v tom, že setTimeout negarantuje přesné msec - teď to bere v potaz náročnost každého cyklu i ty nepřesnosti - takže se to drží na 30 fps (předtím to mohlo být tak 25 - v závislosti na dost jiných aspektech).
* beam z pušek jede přes PointCloud + ShaderMaterial - tj. je to rychlejší
* herní plocha se renderuje do WebGLRenderTarget - takže stínečky opisují geometrii terénu + přidány cákance krve (+ prostor pro další efekty) - vypadá to dobře
* další drobnosti a bugfixy
Dalo to dost práce - přitom výsledek je víceméně pořád tamtéž. Běhá to ale už slušně i na 7 let starém přehřívajícím se notebooku s intel-hd.
Nicméně už můžu zase pokračovat v dělání contentu a herní logiky.
(aktuální build ještě není) |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 15. říjen 2018, 21:55:52 Předmět: |
|
|
Hratelný aktuální build již BRZY
Zatím update:
* lehce pokročilejší hud-system
* s tím související pokročilejší a intuitivnější ovládání hry - lze klikem focusnout přímo na věž (možnost upgradů) nebo na vetřelce (health + stats a ability)
* základy upgrade systému - několik upgradů nastaveno (ale ještě to není vůbec domyšlené)
* notifikátor upcoming waves - zobrazí se kolik kterých monster za jak dlouho vyběhne (prostě podobné jako v jiných TD)
* nová věž - vojáček s pistolí
* udělána první verze startup-menu - tj. logika + grafika (slovo "invasion" bude posléze nahrazeno - neboť název je obsazen)
* kromě cákanců krve na zemi ještě beam, který se objeví u splash damage (což demonstruje splash range - který se posléze bude upgradovat)
* dost drobných detailů co se týče herní logiky
... zatím vše. Je to náročné a jde to pomalu  |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 15. říjen 2018, 21:57:17 Předmět: |
|
|
Ještě pár screenshotů:
 |
|
Návrat nahoru |
|
 |
dzejkob
Založen: 17. 08. 2013 Příspěvky: 132
|
Zaslal: 22. říjen 2018, 00:05:48 Předmět: |
|
|
Tak je to tady Dal jsem dokupy aktuální build:
http://www.dzejkobgames.eu/alien_td/game2.php
Je to už relativně ucelené - dá se odehrát jeden level, který lze prohrát nebo vyhrát (prohrát se to vlastně skoro nedá).
Do finální verze to je stále dost daleko. Chybí hodně contentu + vybalancování.
Předem díky za jakékoliv postřehy, nápady apod (pokud nějaké budou). |
|
Návrat nahoru |
|
 |
|