Udhëzues për Botën e Programimit të Lojërave

Zhvillimi i videolojërave mund të shihet si në aspektin teknologjik ashtu edhe në atë kreativ. Meqenëse aspekti teknologjik i zhvillimit të lojës është i lidhur ngushtë me aspektin kreativ, mund të themi lirisht se programimi i lojës është një botë më vete. Industria e lojërave ofron mundësi për ekspertët që të zhvillohen në fusha të ndryshme teknologjike, duke ofruar shumë lloje rrugëtimesh në karrierë. Në këtë kontekst, industria e lojërave bashkon inxhinierë dhe ekspertë me prejardhje të ndryshme, me grupe të ndryshme aftësish që ata shpesh i kanë fituar në industri të tjera. Ajo që është interesante dhe karakteristike për industrinë e lojërave – të gjitha këto role shpesh janë shumë të ndërlidhura në punën e tyre të përditshme. 

Videolojërat janë produkte softuerike, ndaj besoj se është e rëndësishme të adresohen pyetjet e mëposhtme: si ndryshon zhvillimi i një softueri të tillë nga zhvillimi i llojeve të tjera të produkteve softuerike? A zbatohen këtu të gjitha rregullat dhe parimet e përgjithshme të zhvillimit të softuerit? Çfarë rolesh ekzistojnë? Cilat teknologji përdoren? Çfarë nevojitet për të filluar punë në industrinë e videolojërave? Unë do të përpiqem t’u përgjigjem këtyre pyetjeve në këtë tekst, por së pari, për kontekst do të paraqes rrugëtimin tim për t’u bërë Inxhinier Softuerësh në industrinë e lojërave.

Unë nuk jam ndër ata që e dinin paraprakisht që do të bënin këtë punë. Në universitet, u fokusova intensivisht në elektronikë, harduer dhe softuer të integruar, dhe më pas nga vizioni kompjuterik, algoritmet e përpunimit të imazhit, si dhe sistemet muzikore dhe audio. Megjithatë, universiteti më lejoi të prekja inxhinierinë klasike të softuerit përmes kurseve me zgjedhje, të cilat më vonë u bënë interesi kryesor në karrierën time. Duke punuar në industrinë e elektronikës së konsumit si inxhinier softuerësh, kam zhvilluar aftësitë e mia në zhvillimin e aplikacioneve, sistemeve dhe softuerit drejtues. Pjesën më të madhe të karrierës sime e kalova duke zhvilluar programe mesatare për aplikacione në pajisjet Smart TV. Sot, unë punoj në Playstudios Europe si Zhvillues i Platformës së Zhvillimit të Lojërave.

Programimi në lojëra

Çdo gjë që krijuesit e lojës parashikojnë dhe krijojnë – koncepte lojërash, histori, dizajne karakteresh, dizajne të botës, logjikën dhe mekanikat e lojës – duhet të gjejë mbështetje softuerike. E gjithë kjo çon në drejtime të ndryshme programimi: programimi i lojës, programimi i motorit, programimi i sistemit, programimi brenda grafikës kompjuterike, programimi i serverit, AI, programimi i logjikës fizike dhe matematikore, programimi i rrjetit dhe programimi i bazës së të dhënave. Nuk duhen harruar mjetet e programimit që kompanitë e lojërave shpesh zhvillojnë për të përmirësuar procesin e zhvillimit ose për të vendosur përmbajtje të reja në një lojë. Mjete të tilla përdoren nga të gjithë – Artistët, Analistët e të Dhënave, Ekspertët e Marketingut dhe madje edhe vetë Programuesit. Sigurimi i cilësisë së vazhdueshme është shpesh i nevojshëm, prandaj përfshihen edhe Inxhinierët e QA, të cilët dizenjojnë dhe programojnë teste ose mjedise testimi. 

