Přeskočit na hlavní obsah
  1. Blog/

Grand Chase II. - Den hraní

·8 min· 0 · 0 ·
oalar
grandchase
Autor
Oalar / Tomáš Vřeský
Aerift Games Founder
Obsah
Grand Chase - Tento článek patří do série.
Část 2: Tento článek

Nebyl jsem si jistý, kdy tento článek zveřejnit. Rozhodoval jsem se, zda to zveřejnit jako poslední článek série, nebo jako jeden z prvních. A nyní jsem dospěl k závěru, že je dobré tento článek umístit na začátek.

Popíši zde den, kdy se Grand Chase hrál. Popíšeme si, jak to vypadalo z mého pohledu. V dalším článku se zaměřím na analýzu po hře, a poté se ponoříme do technických aspektů, jak byla hra vlastně postavena.

Dny před velkým dnem #

Byli jsme nuceni si vážně stanovit priority o tom, co stihneme a co ne. V následujících kapitolách této série podrobněji vysvětlím problémy, kterým jsme postupně čelili. Přibližně týden před dnem hraní jsme museli vyškrtnout pár funkcí z našeho ToDo seznamu. Prostě nám docházel čas a já i druhý vývojář Tomáš Vrba/Kaen máme práci na plný úvazek a další povinnosti.

Dva měsíce poměrně náročného vývoje si na nás vybraly svou daň. Chtěli jsme se vyhnout tomu, abychom trávili další noci vzhůru do dvou do rána. Proto jsme trochu zredukovali funkce aplikace, které nebyli nutné pro chod aplikace. A začali jsme pracovat pouze na těch nejnutnějších věcích. Všechny tyto funkce se nám podařil do pátku dokončit. Tedy až na jednu.

T-minus 24 hodin #

Den před hrou jsme měli poslední schůzku s ostatními organizátory akce. Ten večer jsme také provedli intenzivní testování. A protože jsme byli s Kaenem nuceni prioritizovat, tak jsme nestihli během týdne všechny nové funkce pořádně otestovat. Testování se tedy provedlo teprve teď… Páteční noc jsme tedy v aplikaci našli pravděpodobně více než 10 velkých chyb. Několik z nich doslova tak závažných, že bez jejich opravy nešlo vůbec hrát.

Někteří z nás zůstali vzhůru až do 5:15 ráno. Vše jsme řádně otestovali, hned opravili a pak znovu otestovali. Těmito rychlými opravami jsme pravděpodobně vytvořili i několik nových chyb. Které pak vyžadovaly další rychlé opravy a tak dále :). Protože už bylo opravdu pozdě, rozhodli jsme se dát si rychlého šlofíka. Šel jsem tedy spát a nastavil si nový budík na 7:30 ráno.

Nejhorší bylo, že jsme vůbec nestihli dokončit jednu poslední funkci, kterou jsem zmínil v předchozí kapitole.

T-minus 7 hodin #

Do začátku hry zbývalo necelých 7 hodin. Probudil jsem se dřív než Kaen, takže jsem začal připravovat poslední funkci. Tou funkcí byl boj mezi hráči. Na straně serveru bylo potřeba provést nějaké základní výpočty, takže jsem se rozhodl zkusit požádat o pomoc AI. K mému překvapení vygenerovala funkci, která byla tak z 95 % přesně to, co jsem potřeboval. Takže jen s několika lehkými úpravami jsem dokončil přípravu funkce na straně serveru. Bez použití by mi toto možná samo o sobě zabralo jednu nebo dvě hodiny. Díky AI to byla otázka maximálně 20 minut.

Pak přišel čas integrovat tuto funkci i do klienta/aplikace. To byla Kaenova práce. Takže jsmse potkali na Discordu a vysvětlil jsem mu, jak logika funguje na straně serveru. Podařilo se nám to zprovoznit poměrně rychle. Provedli jsme také několik testů a vše se zdálo být v pořádku. Zbývala nám jedna nebo dvě necelé hodiny, které jsme mohli věnovat vylepšování drobností jako jsou texty v aplikaci atd. Už jsme neřešili žádné problémy, a opravdu jsme řešili jen malé drobnosti.

Vlastně jsem v tu chvíli cítil úlevu. A pokud si dobře vzpomínám, bylo to naposledy, co jsem se ten den cítil klidný :)

T-minus 1 hodina #

Ve 13:05 jsem dorazil do registračního centra. Sem měli hráči dorazit ve 14:00 a následně měli: potvrdit svou účast, dostat přihlašovací údaje do aplikace a poté si ji i stáhnout. Problém byl v tom, že jsme stále neměli finální verzi instalačního souboru. Kaen stále pracoval na drobných opravách a využíval každou minutu svého času, aby hru co nejlépe vylepšil. To jsem si alespoň tedy myslel. V této době jsme nebyli v kontaktu déle jak 20 minut.

V cca 13:30 jsem se připojil na Discord, abych Kaena požádal o instalační soubor. A první věc, kterou řekl ihned po připojení, bylo něco v tomto smyslu: “Jsme v háji, nic nefunguje. Vůbec nic.”

Možná to byla jiná slova, ale přesně takto to můj mozek v tu chvíli zaregistroval. A akorát v tento moment v tu dobu začali do registračního centra přicházet první hráči.

Poslední oprava #

Kaen našel opravdu podivnou chybu. Nová funkce, kterou jsme dnes ráno nasadili se chovala divně. Boj hráči se na telefonu choval špatně. Neměli jsme čas ji na telefonech otestovat. A do té doby vše fungovalo stejně jak na telefonu tak i na počítači. Později se v této sérii se pokusím vysvětlit, co přesně se stalo.

