Diskuze: Java - interaktivní přepínače ve hře
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 5 zpráv z 5.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Neviem, v čom tú hru vytváraš a teda aké máš možnosti a aké postupy musíš využívať, ale ja keď som dávnejšie robil jednu svoju podobnú hru v Unity, tak som si vytvoril jednu triedu (napr. 'Usable'), ktorá v mojom prípade implementovala rozhranie Interactible, aby s ňou vedel hráč interagovať + nejakú základnú logiku, užitočné helpery atď. (btw nezameriavaj sa až tak na moju konkrétnu implementáciu, len na myšlienku).
Inštancie Usable držali kolekciu objektov, ktorých typ bol odvodený od nejakej ďalšej mojej triedy (napr. 'UsableStrategy', namiesto triedy môžeš ofc použiť rozhranie, čo ti už vyhovuje viac). Každý potomok tej Strategy triedy potom robil pri zavolaní zdedenej spoločnej metódy (alebo spustení eventu, it's up to you) nejakú jednu svoju vec - napr. ParticleUsableStrategy by prepínal k sebe priradený particle effect, AnimationU.S. by spúštal k sebe priradenú animáciu atď.
V praxi boli potom inštancie potomkov Strategy vytvorené na herných objektoch, ktoré manipulovali (napr. stena, dvere, mína, svetlo…) a skript Usable bol na objekte, ktorý interakciu spúšťal (páčka, tlačidlo a pod.). K Usable som potom len nalinkoval tie Strategy skripty, ktoré som chcel a Usable ich pri interakcii spustil.
Keď bolo napísaných dosť konkrétnych stratégií a boli napísané dobre
a univerzálne, vytváranie takýchto interactible objektov, udalostí a scén
bolo fakt ako skladanie lega v editore 
Píšu to jen čistě v Javě, bez frameworků apod.
Nějak podobně jsem uvažoval taky. Každý LVL je jako třída a v metodě init vytváří celou scénu. Ta pak drží mimo jiné jak kolekci všech postav(nepřátel), tak taky kolekci těch ovladačů vše jako potomek od Entity. Jelikož jde o 2D hru, tak mapa je uložená jen jako dvourozměrné pole "políček", každé z políček má vlastnosti ukazatel na texturu a průchodnost (0/1).
Můj hlavní problém je v tom, že mám nějak mezery ve vzdělání ohledně toho, jak syntakticky provést to propojení, a definování akce(funkce) přímo k té dané instanci.
V pohode, to nie je žiadna medzera vo vzdelaní, stačí len prísť s implementáciou, ktorá pasuje do tvojej aplikácie, alebo využiť vhodný design pattern.
Ak by som mal ďalej vysvetľovať na svojom minulom projekte, tak "definování akce(funkce) přímo k té dané instanci" nebolo tak úplne to, čo som spravil - každý druh akcie (spustenie animácie, pohnutie objektom, vypísanie správy atď) bola osobitná trieda (samozrejme všetky mali spoločného predka), každá inštancia si potom držala referenciu len na tie objekty, ktoré ona sama ovplyvňovala (príp. si tie referencie nejako rozumne získala vtedy, keď ich potrebovala).
Spomínané prepájanie objektov nie je opäť nič iné, než klasické
referencie. V tvojom prípade mi to znie tak, že problém je skôr kde a kedy
tie referencie získavať, kam ukladať samotné skripty (myslené ako ich
inštancie) a ako ich navzájom prepojiť. To zase veľmi závisí od toho, čo
už máš vytvorené, čo z toho môžeš na riešenie tohto problému využiť
a ak to nebude stačiť, tak aké riešenie by do zvyšku tvojho projektu
pasovalo najlepšie. A to už je niečo, nad čím sa ako autor hry musíš
zamyslieť sám a podľa toho sa rozhodnúť 
Ak mám hovoriť za seba, pri podobných problémoch sa mi najčastejšie
osvedčilo tlačiť na modularitu základných častí projektu - v tvojom
prípade by si mohol napr. porozmýšľať nad nejakým systémom komponentov
pre entity v hre. Nemusel by si ako komponenty dokonca reprezentovať len rôzne
funkčné skripty, ale aj ďalšie dáta a behaviour - napr. polohu entity, jej
grafickú reprezentáciu atď. Takýmto využitím composition patternu by si sa
vyhol nutnému neustálemu rozširovaniu pôvodných tried (a následnej
prekomplikovanej špagetovej abstrakcii, do ktorej je odtiaľ ľahké
spadnúť). Pre správu vzťahov medzi komponentami a entitami vidím dve
najbežnejšie možnosti - buď nejaký vyšší mechanizmus s využitím
inversion of control, ktorý bude nad entitami v tvojej hre a bude ich zhora
sám spravovať (komplikovanejšie riešenie), alebo vytvoriť nástroje,
pomocou ktorých budú môcť komponenty samy komunikovať medzi sebou, napr.
formou helperov a extension metód pre vyhľadávanie iných komponentov a
entít a pod. (návrhovo škaredšie riešenie, ktoré môže zvádzať k
neprehľadnému kódu a tight couplingu). Prípadne vymysli / nájdi niečo iné
sám 
Díky, takhle jsem nad tím nepřemýšlel a asi jsem to zbytečně komplikoval. Už mám představu a koncepčně to funguje.
Zobrazeno 5 zpráv z 5.