Çdo nëngrup i roleve programuese është një hallkë e rëndësishme në zinxhirin e zhvillimit dhe vjen me sfida dhe përgjegjësi të caktuara. Sigurisht, jo çdo zhvillim i lojës përfshin të gjitha këto role, por shumica e kompanive të mëdha i kërkojnë të gjitha. Në zhvillimin e lojërave më të vogla ose indie, ka mundësi të hasni situata ku një person zhvillon disa gjëra (madje edhe teknikisht të palidhura). Megjithatë, e gjithë kjo çon në përfundimin se është shumë e rëndësishme që çdo Programues të kuptojë qartë se ku përshtatet roli i tij në procesin e zhvillimit, për të siguruar që ata që varen prej tyre mund të bëjnë pa probleme pjesën e tyre dhe të ofrojnë një produkt me cilësi të lartë.

Kur bëhet fjalë për përgjegjësi specifike programimi, disa fusha të rëndësishme programimi në industrinë e lojërave mund të theksohen dhe përshkruhen shkurtimisht, megjithëse secila prej tyre kërkon ekspertë me profile të ndryshme. Këto janë:

  • Programuesit e të luajturit

Çfarë bëjnë ata?

Programuesit e lojës shkruajnë kodin që ndikon drejtpërdrejt në UX-në e lojtarit. Ata janë përgjegjës për zbatimin e aspektit ndërveprues të lojës, duke u fokusuar në ndërtimin e vetë lojës, mekanikën dhe logjikën e saj, rregullat e lojës, përparimin, si dhe ndërveprimin midis objekteve brenda lojës. Ata merren me gjithçka që përdoruesi (lojtari) sheh, dëgjon ose ndjen drejtpërdrejt gjatë lojës. Kjo përfshin kontrollet në lojë, efektet audio dhe vizuale. Çdo objekt i dukshëm në një lojë video kalon përmes kodit të Programuesve të të Luajturit.

Këta Programues shpesh janë gjithashtu përgjegjës për programimin e ndërfaqes së përdoruesit të lojës, dhe në botën e lojërave celulare dhe çdo lojë tjetër në internet, ata shpesh ndeshen me lojëra meta. Këto janë përmbajtje shtesë të lojës që në një farë mase ndjekin konceptin kryesor të lojës dhe inkurajojnë lojtarët të luajnë lojën rregullisht, për të cilën këta Programues janë gjithashtu përgjegjës.

Çfarë teknologjish përdorin?

Zgjedhja e teknologjisë ndryshon shumë nga kompania në kompani, ose nga loja në lojë. Ai  mund të kushtëzohet nga faktorë të ndryshëm si lloji i lojës, shkallëzueshmëria e lojës, kërkesat e performancës, platforma e zhvillimit të lojës e përdorur, platforma mbi të cilën funksionon loja dhe të tjera. Megjithatë, mund të thuhet që duhet të jetë i njohur me të gjitha gjuhët e programimit, si dhe me të gjithë motorët/platformat e lojërave në të cilat është programuar loja.  Gjuhët më të zakonshme të programimit që hasen në programimin e lojës janë C++, C#, Java, Python dhe Lua. Sidoqoftë, duhet të theksohet se Programuesit e lojës gjithashtu shpesh trajtojnë mjete skriptimi vizual që i lejojnë ata të krijojnë logjikë dhe sjellje të lojës pa shkruar kodin (nëse platforma e zhvillimit e përdorur e lejon atë). Edhe atëherë, njohja e disa gjuhëve programuese është e dëshirueshme, por jo plotësisht e nevojshme.

Me kë bashkëpunojnë?

Programuesit e lojërave kryesisht bashkëpunojnë me njerëzit që e kanë konceptuar lojën ose një funksionalitet specifik të lojës që po programojnë – pra, me Game Designers. Ky bashkëpunim është i nevojshëm që Programuesit të kuptojnë saktësisht se çfarë duhet të ndodhë në lojë dhe si përparon loja. Ata gjithashtu bashkëpunojnë me Artistët për të kuptuar se si duhet të sillen objektet dhe personazhet. Programuesit e lojës duhet të kenë një kuptim të mirë të platformës së zhvillimit të lojës që përdoret, aftësive dhe kufizimeve të saj, në mënyrë që ata gjithashtu të bashkëpunojnë me Programuesit e Motorit të Lojërave. Së fundmi, për optimizimin dhe përmirësimin e kodit të tyre, ata bashkëpunojnë gjerësisht me Inxhinierët dhe Teknikët e QA.

  • Programuesit e Platformave të Zhvillimit

