Јас се викам Бранислав Вајагиќ, официјално програмирам игри од крајот на 2001 година. Кога велам официјално, мислам дека тоа е моја работа. Пред тоа, бев вклучен во игрите на сите можни начини, како и многу луѓе: хобист и ентузијаст. Си играв наоколу и се обидував да направам нешто свое. Тоа беа Spectrums, Commodores и така натаму. Беше одлично искуство, чиста забава. Што се однесува до деловниот дел, почнав во студиото Метаморф, а подоцна имаше некои домашни студија како Level Bit, потоа српско-израелската копродукција TabTale, потоа работев во Eipix, а во меѓувреме работев како фриленсер. Моментално сум на позицијата Главен програмер во студиото Yboga.
Како дете се „закачив“ играјќи разни игри на стари машини. Не избрав да работам со гејминг затоа што имав голем мастер план, само ги сакав игрите и кога се укажа прилика, едноставно ја искористив. Можноста се покажа на чуден начин, со доаѓањето на Горан Рајшиќ и Никола Витковиќ од тогашната андерграунд стрип сцена на Југославија. Тие се решија на надреален чекор – да започнат со производство на играта, која во тоа време не беше ни мала, а јас случајно дојдов во контакт со вистинските луѓе и влегов на сцената. Тоа се случи непланирано.
Пред тоа имав полупрофесионално искуство, одреден веб развој. Тоа беше професионално во смисла дека беше платена работа, но не беше баш професионална во однос на тимот што се собра и тргна на работа. Потоа се случи ова, па никогаш не дознав што ќе се случеше доколку продолжев по тој пат. Што се однесува до непрофесионалното искуство, секогаш сум имал некои аматерски проекти од различен вид, не само видео игри.
Сакам да кажам дека сум како успешниот и познат Бил Гејтс и Марк Цукерберг – college dropout. Јас формално не го завршив образованието што го започнав. Почнав на факултет, па се откажав. Тоа беше Математичкиот факултет, насока компјутерски науки. Од оваа перспектива, мислам дека формалното образование има значајна улога, таму можете да научите работи што инаку не би ги научиле. Изгледаат досадно и макотрпно, но се многу корисни. Тешко е да се натераш да научиш такви работи, но кога професорот те тера, тогаш мораш. Не ми пречи математиката, но не ме интересираше толку. Имаше малку напред-назад меѓу мене и факултетот, а потоа се појави можност да работам на игри и јас решив да ја прифатам можноста. Исто како што не беше строго планирано, така и напуштањето на формалното образование не беше планирано, едноставно премногу се занесов во развојот на играта. За среќа, денес може да се добие многу формално образование на интернет, а голем дел од тоа е бесплатно. Тоа има свои предности – никој конкретно не ве вознемирува за да направите нешто. Но има и свои недостатоци – никој конкретно не ве вознемирува за да направите нешто, па можете лесно да се откажете од тоа. Некои теми, особено за програмирање, се доста „гриндерски“, треба многу да трпиш, но штом ќе ја поминеш таа фаза, корисно е. Има уште еден проблем. Формалното образование често се користи како еден вид филтер, што е сосема разбирливо. Кога некој треба да вработи некого, го гледа работното искуство и училиштето, а потоа училиштето може да биде филтер – ако некој ништо не учел, можеби и не знае ништо, па зошто да го вработиме. Исто така, училиштето не мора да значи ништо. Формалното образование е посебен вид спорт, таму се учи доста добро да положиш испити, но не мора да значи дека навистина го владееш предметот. Повторно, тоа не значи дека не е корисно. Имам многу познаници од мојот универзитет, кои се брилијантни луѓе и експерти, а имаше и луѓе кои завршија факултет и комплетно се специјализираа за некои други работи и таму се многу добри, а нивната работа нема врска со формалните образование. Ако барам некој кој е добар математичар, никогаш не би можел да го кажам тоа врз основа на формални акредитиви. Така што мојот став е малку измешан. За среќа, велам, денес се може да се научи на Интернет. Исто така често посетувам некои курсеви на разни светски факултети бидејќи таму можеш да научиш нешто што навистина ти е корисно.
Постојаното учење е составен дел од работата. Дали се вклопува или не во работното време зависи од средината во која се работи. Имав многу среќа, сите средини во кои работев беа такви што имаше голема слобода во тој поглед. Секој што сакаше да се подобри, имаше шанса тоа да го направи. Сите ресурси беа достапни, никој никогаш не правеше проблем ако некој трошеше работно време на личен развој. И мислам дека така треба да биде, барем во оваа работа. И начинот на кој доаѓа е, претпоставувам, индивидуален. Обично ми се случува кога ќе наидеме на некој проблем, па морам да се трудам да го решам. Понекогаш имам можност да го следам, ќе ме заинтересира, па почнувам да копам подлабоко.
Немав ментор на класичен начин, но на сите други начини – секако. Мојот ментор би бил една колективна личност: неколку книги, неколку видеа, неколку колеги и соработници. Секако некои професори, особено асистенти, на универзитетот. Имаше неколку кои се истакнуваат. Во последно време најголеми ментори ми се видеата и колегите. Без разлика на возраст, искуство, позиција… Сите можеме да научиме многу од нашите колеги.
Покрај познавање на кодот, нетехничките работи бараат општи организациски вештини, т.е. менаџерски вештини или, едноставно, комуникација со луѓе. Имајќи предвид дека тоа е дел од работата, мислам дека е една од суштинските непрограмски вештини. Иако, според моето искуство со луѓе кои работат слична работа, повеќето од тоа доаѓа со време. Ако некој има каков било вид на образование во тие области, формално или неформално, тоа секако е корисно. Но, повеќето од луѓето со кои имав можност да комуницирам, кои работат на слични позиции, сметаат дека тоа треба да се изгради со текот на времето поради потребите на самата работа.
Позицијата на главен програмер може многу да варира во зависност од контекстот и големината на тимот. Ако тимот е мал, оваа позиција е мешавина од менаџерска и организациска работа и самото програмирање. Плус, малку менторство, ако имаш колеги со помало искуство во тимот. Ако тимот е поголем, тогаш е слично, но помалку се занимавате со други работи. Во мал тим често правите работи кои не се строго поврзани со програмирањето. Можеби правите некоја бирократска работа, можеби правите дизајн на игри, тестирање, операции во живо. Едноставно, некој мора да го направи тоа и ако немате доволно луѓе, тогаш некој мора тоа да го направи.Ако се работи за поголема компанија, како Epic Games или Ubisoft, претпоставувам дека нивните програмери се малку повеќе фокусирани на попрецизно дефинирани работни места и немаат толку многу од овие индиректно поврзани работни места во нивниот работен ден. На крајот на краиштата, позицијата Водечки програмер е за програмски код и соработка со членовите на тимот.
Извесно време работев и во финансиската индустрија како програмер. Најголемата разлика е во тоа што постои целосен недостаток на одговорност во игрите. Кога ќе заебеш нешто, никој нема да умре. Што е прилично ослободувачко, бидејќи не правите скенер за да откриете нечија болест. Некој дефинитивно ќе се изнервира овде, но на крајот на денот, тоа се само игри, па не е толку лошо. Мислам дека тоа е голема разлика помеѓу игрите и другите ИТ индустрии.
Во финансискиот сектор, постои поригорозен слој на тестирање на софтверот, бидејќи ако некој кликне на нешто што сте го изградиле и изгуби пари, тоа може да биде голем проблем. Во игрите е малку поинаку. Не значи дека нема обврски – ако играта ти е лоша, ќе пропаднеш како компанија, не е ни тоа безначајно. Но, сепак е различно од следењето на медицината или инфраструктурата, контролата на летот итн. А самиот начин на работа е нешто сосема друго. Во финансискиот сектор има високофреквентно тргување и има голем фокус на тоа како да се направи трансакција што е можно побрзо. Тие брзини се мерат во многу мали делови од секундата и можете да го програмирате хардверот. Колку што е можно подиректно, затоа луѓето се обидуваат да го постават компјутерот што е можно физички поблиску до берзата за да ги постигнат овие брзини. Тука е сличен проблем – сакате да прикажете што повеќе слики во секунда на екранот. Но, ако сте во индустријата за мобилни игри, за среќа некој се потрудил малку да ви олесни, а производителите на мобилни телефони велат: „Нашите телефони работат со 60 фрејмови во секунда. Можеби си подобар од тоа, но тоа не ти вреди ништо“.
Во споредба со другите индустрии, можеби главната разлика е во тоа што разновидноста на проблеми со кои се соочува развивачот на игри е многу поголема. Има помалку специјализација. Кога сте специјализирани за нешто како анализа на слики од Хабл, тоа е многу специфично. Таму имате збир на проблеми со кои се занимавате и кои можеби се нерешливи, па затоа ви е тешко. Но, кога правите игри, најчесто доаѓате во контакт со се и сешто што постои во игрите. И во игрите има се што можеме да замислиме. Така, мислам дека различноста е една од клучните разлики.
Најважната цел е да се има игра која работи и е што е можно без грешки – да се обезбеди квалитетот на кодот за да се направи проектот полесен за одржување во иднина, да може да продолжи да се одржува или да се користат делови за следниот проект. Подеднакво е важно водечкиот програмер да им помага на колегите со помалку искуство да се подобрат и да станат понезависни. Да се пренесе знаењето што може да се стекне по пат и да се научи нешто од нив. Мислам дека главната цел е квалитетот на самиот производ и квалитетот на кодот, поради иднината на одржување на проектот, но и соработката со колегите.
Што се однесува до мојот тим, ние сме мал тим во моментов сме шестмина. Всушност, ние се делиме на неколку проекти, почнуваме на еден начин, завршуваме на друг начин. А што се однесува до методологијата, морам да признаам дека пробав секакви работи и не сум презадоволен од ниедна методологија. Ние го користиме она што најдобро ни одговара на крајот. Конкретно, ние сме нов тим во Yboga, се запознаваме малку повеќе, и сèуште ги тестираме методологиите што ги користиме. Користиме некој трагач за прашања, се трудиме релативно добро да планираме се што можеме. Се држиме до agile, на кој не сум љубител, барем не во секој дел од продукцијата. Некои методологии се дефинитивно корисни во некои делови од производството, но не толку многу во други. На пример, кога сте во рано производство и правите нешто што е во фаза на прототип или експериментирање, не гледам потреба од строги методологии. Но, ако влезете во последната фаза на производство или по објавувањето, тогаш можеби не толку многу scrum, но некои agile методологии може да бидат доста корисни. Пробавме различни технологии (Trello, Jira), па дури и хартија и пенкало. Некои од овие методологии се поефикасни во живо, а некои се поефикасни при работа од далечина. Немам омилена методологија, на овој проект сè уште размислуваме која најдобро ќе ни одговара, па штом ќе ја сфатиме, веројатно ќе се држиме до неа.
Главниот програмер најчесто комуницира и соработува најмногу со продуцентот затоа што обично е личноста која ги обединува сите други тимови во една целина. Така се одредуваат плановите и задачите за кој било период. Бидејќи сме во мал тим, соработувам со сите. Исто така, главниот програмер многу комуницира со Арт директорот, бидејќи самата графика бара технички карактеристики поради техничките барања на платформата за која се работи, па таму е потребна голема соработка. Отсекогаш сум соработувал со сите, но претпоставувам дека тоа е физички невозможно бидејќи тимовите се поголеми. Можеби во Blizzard главниот развивач комуницира само со продуцентот кој е задолжен за тој проект. Зависи и за кој тим се работи. Ако се работи за тим кој врши поддршка за резервен сервер, тоа лице веројатно мора да комуницира со различни позиции, како што се хардверски луѓе, особено ако градите сопствени фарми за сервери.
Што се однесува до работниот тек, го добиваме дизајнот на играта и заедно правиме план што сакаме да постигнеме во наредниот период. Потоа едноставно го разложуваме на помали задачи. Потоа се делиме, што повторно е моја работа – да се поделиме кој што ќе прави. И тогаш одиме на работа. Ако задачата е поголема, се согласуваме за главната архитектура на кодот и секој почнува да го имплементира она што му се допаѓа. Ако тоа се помали задачи и сите веќе се доволно запознаени со пошироката архитектура, тогаш едноставно секој нешто ќе добие и почнува да работи. Во одреден момент мојот дел од работата е да направам преглед на код, кој се прави толку често колку што дозволува времето. Работниот тек е прилично досаден, се сведува на пишување код, дискусии и тестирање кодови, понекогаш независно, понекогаш преку играње на играта. Понекогаш не е лошо да се извршат тестови за Unity, иако досега не сум видел програмери на игри кои се комфорни во користење на овие тестови. Не ги користиме толку многу. Сакам да кажам дека целта на тестот за Unity е да тестира некој код и со тоа да го намали бројот на грешки, но од друга страна, тестот за Unity е исто така код. Можете лесно да направите грешка и во тестот Unity, па што? Секако дека има свои придобивки, па на кој му се допаѓа нека го искористи.
Што се однесува до документацијата, таа најмногу се сведува на некои фрагменти за дизајн на играта бидејќи е доста важно да се специфицира програмскиот дел. Она што го произведувам често се списоци со задачи, задачи што сите ќе ги правиме. И можеби на почетокот на проектот, или кога ќе дојдат нови луѓе, документи поврзани со стандардот за кодирање или општи правила во кодирањето. И, секако, на почетокот на секој проект или дел од проектот, јас, како главен девелопер, треба да изготвам документ поврзан со архитектурата на самиот код.
Тие документи можат да бидат и кратки и долги, може да бидат и сликички на дијаграми, што зависи од соработката со други програмери. Ако веќе се познаваме доволно добро, тогаш и едноставните документи можат да кажат многу, а ако не се познаваме, тогаш дури и енциклопедија понекогаш не е доволна, иако најчесто е доволно. Тоа е она што водечкиот девелопер треба да го произведе, а она што треба да го консумираат се, главно, документи за производство или документи за дизајн на игри. И, секако, она што секој од нас треба да го консултира – календарите – бидејќи обично правиме планови, си поставуваме рокови за да постигнеме нешто.
Што се однесува до софтверот, јас користам се што ми изгледа корисно во тоа време. Бидејќи моментално развиваме игри користејќи Unity, секако има Unity, Visual Studio, разни алатки во прелистувачот (Jira, Confluence, Google Docs, Google Spreadsheets). Следно, често сакам да користам алатки за дијаграмирање. Го користев Миро, онлајн табла за соработка. За мене е доста добро, бидејќи некои работи полесно се прикажуваат визуелно, иако подоцна се преведува во текст кој е код. Користам и разни мали уредници за JSON, за конверзии на разни датотеки. Затоа го користам и Visual Studio Code како текстуален уредувач или за некои други работи кои не се строго кодни. Често чувам txt датотека, во која вметнувам се што ми паѓа на ум. На дневна основа користам и Discord, Slack, Zoom, Skype и сите можни програми за комуникација.
Како последна точка, би сакал да ја отфрлам илузијата што ја имаат многумина кои сакаат да влезат во индустријата за игри. Кога нешто е вашата работа од соништата, очекувате дека секогаш ќе биде интересно и убаво да го правите тоа. Сепак, во се што правев имаше и има и нешто досадно и нешто интересно. Секој пат кога ќе направам чекор напред, а потоа кога ќе погледнам наназад, си викам: „Ох, како би можел да го направам ова и додека е така, мислам дека е добро“. Кога човек веќе не може да погледне назад и да каже: „О, тоа беше глупаво“, тогаш тој не напредувал. Имав доволно среќа да работам на неколку различни проекти, па секој од нив беше различно искуство и единствено за мене. Отсекогаш било интересно и отсекогаш било здодевно затоа што секоја продукција на гејминг доаѓа до „гриндање“ – само имаш задача и треба да ја работиш без разлика дали тоа го сакаш или не. Играта не постои ако ги нема сите елементи и колку и да е досаден некој елемент, на пример интегрирањето на реклами во играта, тоа мора да се направи. Така мелењето во MMORPG нè подготви за мелење на работа, затоа погрижете се да сте навистина подготвени за тоа!
Целиот разговор со Бранислав Вајагиќ можете да го погледнете ТУКА.