Softverski inženjer

Softverski inženjer/-ka odgovoran/-a je za dizajniranje, razvoj i održavanje softverskih sistema koji pokreću video-igre. Poseduje podrobno razumevanje kompjuterskih programskih jezika, algoritama i principa razvoja softvera. Sarađuje sa gejm dizajnerima i artistima kako bi preveo/-la kreativne koncepte u funkcionalna igračka iskustva. Radi na različitim aspektima razvoja igara, uključujući grafičko renderovanje, simulaciju fizike, veštačku inteligenciju, umrežavanje i korisničke interfejse.


Softverski inženjer/-ka često ima specijalizovano znanje o game engine-ima i framework-ovima. Optimizuje performanse igre, obezbeđuje glatke mehanike igre i rešava tehničke izazove koji se javljaju tokom procesa razvoja. Poseduje razvijene veštine rešavanja problema, jer mora da identifikuje i popravi bagove, optimizuje kod i otkloni bagove kako bi stvorio/-la stabilno i prijatno igračko iskustvo. Pored toga, ostaje u toku sa najnovijim tehnologijama i trendovima u gejming industriji kako bi primenio/-la inovativne tehnike i poboljšao/-la ukupni kvalitet video-igara na kojima radi.

Alati

Unity

Unreal Engine

C++

C#

Java

Python

Visual Studio

Git

Perforce

Saradnja sa drugim timovima

Softverski inženjer/-ka blisko sarađuje sa gejm dizajnerima kako bi razumeo/-la viziju i zahteve igre, efikasno implementirao/-la mehanike, optimizovao/-la performanse i rešavao/-la tehnička ograničenja. Sarađuje sa artistima kako bi integrisao/-la grafiku, animacije i vizuelne efekte u game engine. Takođe, pruža neophodnu tehničku podršku kako bi se osigurala pravilna implementacija i renderovanje umetničkih asset-a u video-igru.


Pored toga, radi sa QA testerima kako bi identifikovao/-la i popravio/-la bagove, obezbeđujući da igra funkcioniše kako je predviđeno. Sarađuje i sa Network Engineer-ima kako bi razvio/-la multiplayer odlike igre i optimizovao/-la rad mreže. Ove saradnje odgovorne su za stabilno i prijatno igračko iskustvo.

Veštine

U zavisnosti od senioriteta, od Softverskog inženjera se očekuje da može da savlada, uradi i isporuči sledeće stvari:

Hard skills

  • Programski jezici:
    • piše efikasan, čist kod za implementaciju feature-a, algoritama i sistema, koji se može održavati.
  • Framework i engine-i:
    • koristi alate za pravljenje, optimizaciju i postavljanje igara na različite platforme.
  • Matematika i algoritmi:
    • razume linearnu algebru, različite vrste računa i strukture podataka, i rešava složene probleme.

Soft skills

  • Rešavanje problema:
    • analizira probleme, identifikuje osnovni uzrok problema, otklanja bagove i optimizuje kod igre.
  • Saradnja i komunikacija:
    • razume zahteve, diskutuje o tehničkim rešenjima i pruža update-e o napretku projekta.
  • Prilagodljivost i kontinuirano učenje:
    • prilagodljiv/-a je i otvoren/-a za učenje o novim tehnologijama, alatima i tehnikama.

Obrazovanje

Programeri igara obično kombinuju formalno obrazovanje i samoobrazovanje kako bi savladali svoju veštinu. Mnogi započinju sticanjem diplomskog stepena iz računarskih nauka, softverskog inženjeringa ili srodnog polja. Ovi programi pružaju čvrste osnove u programskim jezicima, algoritmima i strukturama podataka.

Međutim, dinamična priroda gejming industrije često zahteva dodatno, specijalizovano znanje. Programeri igara često se kontinuirano usavršavaju, prateći najnovije alate, tehnologije i trendove industrije. Onlajn kursevi, radionice i učešće u zajednicama razvoja igara doprinose njihovom ekspertizom. Praktično iskustvo kroz stažiranje ili lične projekte je ključno, omogućavajući budućim programerima da primene teorijsko znanje na stvarne izazove razvoja igara.