Çfarë bëjnë ata?

Jo të gjitha kompanitë vendosin të zhvillojnë platforma zhvillimi nga e para, megjithatë, në situata të caktuara, kjo sjell disa avantazhe. Përdorimi i platformave të zhvillimit të lojërave të disponueshme në treg ofrojnë gjithashtu përfitime të caktuara, kështu që së pari është e nevojshme të vendosni për një nga këto dy opsione. Sidoqoftë, zhvillimi i një platforme zhvillimi loje përfshin krijimin e një lloj strukture brenda së cilës funksionon loja dhe e cila do të përdoret shumë nga Programuesit e Lojërave. Prandaj, një platformë zhvillimi loje përfshin zbatimin e nënsistemeve të ndryshme si një platformë rendering për grafikë 2D ose 3D, duke përfshirë sistemet e animacionit dhe efekteve vizuale, më pas një nënsistem për mbështetjen e audios në lojë, një nënsistem për fizikën dhe zbulimin e përplasjeve të objekteve në lojë, si dhe nënsisteme të ndryshme përgjegjëse për çështje thjesht teknike që nuk lidhen me konceptin e lojës, si rrjeti, i menaxhimit të memories, interpretimi i skriptit, AI, nënsistemet e pagesave, blerja e lojërave dhe monetizimi, sistemet e mbështetjes së marketingut, sistemet e programeve të besnikërisë dhe të tjera. Platformat e zhvillimit shpesh integrojnë drejtpërdrejt softuerin e palëve të treta në formën e bibliotekave dhe kornizave të tjera për të pasuruar funksionalitetin ose për të përdorur zgjidhje të bëra tashmë. Për më tepër, platformat e zhvillimit të lojërave shpesh ofrojnë paketa të pavarura mjetesh të përdorura nga Artistët, Animatorët, Dizajnjuesit dhe Programuesit e Lojërave, kështu që programimi i këtyre mjeteve është gjithashtu shpesh përgjegjësi e Programuesve të Platformave të Zhvillimit të Lojërave.    

Çfarë teknologjish përdorin?

Shumica e platformave të  zhvillimit të lojërave të disponueshme në treg përdorin C++ si gjuhën kryesore të programimit. Megjithatë, ka nga ato të shkruara në gjuhë të tilla si C#, Java dhe madje edhe JavaScript (për disa lojëra të bazuara në ueb), ose C (për disa lojëra më të vjetra në PC). Këta Programues ndeshen me biblioteka të ndryshme grafike – OpenGL, Vulkan, Metal, WebGL dhe të tjera.

Teknologjitë e përdorura nga ta varen kryesisht nga platformat për të cilat është menduar platforma e zhvillimit të lojës. Këta Programues gjithashtu kanë për detyrë ta transferojnë lojën në platforma të ndryshme, kështu që aftësitë që mbështeten në programimin Android ose iOS, për shembull, janë shumë të dobishme për lojërat celulare.

Në mënyrë analoge, për lojërat e ekzekutuara në PC, njohja me sistemet operative Windows, Linux ose MacOS është e dëshirueshme. Transferimi i lojërave në konsola kërkon gjithashtu disa nga këto aftësi, duke përfshirë elementë të programimit të integruar kur shtohet mbështetje për kontrollera të ndryshëm, leva dhe pajisje të tjera hyrëse/dalëse. Kjo çon në njohjen e dëshirueshme të gjuhëve si C, Java, Kotlin, ObjectiveC, Swift dhe të tjera.

Programuesit e platformave të zhvillimit në përgjithësi njohin gjithashtu sisteme të ndryshme ndërtimi, si dhe mekanizma për integrimin e zgjidhjeve të ndryshme softuerike të gatshme. Ai është gjithnjë e më i pranishëm në lojëra, kështu që ata mund të programojnë ose përdorin zgjidhje të tilla.

