pátek 21. září 2018

GameDev: Elegantně řešené bodáky

Bodáky v mojí chystané hře Galaxman fungují tak, že čekají na někoho, koho můžou propíchnout. V základním nastavení jsou trošku schované - ale nebojte, vidět půjdou, pokud lehce zaostříte svůj roky hraním poničený zrak. Pokud na ně dupnete, vyjedou ze země a začnou vám ubírat energii. Jakmile je opustíte, zajedou zpátky do země. Ale! I během zajíždění můžou opětovně vyjet, pokud se vrátíte zpět na bodáky.

Původně jsem to řešil pomocí několika koprogramů. Bodáky vyjížděly, ale někdy zapomněly zajet zpátky. Nakonec jsem si ale uvědomil, jak lehce se to dá napsat.

Základní nastavení je:

- mám 2 pozice pro: (1) zasunuté a (2) vysunuté bodáky
- bodáky se neustále zasunují do pozice 1, pokud na nich hráč není
- bodáky se neustále vysunují do pozice 2, pokud na nich hráč je

A myslím, že zde pod textem je celkem elegantně napsaný kód. Dá se ještě upřesnit, zda mají být aktivované po celou dobu anebo jen v blízkosti hráče. Dají se plně deaktivovat, například po dokončení úrovně. Použití: skript dejte na child gameobjekt obrázku bodáků. Kód pro ubírání energie mám napsaný v jiném skriptu a myslím, že je to záležitost pro zcela jiný článek. Zvětší se po kliknutí...


zeal

čtvrtek 12. dubna 2018

Svět roku 2018

Když jsem začal se psaním o hrách před devíti lety, svět tehdy vypadal jinak. Vše bylo veselejší a rozhodně bezpečnější. Všichni na sebe byli milí, nikdo neměl v sobě ani kapku zlosti, bezpečný, takový byl svět.


V té době všudepřítomné radosti jsem si začal na netu hledat své první zdroje herních recenzí a článků. A našel jsem. K mému velkému překvapení ale tyto herní recenze a články byly neskutečně nudné, a to tak, že jsem poprvé ve svém dospělém životě začal přemýšlet o tom, že bych snad i já cosi napsal, o něčem z prostředí her, u čeho bych se mohl zasmát, když už to na té hrejní stránce nejde. Chtělo to ale nejdříve nějaké testovací místo, kde bych nahodil pár písmenek a zjistil, jestli se u toho zasměju. Jestli se u toho zasměje i někdo další mi, upřímně, bylo jedno. Databázeher byla místem, kde jsem si vytvořil speciální účet a začal jsem se psaním svých vůbec prvních herních komentářů. A nakonec jsem usoudil, že jsou opravdu vtipné, na míle vtipnější, než co jsem mohl v té době číst na neskutečně suchých, bezpečně píšících webech, které připomínaly domov důchodců pro vysloužilé nevtipné autory Excaliburu, kteří už nemohli dál, předstírat, že je baví psát pro čtenáře aktivně hrající. Tak špatně na tom byly herní weby v roce 2009. Donutily mě, přírodního lenocha, zvednout se z gauče a něco napsat.

V té době začala fungovat originálně psaná stránka Kultura kriplů, takže jsem v tom jistě nebyl sám, kdo si myslel, že o hrách by se mělo psát alespoň s trochou nadšení. Přidal jsem se, nebo přesněji - byl jsem přidán -, a co se dělo dál, to už víte, pokud si to dnes pamatujete. Vyšla spousta článků. Taková, že jsem musel články cpát i jinam, třeba na Casual Core. Padesát až sto komentářů pod článkem nebylo nic výjimečného. Lidé prahli po něčem alespoň trochu nesuchém, co nebyli redaktoři velkých webů ochotni, možná ani schopni, nabídnout.

Jak už to tak bývá, nic nevydrží navždy a ani Kultura kriplů nebyla natolik odolná, aby se vyhnula svému skonu. Ten byl zapříčiněn mimojiné i různorodostí redakce. Lidé, co si mysleli, že se navzájem znají, se už nepoznávali. Někteří odešli, jiní byli vyhozeni. Noví redaktoři, kteří je zastoupili, nebyli tou čerstvou krví, jež byla potřeba pro rozpumpování nového života stránky. Komunikace umřela celkově, poslední členové si sebrali své kytary a tiše odešli, bez potlesku, který si možná ani nezasloužili. Byl úplný konec. Alespoň jsme to vydrželi déle, než pan Engeor. To jediné mi na tomto konci přijde jako pozitivní věc.

