MATHEF: blilo neblilo, tak dva roky zpatky, jsem byl velmi opatrne tazan "co si myslis, ze bychom na dalsi projekt zkusili unreal?" - bylo to ve chvili, kdy jsem tekl vzteky kvuli nefunkcni konzolove verzi (ofigo pluginy pro xbox / ps4 od unity byly velmi spatny joke, plny chyb a crashujici nalevo napravo), zoufale se snazil resit prusery s multithread rendererem, hadal se s unity, a moje nasranost byla na vysokem levelu. Takze moje odpoved znela: "jeste pred dvema mesici bych se zacal smat, pak si uvedomil, ze ten dotaz myslis vazne, a zacal jecet hruzou. ted rikam, hele, aspon to zkusme. horsi to byt nemuze..."
A zatimco ja uradoval na Dead Effectu a delal dalsi verze a vr a support a dlc, zacalo se delat na unrealu... = ergo ostatni prede mnou maji jisty naskok - a ja rychle pochopil, proc jim to jde tak "rychle".
Efektivita programatorske prace na unrealu je desiva, i za predpokladu, ze vsechno beha, jak ma (coz treba v mem pripade neni, prave uz tyden resim, ze se mi ten idiot ma tendenci rozhodnout, ze se musi zrekompilovat, cimz invaliduje vsechna generovana data.... nejsem jediny s timto problemem, ve firme to obcas taky nekomu chvili delalo a pak zase preslo, ale reseni... neni).
Dokumentace - prakticky neexistuje, to co je, jsou suche popisy bez niceho, casto s chybami, deprecated uz nefunkcni veci, oficialni navody nemusi fungovat (naposledy narazil pri nestovani poli, zpetne jasne, ale byl to copypaste...), googleni po forech a podobne prevazne nachazi pripady, kdy se noob pta a noobove mu odpovidaji, casto blbosti. Spoustu drobnych veci, co jsem zkousel resit, jsem nasel, ze se lidi vyptavaji, jak to udelat, a pak rezignujou. Jsou sice k dispozici zdrojaky enginu (rozesmalo me "you'll find examples of using in engine sources" v nejakem oficialnim pseudotutorialu). Sehnal jsem nejakou literaturu, vesmes obsolote / ultra noob. Kurzy na udemy jsou videa s typickou informacni hodnotou hodina cuceni na par minut informaci bez mocnosti vyhledavat....
Zjistovani nepodstatnych ale smrtelne dulezitych veci, jako treba ze je mozne donutit unreal, aby kompiloval jen zmeneny soubor, ne slepil vsechny zdrojaky v modulu a pak giganticke cpp zkompiloval, je hit and run kdyz nahodou nekde narazis.
Unreal C++ je dost specificke, coz ale ok, proste chteli pomlatit c++ aby v nem mohli delat, nejak se jim to povedlo, otazka zvyku. Hot Reloading je vetsinou tezky lol. Nekdy funguje, nekomu jo, nekomu ne, debugging je hit and run. Ledacos se proste nereloaduje... a nektere veci maji tendence delat silenosti, jako treba ze nove zkompilovany blueprint node dotane uvnitr marker, ze je to z "hotreloaded dll", cehoz, pokud si nevsimnes, se pak hrozne divis, kdyz s nim neco udelas... a po restartu enginu zjistis, ze blueprint rve o promennych a funkcich neexistujiciho invalidniho typu....
Unreal neveri na exceptiony (protoze na nekterych target platformach "nejsou dostupne" (afaik obsolete a nepodporovanych...) - cili sebemensi picovina je crash enginu. Obcasne zdroje crashu jsou wtf, nez pochopis nektere architektonicke prvky unrealu.
Takze nejaka rozumna iterace pri praci s c++ je prakticky nemozna. i v pripade deleni prace na male moduly je tam proste brutalni compile loop run smycka. (dalsi nepodstatna drobnost je stale polofunkcnost visual studia na c++, i s resharperem, ve srovnani s vetsinou hladce bezicicm c#. uz se mi stalo, ze se intellisence zasekl tak dokonale, ze jsem mel v pameti osm jeho serveru zabirajicich 30 giga ram....)
Interkomunikace mezi c++ a blueprinty je obcas hodne divna. Nektere veci jsou vyslovene naprosto dementni, nebo vyzaduji tuny boileplatu, at uz na c nebo bp strane. Rozsirovani editoru o vlastni funkce, property drawery, customized details a podobne jsou ve Slate, coz je kapitola sama pro sebe. Pracovat se s tim da, ale vsechno zabere strasne mnozstvi copypaste.
Z tohohle hlediska chapu, ze proste obvykly pristup propagovany epicem je udelat chobotnice z blueprintu, kde aspon nejsou vsechny ty prusery s kompilaci a hot reloady a vsim moznym, a v pripade naproste nutnosti je prepsat do c++.
Blueprinty, fajn, na to, k cemu to bylo urcene super, na jednoduche spojky dat s kodem, jednoduchou logiku, level scripting, budiz, i UI se s tim da delat relativne pouzitelne. Jsou proste veci, na ktere je to velmi vhodne a uzitecne. Ale... ledacos jde, ledacos nejde, ledacos je unrealovsky kretenske. Do maker je mozne vlozit jen relativne omezene mnozstvi veci, takze vznikaji tendence proste jako idiot copypastovat nejake beznejsi veci z blueprintu do blueprintu...
Jakakoli trochu slozitejsi vec v blueprintech zacne rychle vypadat (aspon co se koukam, co tvori ostatni, ale moje nejake drobne pokusy tomu odpovidaji) jako grupac opilych cthulhuu, do kterych se zamotalo letajici spagetove monstrum. veci, ktere napisu v beznem jazyce prejetim prstu po klavesnici na dva radky jsou v blueprintech i nekolik minut klikani a pretahovani. Navigace ve vysledku je pak dost desiva, i kdyz se to snazis vizualne oddelovat a komentovat...
Verzovani? Vyhledavani? Reference? nedejboze neco jako refactoring? Sice nejake nastroje jsou, ale...
Suma sumarum - z meho hlediska kodera je to priserne desive neefektivni peklo. I kdyz odpocitam, kolik casu jsem ztratil ucenim se, wtf ziranim a obvyklou unrealovskou zabavou, tupym cekanim, az se zkompiluje / prepocita, engine (a s nim cely pocitac) zacne nejak reagovat.... udelal bych v unity desetkrat tolik prace. Mozna je to hodne osobni, ale ja jsem typ, ktery se musi zakousnout a pak jede a busi, az si po case potrebuje dat kratkou pauzu a repeat until exhausted or complete. V unrealu... moc nehrozi.
Na nejake experimentovani a prototypovani je to fakt dost na hovno...