Duke marrë parasysh që Programuesit e Platformave të Zhvillimit të Lojërave janë të shqetësuar kryesisht me performancën e lojës dhe sigurimin e qëndrueshmërisë së lojërave duke përdorur një platformë të caktuar loje, ata gjithashtu kanë për detyrë të gjurmojnë metrika dhe analitika të ndryshme për të përmirësuar cilësinë e softuerit. Është e rëndësishme të theksohet se jo të gjitha platformat e zhvillimit përfshijnë të gjitha teknologjitë, gjuhët dhe funksionalitetet e përmendura. Gjithashtu, shumë shpesh, lojëra të shumta nga një studio përdorin të njëjtën platformë zhvillimi, kështu që këta Programues përpiqen të zhvillojnë një platformë zhvillimi sa më të përgjithshëm që të jetë e mundur, me sa më shumë veçori të jetë e mundur.

Me kë bashkëpunojnë? 

Në varësi të përgjegjësive të tyre dhe gjithëpërfshirjes së platformës, Programuesit bashkëpunojnë me ekspertë të tjerë teknikë si Programuesit e Serverit, Analistët e të Dhënave, Inxhinierët DevOps dhe, siç është përmendur tashmë, Programuesit e të Luajturit. Për më tepër, ata që përdorin mjete brenda platformës së zhvillimit të lojës shpesh kanë kërkesa për Programuesit e Platformës së Zhvillimit. Së fundmi, ekipet e Game Engine zakonisht përfshijnë inxhinierë dhe teknikë të QA me të cilët ata bashkëpunojnë çdo ditë.


  • Programuesit e Serverit 

Çfarë bëjnë ata?

Shumë lojëra sot përdorin internetin në mënyra të ndryshme. Një nga përdorimet më të zakonshme të internetit në videolojëra është mundësimi i mbështetjes për lojërat me shumë lojtarë. Serverët MMOG (Massively Multiplayer Online Gaming) janë komponentë thelbësorë të lojërave në internet që mbështesin një numër të madh lojtarësh që luajnë lojën njëkohësisht dhe sëbashku.

Në shumë lojëra sot, përmbajtja ndryshon në mënyrë dinamike. Për shembull, shtimi i niveleve të reja, karaktereve, artikujve të lojës etj. Lojërat gjithashtu shpesh përfshijnë oferta të ndryshme për blerje në lojë përmes ndërfaqes së përdoruesit. Disa lojëra mbështesin lojën ndër-platformë, që do të thotë se ato mund të luhen në pajisje të ndryshme pa ndërprerë përparimin e lojës. Në lojërat celulare, një pjesë e logjikës së lojës shpesh ekzekutohet në server në vend të pajisjes së përdoruesit. E gjithë kjo bie nën përgjegjësinë e Programuesve të Serverit, së bashku me analitikën dhe telemetrinë, të cilat janë pjesë thelbësore e çdo loje kryesore sot.

Programuesit e serverëve zhvillojnë mjete për shpërndarje dinamike të përmbajtjes dhe bashkëpunojnë ngushtë me programuesit e platformave të zhvillimit sepse kodi i serverit shpesh komunikon me kodin e motorit. Ata shpesh bashkëpunojnë me Menaxherët e Lancimit dhe shumë role të tjera. Programuesit e Serverëve integrojnë zgjidhje të palëve të treta në kodin e tyre, por ata gjithashtu dizenjojnë dhe implementojnë sisteme dhe mikroshërbime të caktuara nga e para sipas nevojave të lojës ose platformës së zhvillimit. 

Çfarë teknologjish përdorin?

Ashtu si me rolet e tjera, teknologjitë varen nga mjedisi specifik dhe kërkesat e projektit, por më së shpeshti, përdorin gjuhë programimi si Java, Python, C++ dhe C#. Për më tepër, Programuesit e Serverit shpesh mbështeten në shërbimet cloud si AWS, Azure, GCP dhe të tjera. Baza e të dhënave të ndryshme ruhen në server, duke e bërë SQL një teknologji thelbësore për Programuesit e Serverit. Programuesit e Serverave zakonisht kanë njohuri të mirë të protokolleve të ndryshme të komunikimit në rrjet.

Sfidat

Të gjitha rolet e përmendura programuese, edhe pse të ndryshme, mbështesin dhe respektojnë konceptet dhe parimet bazë të programimit. Teoria dhe parimet e arkitekturës së softuerit zbatohen në të gjitha këto segmente, kështu që mund të thuhet se në këtë drejtim, programimi i lojërave nuk ndryshon shumë nga degët e tjera të programimit.