Tento neslavný konec dvou K (KK) bohužel negativně poznamenal i mé působení zde na Casual Core, které je kvalitou článků už pár let lehce pod úrovní současného Bonuswebu. Samozřejmě i má záliba v programování a digitálním kreslení na tom měly svůj podíl. Aby se čtenář na toto místo pravidelně vracel, na to je potřeba, aby se tu objevoval článek alespoň jednou týdně a na to bohužel není čas. Neříkám, že CC končí, jen, jak jste si již jistě všimli, je momentálně psané s obrovskými pauzami. A nevím, jestli se to změní.


Rovněž svět se změnil a z čeho se tehdy dala dělat legrace, je dnes už tak vážné téma, že ani nemá smysl se pokoušet trefit ho nějakým fórem. Hněv statné modrovlasé ženy za levný fórek asi nestojí, zvlášť v dnešní době asociálních sítí, kdy se informace šíří rychleji, než získání diplomu za úspěšné vystudování gender studies.

Co se to ve světě, za dobu od založení Casual Core, vlastně událo? Ani Ice s Andrewem by nedokázali předpovědět tu velkou spoušť, a to jsem jako dítě věřil v jejich vševědoucí schopnosti a uznával jejich polobožský status.


Gamergate. Ve zkratce: Korupce herních novinářů, kteří psali pozitivně o těch hrách, v nichž měli svůj finanční podíl. Někde jinde se dočtete jiné verze, o čem to tehdy bylo. Každopádně, nabralo to většího významu, když SJW infiltrovali herní scénu a velké armádě hráčů a hráček to nedalo a začali svoji životní vášeň bránit veškerou svojí duševní silou a získanými schopnostmi z hraní různých her. Jak bitva vypadala, asi nejlépe ukázal Steven Spielberg ve svém nejnovějším trháku Ready Player One. Tehdy jsem to detailně sledoval a řekl bych, že bitva ve filmu je takové intenzity, s jakou hráči v roce 2014 bránili videohry před útoky lidí, kteří se je rozhodli zničit.

Politická korektnost měla ovládnout hry a zničit je zevnitř. To se bohudík zatím nepovedlo, ale jeden nikdy neví, jak tato situace, boj za srdce videoher, bude pokračovat. Válka se nevede jen na sociálních sítích, nebojují jen hráči, bojiště je mnohem větší, má obrovský politický rozměr. Mám pocit, že těmto lidem, kteří bojovali v této kulturní válce za nás, a že to nebyli jen hráči, ale i samotní herní tvůrci, můžeme děkovat za to, že se na dveřích každého herního studia po celém světě jednoho krásného rána jen tak hned neobjeví vyhláška s vypsanými body, co se smí a naopak, co se nemůže objevit ve videohře.


Léta páně 2018 vyšla asi první hra vůbec dělající reklamu České republice nejen tím, že je od českého studia, ale hlavně svým obsahem. Je to hra o Česku. Můžeme na ni být všichni právem hrdí a tím spíš, že její tvůrci odmítli dělat do ní zásahy, které po nich chtěli šílení zastánci politické korektnosti. Jistě to nebude bez "odpovědi" a vlastně už teď si každý může na zahraničních webech přečíst o tom, jak Warhorse Studios zkreslili historii vlastní země, protože v Kingdom Come nejsou žádní indiáni, přestože podle amerického historika Johna Smithe začátkem patnáctého století obývali území od Vltavy až po Svratku. Takový politicky korektní odstavec, jenž nemá s pravdivou verzí historie nic společného, má dokonce i recenze na Eurogameru. Nejedná se tedy jen o výkřiky na Twitteru, či jiné jeho obdobě.


Příští rok to bude rovných deset let od založení CC a já věřím, že alespoň do té doby ještě s blogováním vydržím. Možná i trochu déle. Po dalších deset let asi ne, ale vím o někom, kdo určitě tak dlouho vydrží. Tudíž budoucnost českého herního snoba blogu není zcela určitě ohrožena. V nejhorším je tu i YouTube, a jeho videoblogování, na které bych si i troufl, ale věřím, že by mi brzo začalo scházet vyťukávání písmenek, kteréžto mám tak tuze rád.

zeal

středa 31. ledna 2018

Galaxman preview

Na hře Galaxman dělám s malýma přestávkama už okolo čtyřiceti dní. Jde o vedlejší projekt, ke kterému jsem si odskočil, abych nabyl více zkušeností - všeho druhu, nejen programování. A chytlo mě to natolik, že jsem z původně malé hříčky pro Ludum Dare vykutal trošku větší, ale hlavně lepší, hru. Není ještě dokončená, ale je ve stavu před dokončením, a myslím, že do čtrnácti dní by měla být hotová určitě.

