Vývojářský deník #2 - Blíží se konec strastiplné cesty (02.07.2019)

4 měsíce uplynuly od doby, kdy jsem se rozhodl pravidelně psát o vývoji mých her a ostatních zajímavostech. Z toho tak nějak vyplývá, že obnovení blogu jde dost ztuha :) Naštěstí jsem se konečně odhodlal situaci napravit, aspoň co se týká vývoje 3x64 8-)

Od posledního blogu se mi povedlo splnit všechny důležité úkoly v todo listu a hra je teď z velké části hotová. Poslední výzvou (kromě opravování bugů a dalšího ladění v následujících dvou měsících) byla onlina tabulka, kterou jsem spolu s úpravami UI dokončil včera. Příběh online tabulky je složitější, než se na pohled zdá, protože její původní verze byla hotová a funkční už dříve, ale bohužel jsem musel celý kód zahodit.


Původní tabulku jsem totiž psal v dobré víře, že hra bude propojená s Gamejoltem, jak bylo zvykem u mých minulých her. V této době jsem si ale ještě nebyl jistý, jestli hru vydám zdarma, nebo za malou částku. Prodej hry by znamenalo založení živnosti a s tím spojené náklady a papírování, což bylo vždycky něco, čemu jsem se chtěl vyhnout a co šlo úplně mimo mě. K přehodnocení situace mě ale přimělo několik okolností, které se v tu dobu odehrály. Nechci je tu úplně rozepisovat vzhledem k tomu, že se i na tomto webu chlubím firmou, ve které pracuju, ale uvědomění, že nechci být celý život závislý na zaměstnavateli, mě prostě posunulo směrem k živnosti, ať už to znamená spoustu starostí a nákladů. Naštěstí musím říct, že zatím těch starostí a nákladů moc nebylo a celý proces byl celkem jednoduchý, až na komunikaci s finančním úřadem, ale snad to nějak zvládnu a podaří se mi všechno správně zařídit. Co se týká živnosti, tak samozřejmě nespoléhám příliš na prodej her, ale spojil jsem to s aktivitou, která mě už prokazatelně vynesla peníze a tou je prodej 3D assetů do her. Šlo sice zatím o minimální výdělek (několik stovek), ale 3D grafika mě hrozně baví a sám nemám moc příležitostí ji využít v mých hrách (snad jednou vyjde Hunger of Darkness :D), takže jednou za čas rád něco připravím pro ostatní.

 
Ale zpět k 3x64, po rozhodnutí zkusit hru prodat jsem začal studovat, jak to funguje na serverech, kde chci hru nabízet. K mému nemilému překvapení jsem došel k závěru, že hru nedostanu na Gamejolt, protože jejich platební systém nepodporuje Českou republiku. Byl jsem nucen ze hry odstranit všechny části stávající online tabulky a bohužel včetně synchronizovaných statistik, což byla moje velká chlouba :(. Nemusím říkat,že jako ne příliš zkušený a dobrý programátor to byl celkem složitý proces. Po tak nějak úspěšné extrakci (hra šla spustit bez tabulky :D) jsem se rozhodoval, jak problém s tabulkou vyřešit bez Gamejoltu.
 
Nabízela se 2 řešení - použít vlastní řešení za pomoci serveru a mysql tabulky s výsledky, nebo využít řešení Steamu. Samozřejmě by bylo možné udělat obě varianty. Nakonec jsem se rozhodl pro variantu s vlastní tabulkou, která je jednotná se všemi verzemi hry na všech platformách (pokud jde o PC), protože přece jenom nepředpokládám, že bude hra nějak moc úspěšná a čím více výsledků lidi odešlou, tím lepší bude iluze, že hru hraje hodně lidí :)
 
Vlastního řešení jsem se bál, protože moje zkušenosti se síťovou komunikací nějak vůbec neexistují a rozhodně si nemyslím, že by bylo v mých silách je uvést v existenci :) Naštěstí jsem podle návodu dal dohromady velmi jednoduché řešení využívající pouze jednoduché PHP skripty komunikující s databází. Výsledná tabulka funguje bezchybně, ale bude potřeba přidat ještě několik málo ověření, aby nebylo úplně snadné podvádět. Samozřejmě s mojí úrovní programování půjde jen o několik základnějších ochran. Nakonec jsem ale za tohle řešení hodně rád, protože hra nemusí nosit v kódu celé API ze kterého nejméně polovinu věcí ani nepoužije, ale stačí mi jeden celkem jednoduchý skript.
 
Aktuální verze s vylepšeným UI a funkční tabulkou
 
K dnešnímu dni mám celkem funkční build (s několika závažnými bugy, to musím přiznat :)) a troufám si optimisticky tvrdit, že bych byl schopný všechno vyladit a vychytat začátkem srpna (termín jsem zvolil podle mého výletu na Šumavu, kde plánuju sledovat perseidy bez světelného znečištění, a proto bych je rád sledoval s dobrým pocitem, že hra se už vesele prodává :)). Samozřejmě zbývající práce je ještě tuna, kromě bugů bude možná potřeba trochu optimalizovat vykreslování (hra bohužel vykresluje hrozně moc průhledných spritů najednou) a doladit ozvučení, které si vzal na starost peeterangelo a které už teď zní naprosto úžasně.
 
Když mluvím o optimalizaci, nemůžu vynechat androidovou verzi, se kterou bych rád počítal po vydání hry na PC. Právě kvůli ní jsem řešil problém s vykreslováním mnoha spritů přes sebe, což slabší telefony (jako můj :)) absolutně nezvládají. Celou věc jsem vyřešil samostatnou scénou pro Android, kde se spousta věcí vykresluje společně a některé efekty jsem odstranil úplně. Přesto, že jsem dokázal touto oddělenou scénou a výraznou optimalizací některých částí kódu rozjet build na mém telefonu při stabilních 30 snímcích, pořád není výkon úplně dostatečný a bojím se, že na slabších telefonech hra prostě nebude schopná fungovat. Bohužel toho prostoru ke zlepšení už moc není, vykreslováním spousty spritů se nevyhnu a optimalizace kódu v této situaci už zásadní rozdíl neudělá.
 
Optimalizace vykreslování a scény pro Android
 
Ale starosti s android buildem jsou ještě hodně daleko, hlavní je teď připravit hru pro PC. V plánu mám nejprve vydání na Itch.io, kde nepředpokládám žádné komplikace a později na Steamu, kde bych určitě chtěl využít steamové achievementy a pravděpodobně i steamové UI během hry. Pokud se povede implementovat Steam včas, nebráním se vydání na obě služby najednou, ale určitě nebudu bránit vydání jen kvůli Steamu :)
 
Teď začátkem července chci využít několika volných dní, které neprosedím v práci a co nejvíc se věnovat tomu, abych za 5 týdnů směl napsat blog o úspěšném vydání 3x64 :). Ale samozřejmě chci využít některé dny k volnu, protože jsem se zatím letos skoro nikam nedostal ani na kole, ani pěšky.Tak snad se to povede a brzo se tu objeví příspěvek s odkazem ke stažení hry :)