Senioritet

U zavisnosti od senioriteta, od Softverskog inženjera se očekuje da može da savlada, uradi i isporuči sledeće stvari:

Junior

  • Pod vođstvom mediora prevodi koncepte dizajna i zahteve u funkcionalni, modularni kod koji se dobro integriše u celokupnu arhitekturu igre. 
  • Identifikuje i izoluje probleme, razume poruke o greškama i koristi debugging alate da locira i popravi bagove u svom kodu.
  • Aktivno doprinosi diskusijama, daje predloge i efikasno komunicira sa drugim članovima tima.
  • Širi svoje znanje o razvoju igara, programskim jezicima i game engine-ima, otvoren/-a je za feedback i kontinuirano unapređuje svoje veštine.

Medior

  • Organizuje kod u komponente za višekratnu upotrebu, definiše strukture podataka i implementira algoritme koji podržavaju različite feature-e igre.
  • Analizira i optimizuje grafičko renderovanje, simulaciju fizike, AI algoritme i druge aspekte igre koji su ključni za performanse.
  • Usmerava i podržava juniore, daje feedback, deli svoje znanje i pomaže im da napreduju u svojim pozicijama.
  • Analizira probleme, predlaže kreativna rešenja i primenjuje ih, prati trendove u industriji i istražuje nove pristupe za poboljšanje gejmpleja, grafike ili drugih aspekata igre.

Senior

  • Pruža tehničko vođstvo i usmerava tim u donošenju programerskih odluka, odabiru odgovarajućih tehnologija i definisanju najboljih praksi.
  • Optimizuje performanse igre i obezbeđuje skalabilnost, identifikuje i adresira bottleneck-ove u performansama i na nivou koda, i na nivou sistema.
  • Pruža smernice i konstruktivan feedback kako bi pomogao/-la juniorima i mediorima da poboljšaju svoje tehničke sposobnosti i često učestvuje u procesima regrutovanja.
  • Upravlja projektima, nadgleda tehničke aspekte igara u razvoju, sarađuje sa drugim departmanima, doprinosi raspodeli resursa i određivanju prioriteta zadataka.
SOFTVERSKI INŽENJER // PROGRAMMING //
SOFTVERSKI INŽENJER // PROGRAMMING //

Resursi

Knjige

  • “Game Engine Architecture” – Jason Gregory
  • “Clean Code: A Handbook of Agile Software Craftsmanship” – Robert C. Martin
  • “Introduction to Game Design, Prototyping, and Development” – Jeremy Gibson Bond
  • “Real-Time Rendering” – Tomas Akenine-Möller, Eric Haines, Naty Hoffman
  • “Programming Game AI by Example” – Mat Bucklan

Pojedinci

  • John Carmack (@ID_AA_Carmack)
  • Mike Acton (@mike_acton)
  • Casey Muratori (@cmuratori)
  • Liz England (@lizardengland)
  • Kim Libreri (@kimlibreri)

Kako izgleda intervju za ovu poziciju?

Novosti

Debatni klub Matematičkog fakulteta Univerziteta u Beogradu organizuje 11. aprila sa početkom u 18 časova u prostorijama Matematičkog fakulteta (Svetog Nikole 39) javnu debatu i panel diskusiju “Ovaj dom bi uveo video igre u obaveznu lektiru”
Razvoj video igara možemo sagledati kroz tehnološki i kreativni aspekt. Pošto je tehnološki aspekt razvoja igara u velikoj meri povezan sa kreativnim, slobodno možemo reći da je gejming programiranje svet za sebe. Gejming industrija pruža mogućnost za razvoj eksperata u najrazličitijim oblastima tehnologije, nudeći mnoštvo pravaca kada su u pitanju karijerni putevi.
Razgovarali smo sa preko 20 seniora u domaćem gejmingu. Kad pogledaš ovih šest epizoda trebalo bi da ti bude mnogo jasnije čime u gejmingu možeš i želiš da se baviš
RisImperdiet ac elementum lobortis consecteturisus pellentesque
RisImperdiet ac elementum lobortis consecteturisus pellentesque