Zlepšil jsem se v kódování. Galaxman hodně používá takzvané koprogramy (coroutines), které jsou fun a hlavně lehké na použití. Grafika a cit pro design se u mě také zlepšil, jak můžete ostatně vidět na obrázcích dole (horní obrázek je první den tvorby, dolní je den čtyřicátý). Co je z mého pohledu hodně fajn, i první obrázek si vysloužil na sociální síti Twitter sice docela malou, ale i tak, chválu, takže jistá spokojenost tu je.



"Ambice versus dokončení hry" by mohl být nadpis pro tento vytvářející se odstavec. Ani ne dvacet čtyři hodin po skončení Ludum Dare jsem psal na twiter, že Galaxman je až příliš ambiciózní pro víkendovou soutěž. Měl mít i příběh, samozřejmě animované intro a i nějaké ty dialogy v průběhu hry. V plánu bylo udělat devět světů, pardon, galaxií! Jsem si vědom toho, že pokud bych měl dodržet původní vizi, zřejmě bych musel na hře dělat o měsíc déle (optimisticky řečeno). Při tvorbě jsem nakonec zjistil jednu podstatnou věc. Alespoň v tomto případě, vše stojí a padá na kreativitě. Nápad na hru vznikl ve velké rychlosti a jak jsem na ní pokračoval, čím dál tím víc jsem si uvědomoval, že právě ona kreativita je to, co mě na Galaxmanovi nejvíc baví. Plánování je velmi důležitá součást herní tvorby, ovšem u tohoto projektu, který je tvořen tak "nějak jinak", než tvoří 99 procent herních tvůrců, mi bylo jasné, že to takhle musí i pokračovat.

Příběh je tvořen čistě herními prostředky. Hráč si tam určitě nějaký najde, bude-li chtít. Dialogy, ač některé už vznikly, ve hře nebudou.

Výsledek tedy nezaručuji, že se bude líbit úplně všem.

Co teď musím ještě dopilovat, je obtížnost a systém speciálních schopností. To druhé mě zdrží podstatně déle. Pokud se to nepovede správně, zase tak moc se nestane. Stále jde o malou hru, na které jsem nestrávil až příliš času, abych si začal zoufat, když jí dá nějaký novinář 7/10.

zeal

neděle 21. ledna 2018

Unity: Pohyb po vyznačené cestě

Momentálně tvořím malou hru v Unity - viz předchozí blogový příspěvek - a momentálně do ní přidávám různé druhy nepřátel. Co jsem se koukal na blogovou statistiku, příspěvky označené jako Unity mají celkem slušnou návštěvnost, a tedy rozhodl jsem se - když je stále ten začátek nového roku - podělit se o jeden, vcelku jednoduchý, skript jednoho takového AI nepřítele.


Jde o bota, který se kutálí po zemi, zdi, ale i stropě, rychlostí jakou chcete (ale teď jak o tom přemýšlím, docela srandovní by mohla být proměnlivá rychlost). Kutálí se podle vašeho předem připraveného plánu, tam i zpět. Bodů v plánu může být klidně i sto nebo tisíc, podle vaší fantazie. Já jsem se omezil jen na tři body, z nichž jeden je startovní pozice - čili prvním bodem naší, tedy botovy, cesty bude druhý bod, cesta[1]. Jakmile se dostane na poslední pozici, program se "otočí" a bot bude následovat náš plán v obráceném pořadí. Po dosažení startovního bodu se opět automaticky přehodí a pojede zase tak, jak jsme napsali náš plán jeho cesty.

A teď k samotnému kódu:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bot7 : MonoBehaviour {
Transform tr;
bool isRotating;
public Vector3[] cesta;
public int indexC = 1;
public bool zpet;
void Start () {
tr = transform;
isRotating = true;
StartCoroutine (RotateBot ());
}
void Update()
{
if (indexC < cesta.Length && indexC > -1) {
tr.position = Vector3.MoveTowards (tr.position, cesta [indexC], 0.02f * Time.deltaTime);
if (zpet == false) {
if (Mathf.Approximately (tr.position.x, cesta [indexC].x) && Mathf.Approximately (tr.position.y, cesta [indexC].y)) {
indexC++;
}
} else {
if (Mathf.Approximately (tr.position.x, cesta [indexC].x) && Mathf.Approximately (tr.position.y, cesta [indexC].y)) {
indexC--;
}
}
} else {
if (zpet == false) {
zpet = true;
indexC = cesta.Length - 1;
} else {
zpet = false;
indexC = 0;
}
}
}
IEnumerator RotateBot()
{
while (isRotating) {
if (zpet == false) {
tr.Rotate (new Vector3 (0f, 0f, -120f * Time.deltaTime));
} else {
tr.Rotate (new Vector3 (0f, 0f, 120f * Time.deltaTime));
}
yield return null;
}
}
}
Pokud budete mít nějaké otázky, rád je zodpovím v komentářích.

coder zeal