01.06.2018
V minulém díle jsem předmět, po kliknutí na něj, jen zničil (odebral ze scény). V tomhle díle předmět přidám do inventáře. Postava hráče bude mít vlastní kontejner pro předměty inventáře tzv. inventory holder. Bude to třída dědící ze třídy Inventory, která bude implementovat základní manipulace s inventářem, jako přidání předmětu a odebrání, případně hromadné přídávání předmětů nebo celých stacků. Třída Inventory bude předměty držet v generickém listě, z ní pak budou dědit inventáře například obchodníků nebo truhly a skladiště. Inventory holder pak jen implementuje singelton pro inventář hráče. [...]
18.03.2018
Zbraň už mám vytvořenou, ale aby s ní hráč mohl ve hře pracovat - zvednout ji, vložit do inventáře, nebo z inventáře vyhodit, je potřeba jí tohle chování naskriptovat. Taky bude potřeba nastavit fyziku předmětů, aby dokázaly reagovat na prostředí. Jednoduše se z předmětu vytvoří prefab a veškeré vlastnosti se přidají tomuto prefabu. Pro načtení předmětu do hry se bude využívát právě tohoto prefabu, na který je uložena reference v mém ScriptableObjectu. [...]
11.03.2018
V tomhle díle detailně popíšu jak vytvářím modely předmětů do hry v Blenderu (aktuální verze 2.78). Jako nový model jsem zvolil jednoduchou válečnou sekeru. Inspiraci vždy hledám na googlu, kde zároveň stáhnu i dobrý referenční obrázek. Samozřejmě pokud mě dostihne můza a napadne mě vlastní model, nejsou podklady potřeba pro modelování, jen pro zachování špetky realističnosti. Popíšu teké jak model mapuji a texturuji. Protože budu ve hře používat jedoduché barvy, využívám atlas textur, v mém případě spíše barev, který usnadňuje práci Unity a tak šetří výkon PC. [...]
28.02.2018
Na chvíli odbočím od inventáře a zaměřím se na část, která s tím ale hodně souvisí. A to jsou předměty ve hře. Abych mohl dále rozšiřovat inventář, budu už potřebovat nějaké předměty a nějaký systém jak s něma pracovat. V tomhle logu vysvětlím jen způsob, jak předměty budu vytvářet v Unity a v dalších článcích popíšu tvorbu modelu v Blenderu a následně zprovozním interakci s objekty, potom se k inventáři zase vrátím. Hodně dlouho jsem měl systém tvorby předmětů v Unity velice nešťastně řešený, dokud jsem nenarazil na ScriptableObjects.[...]
25.02.2018
V minulém díle jsem popisoval inventář a jeho části. Dneska se vrhnu na zprovoznění toggle panelu pro zapínání a vypínání panelů předmětů. Řešení je na můj vkus celkem komplikované, niceméně funguje a to mi prozatím stačí. Pokud je hráč v inventáři a klikne levým na tlačítko (toggle), zobrazí nebo skryje odpovídající panel. Volba je ale jen dočasná dokud je hráč v inventáři, jakmile je inventář otevřen znova, automaticky se všechny panely skryjí. Proto jsem přidal možnost zvolit si oblíbené panely. To lze aktivovat prostředním tlačítkem myši (obyvkle kolečkem). Výběr zůstane uložen i po opětovném otevření inventáře. Tak bude mít hráč naprostou kontrolu nad zobrazenými prvky v inventáři.[...]
24.02.2018
Teď když mám hotové menu, můžu udělat inventář. Bude podobný tomu ve Skyrimu, takže seznam předmětů a okno s popisem předmětu, jen nebude zobrazovat modely předmětů (možná přidám později). Seznam předmětů bude rozdělený podle typů na zbraně, zbroje, nástroje, lektvary (nebo jen byliny, rostliny...? ještě nevím :) ), knihy, zboží a oblíbené. Každý typ bude mít samostatný panel, který bude možné zobrazit nebo skrýt pomocí vrchního panelu v inventáři, kde budou jednotlivé ikony. Ikony těchto typů budou taky mít možnost zvolit oblíbené, pro případ kdy hráč bude chtít zobrazovat jen zbraně a zbroje, po kliknutí prostředním talčítkem myši označí ikony a po otevření inventáře se budou zobrazovat jen vybrané. [...]
22.01.2018
Jako každé RPG tak i to mé bude mít inventář, atributy a další informace o postavě. K tomu je však potřeba nějak přistupovat, obvykle po stisknutí klávesy I nebo TAB se zobrazí inventář nebo jiné okno kde je přístup k předmětům hráče a jeho statistikám. Já však budu mít inventář a atributy hráče odděleně. Představuji si mít malé menu ve tvaru prstence, které se objeví kolem hráče a jednotlivé tlačítka budou výseče toho prstence.[...]
18.02.2018
V minulém díle jsem psal o low poly a vymodeloval pár modelů pro moji vesničku. Nicméně s terénem jsem nebyl spokojený. Představoval jsem si terén s viditelnými ostrými hranami tzv "faceted". Pro Unity existuje asset, který dokáže z výškové mapy udělat přesně takový terén, naneštěstí není free, já jsem však ochotný těch 15€ za to obětovat. Asset se jmenuje Low Poly Terrain, stačí do něj jen vložit výškovou mapu, případně texturu, pohrát si s nastavením dle libosti a vygenerovat terén. Detaily generování se budu zabývat později až se vrhnu na vytváření terénu světa. Pro mé účely zatím postačí jeden blok terénu, který má NavMesh, aby se po něm hráč mohl pohybovat. [...]
21.04.2017
Jak jsem se na začátku zmínil, v průběhu dojde určitě ke změnám a jedna nastala právě když jsem budoval vesnici. Jelikož je hra z velké části inspirována Runescapem, tak jsem studoval jak jsou udělány modely v této hře. Jsou totiž low poly, ale stále je hratelná grafika (i old school), ovšem oni na modely používají smooth shading. Jsou tedy low poly ale s texturou nelze poznat ostré hrany.[...]
14.03.2017
Ve hře budou tři typy entit. Neutrální, agresivní a neutrálně agresivní. Neutrální, nebude na hráče útočit, dokud hráč nezaútočí první, pak s ním bude bojovat dokud hráč nezmizí z dohledu. Agresivní zaútočí na hráče hned jak bude postava hráče v dohledu, a nepřestane dokud hráč opět neuteče mimo dohled. A neutrálně agresivní, bude mít dva stavy. V prvním, když bude hráč jen na dohled, tak hráče varuje, a když se hráč přiblíží tak entita zaútočí. Za entitu ve hře považuji jakoukoliv živou postavu. Tedy i hráč, ale hráč je jedinečná entita, který má jiné chování než všechny ostatní. Entity zase obecně spadají pod Objekty. [...]
14.03.2017
Možná je na tohle v téhle fázi brzo, ale trochu se odreaguji od hráče a kamery a začnu dělat na další důležité věci. A tou je patrolování. Každé NPC (non player character) je entita, která bude žít svůj zatím jednoduchý život. Nepřátelé, jako různé kreatury a podobně, se musejí nějak samostatně hýbat. Mít své vlastní patrolovací trasy (smyčky) a vůbec nějaký kontroler který se bude starat o jejich pohyb. Proto jsem vymyslel způsob jak takový systém vytvořit. Jeho princip je snadný. Každá entita bude mít určitý rádius v kterém se bude pohybovat. V tomhle rádiusu vygeneruju určitý počet náhodných bodů s pořadím.[...]
14.03.2017
Postava se sice hýbe, ale kamera zůstává na místě. V plánu je dvojí ovládání kamery. První, kdy kamera bude hráče následovat a druhé, kdy hráč může kameru posouvat nad levelem. Vytvořím ve složce "Scripts" podsložku "Camera" a do ní vložím nový skript pojmenovaný "CameraController". První vyřeším pohyb kamery, potom následování hráče. Kamera se bude posouvat na základě kláves WSAD, takže jde jen o nastavení souřadnic kamery, podle vstupu a také rychlost pohybu kamery. Problém však nastává, když chceme posouvat kameru dopředu nebo dozadu.[...]
14.03.2017
V minulém logu jsem zmínil řádky anim.SetBool, teď se k ním vrátím. Moje postava má uložené nějaké animace. Já tyhle animace potřebuji spustit, právě v těch momentech, kde jsou v kódu. K tomu je Unity komponenta Animator, ten se opět zobrazí Window>Animator (pozor je tam ještě Animation, ten není potřeba). Animator v podstatě funguje tak, že má počáteční a konečný stav. Každý klip, nebo animaci, co do něj vložím je další stav. Mezi těmihle stavy jsou přechody, ty fungují na základě nějaké podmínky. [...]
14.03.2017
Jak bude fungovat pohyb ve hře? Docela jednoduše, když kliknu na místo, kam chci aby mi postava běžela, nastavím navmesh agentovi cíl a spustím animaci postavy. Jakmile dosáhne postava cíle, agent se zastaví a stejně tak i animace běhu. Kdykoliv mezitím bude postava v režimu idle. Jak si ale pamatujete, u postavy mám pouze jednu animaci z blenderu, která obsahuje všechny pohyby. Animace v Unity totiž jde nastříhat na jednotlivé klipy. [...]
14.03.2017
Hra bude typu click to move, tedy kam kliknu, tam postava půjde/poběží. Tohle má Unity naštěstí již zmáknuté a tak toho využiji. Unity používá něco, zvané NavMesh (Navigation Mesh) a NavMesh Agent. Tohle "něco" funguje tak, že "peče" mesh přes statické objekty ve scéně. Tenhle mesh pak slouží k navigaci pro agenta. Veškeré předměty, označené v inspektoru jako Static budou brány jako nepohyblivé předměty, které agent považuje za nepřístupná místa (ne jako překážky) a v generovaném meshi vzniknou "díry". [...]
14.03.2017
Prázdná scéna v Unity potřebuje trochu oživit, ale než se do toho pustím, chtělo by to udělat si pořádek v Assets. Co to je? Assets reprezentuje jakýkoliv objekt který Unity používá, nejedná se pouze o 3D objekt, ale jsou to scripty, zvukové soubory, textury, obrázky, prostě cokoliv. Nemusím říkat že takových aktiv bude ve hře spousty, je tedy dobrý v tom mít pořádek. [...]
14.03.2017
Nikdy jsem nebyl příznivcem využívání něčeho co už udělal někdo jiný. Jenomže ve světě vývoje her to tak nefunguje. Teda funguje, ale ne v případě když jde o projekt jednoho člověka který si vše dělá sám. Obvykle je hra vyvíjena týmy vývojářů, grafiků, umělců a podobně. Já jsem do určité míry vše v jednom. Musím být. Ty časy kdy jsem se snažil udělat vlastní engine jsou ty tam, pokud chci udělat hru je zbytečné ztrácet čas [...]
14.03.2017
Jak už jsem zmínil, asi to nebude běžný devlog a tak nezačnu concept artem, kterému jsem stejně ani nic moc nedal. Spíš nic než moc. Ale nějak bych shrnul o co vlastně jde a co jsou vlastně mé cíle. Ano je jich trochu víc, upřímně ani nevím kam až budu schopný dojít. Přesněji řečeno je to dlouhá trať plná velkých úseků skládající se z malých úseků rozdělených na checkpointy. Kde se zrovna teď nacházím na trati? řekl bych někde mezi 0.1 a 1%. To je dobrý, je to stále víc než 0.[...]
14.03.2017
Když už jsem se pustil do toho tzv. vývoje hry, proč neudělat rovnou devlog? Jaké hry? No, k tomu se dostanu později. Lepší otázka je, jak vůbec takový devlog vypadá? To byla moje první myšlenka když jsem chtěl začít konečně sypat písmenka do dokumentu... Po chvíli strávené na internetu, vyhledáváním devlogů, jsem se rozhodl, že se nebudu inspirovat a udělám to jednoduše dle mých představ. Jsou jen dvě možnosti jak to dopadne. Buď jsem se trefil a i tohle je způsob a nebo vznikne něco velice zvláštního. [...]