Gjithashtu, të gjithë Programuesit përdorin mjete universale dhe konvencionale gjatë kodimit, secili në mjedisin e tij specifik të zhvillimit, i cili nuk është i ndryshëm nga programimi në degët e tjera të industrisë së softuerit. Megjithatë, ekziston përshtypja se programimi i lojërave ende paraqet sfida të caktuara që nuk ekzistojnë në sfera të tjera, duke e bërë këtë industri jashtëzakonisht interesante dhe dinamike.

Së pari, paparashikueshmëria se si përdoruesit do ta luajnë lojën dhe në cilat pajisje (në rastin e lojërave kompjuterike dhe celulare), duke çuar në kompleksitetin e testimit, është një nga sfidat më të mëdha me të cilat përballen zhvilluesit në industrinë e lojërave. Një sfidë tjetër e dukshme është varësia e një ekipi nga një tjetër, duke e bërë shumë të vështirë shpërndarjen e barabartë të kërkesave të një projekti midis ekipeve, duke çuar ndonjëherë në bllokimin, pritjen ose zgjerim të projektit.

Kufizimet e diktuara nga hardueri, versionet e sistemit operativ, versionet e softuerit të palëve të treta, kapaciteti i serverit dhe të tjera ngjashme si këto, janë vetëm disa nga sfidat për t’u kapërcyer. Në raste të caktuara (jo të rralla), lojëra të caktuara ose veçori të reja të lojës zhvillohen gjatë kohës që loja është në prodhim. Kjo shpesh përfshin ndryshime në softuerin tashmë të testuar ose të qëndrueshëm që është në prodhim. 

Sistemet softuerike në lojëra janë shpesh shumë të mëdha. Dizenjimi i një softueri të tillë, ose krijimi i arkitekturës përpara zbatimit, është një sfidë e veçantë. Gama e problemeve që has çdo Programuesi është shumë e gjerë – ky nuk është domosdoshmërisht një problem, por gjithashtu edhe një mundësi e shkëlqyer për të përmirësuar aftësitë e programimit.

Çfarë nevojitet për t’u bërë programues lojërash?

Edhe pse shpesh ekziston besimi se njohuritë specifike të proceseve të zhvillimit të lojërave janë të nevojshme për programimin në industrinë e lojërave, nuk është e detyrueshme. Për t’u bërë Programues në industrinë e lojërave, duhet të zotërohen vetëm aftësitë dhe interesat bazë që lidhen me të, në varësi të llojit të programimit që do të donin të ndiqnin.

Ky tekst, ndër të tjera, synon të inkurajojë njerëzit që dëshirojnë të testojnë veten në industrinë e lojërave pa përvojë paraprake në programimin e lojërave. Nuk ka pengesa për hyrjen nëse fusha e interesit të dikujt përputhet me ndonjë nga të lartpërmendurat. Industria është e strukturuar në një mënyrë që kushdo që hyn në të mëson shumë shpejt, kështu që ndryshe nga industritë e tjera të programimit, Programuesit zakonisht ndihen sikur kanë disa vite përvojë pas vetëm një viti.

Çfarë përfitoni nga puna në industrinë e lojrave? Së pari, mundësinë për zhvillimin e shpejtë të aftësive programuese. Arsyeja për këtë janë sistemet e mëdha softuerike, shumëllojshmëria e gjerë e teknologjive të përdorura, por edhe komunikimi dhe ndërveprimi i vazhdueshëm me programuesit e aftësive dhe përgjegjësive të ndryshme, si dhe dinamizmi i vetë punës. Industria dhe tregu i lojërave po zhvillohen me shpejtësi, gjë që përfshin përballjen me teknologji të reja dhe moderne. Tregu kërkon veçori të reja, ndaj takimet e përditshme me risi të ndryshme janë të pashmangshme. Dhe më e rëndësishmja, industria e lojrave me siguri do t’ju ofrojë shumë argëtim 🙂 

Lajme

Platforma unike digjitale për orientim profesional në sektorin e video lojërave është lokalizuar në tre gjuhë të tjera, me një version shtesë të destinuar për përdoruesit nga i gjithë rajoni!