Musel jsem tedy nastartovat svůj pracovní notebook, připojit se přes VPN k serveru a začít pracovat na opravě. Nejhorší je, že v registračním centru nebyla Wi-Fi a příjem signálu byl opravdu špatný. A to jsme ke všemu hráčům slíbili, že budou mít na místě Wi-FI, aby neplýtvali daty na stahování aplikací. Ostatní organizátoři nevěděli, že s kaenem řešíme tento problém. A začali dávat heslo k mému mobilnímu hotspotu všem, kteří potřebovali Wi-Fi. Takže kombinace špatného signálu a připojení několika lidí k mému hotspotu mi práci na opravě trochu komplikovala.

Pár hráčů už mělo registraci hotovou a jediné, co potřebovali, bylo stáhnout si aplikaci do telefonu. Stále jsme však neměli k dispozici nejnovější verzi, které obsahovalo opravu bojového systému. Naštěstí se nám rychlou analýzou povedlo chybu opravit. Nejednalo se o úplně perfektní opravu, ale stačilo nám, že to funguje.

Ve 13:48 jsme tedy měli připravený instalační soubor a hráči si mohli začít aplikaci stahovat. Dvanáct minut předtím, než měla registrace oficiálně začít.

Problém s heslem #

Lidé tedy začali postupně stahovat a instalovat. A po pár minutách jsme začali dostávat hlášení o několika lidech, kteří se nemohli přihlásit do aplikace. Provedli jsme tedy pár testů a zjistili jsme kombinaci dvou problémů.

  • Hesla obsahovala české znaky (ě,š,č,ř,ž, …).
  • Pole pro heslo v aplikaci mělo limit 15 znaků. A některá hesla jsme měli delší až 19 znaků.

Tyto problémy jsou důsledkem toho, že jsme spoustu věcí připravovali ve spěchu. Člověk, který hesla generoval tak otestoval, zda fungují s českými znaky. A skutečně fungovala. Ale jen některé z nich. A ještě k tomu jsme tomuto člověku nesdělili, že hesla musí být dlouhá maximálně 15 znaků.

Abychom tento problém rychle vyřešili, změnili jsme všem hesla na “asdf”.

Jelikož se jednalo o soukromou akci organizovanou skauty, tak jsme věděli, že se nemusíme bát nějakého zneužití.

Začátek hry #

Poté se všichni přesunuli na svá startovní místa. Dalo by se říct, že můj stres byl v tuto chvíli v rekordních výškách :). Stále jsem se ptal sám sebe, co by se ještě mohlo pokazit.

Před začátkem hry jsme měli jednu skupinu, která začala hrát dříve než ostatní. Neměli jsme bohužel čas vytvořit nějaký druh zámku nebo odpočítávání, který by zabránil lidem hrát dříve, než jim bylo dovoleno. Naštěstí jsme díky naší databázi dokázali rychle zjistit, kdo byl viníkem. Stačil jeden rychlý telefonát a zjistili jsme, že se jednalo jen o drobné nedorozumění. Restartovali jsme tedy herní mapu do výchozího stavu a hra mohla konečně začít.

Dost jsem se bál, že by server mohl být přetížen požadavky. Zvláště takto na začátku, kdy všichni neustále využívali aplikaci. Ale to se naštěstí nestalo. Překvapivě server běžel prakticky stejně jako rychle, jako při testování pouze s pár uživateli.

Jediný výpadek byl ve 14:47-14:49, kdy jsem omylem vypnul server. Zapomněl jsem vypnout nepotřebné služby na serveru, které využívali jeho prostředky. A když jsem vše postupně vypínal, tak se mi podařilo vypnout jednu z kritických částí systému.

Poslední problém #

Asi 40 minut po spuštění hry jsem si všiml jednoho problému. Ve hře hráči postupně zabírají a odemykají území. Tato odemykání a interakce se za určitých podmínek na 30 minut zamknou pro celou jejich frakci. Takže pokud se jednomu hráči nepodařilo¨například questem odemknout nějaké území, tak se uzamklo toto území pro všechny ostatní v jeho frakci na 30 minut. A z nějakého podivného důvodu se tento zámek po 30 minutách nezrušil.

Problém se mi podařilo najít poměrně rychle. Dokonce jsem to opravil i na své lokální verzi serveru. Ale rozhodoval jsem se, jestli mám tuto aktualizaci nasadit i na produkční server. Věděl jsem, že toto nasazení by trvalo minutu. Možná dvě, víc opravdu ne. Jednalo se o opravu co změnila jen dvě řádky kódu. A bylo prakticky jisté, že se nic jiného tou opravou rozbít nemohlo. Ale s tím, co vše jsme ten den museli řešit a opravovat, jsem se nakonec rozhodl opravu na server nenasadit. Kolikrát se mi stalo například v práci, že jsem si byl na 150% jistý, že oprava nic nemůže rozbít. A najednou rozbila :)

Tak jsem se rozhodl napsat malý skript, který kontroloval všechny zamčené zóny a porovnával jestli je zámek starší než 30 minut. Pokud byl starší, tak území pro danou frakci odemknul. Po celou dobu hry jsem musel tento skript spouštět ručně cca každých 5 minut.

Závěr #

Hra byla ukončena ve 20:00. A v další kapitole se budu věnovat analýze průběhu a konce hry. Podíváme se na nějaké statistiky o tom, jak si hráči vedli atd. A v dalších kapitolách se ponoříme do techničtější části projektu Grand Chase.

Grand Chase - Tento článek patří do série.
Část 2: Tento článek

Related

Grand Chase I. - Začátek
·3 min· 0 · 0
oalar
grandchase
Newsletter a sociální sítě
·1 min· 0 · 0
oalar
aeriftgames
Webové stránky spuštěny
·1 min· 0 · 0
oalar
aeriftgames
Neoznámený projekt
·1 min· 0 · 0