Unity developer

Unity developer/-ka je specijalizovan/-a za kreiranje video-igara koristeći game engine Unity. Posjeduje podrobno razumijevanje principa razvoja igara, programskih jezika i tehnika dizajna. Unity developer/-ka je odgovoran/-a za oživljavanje vizije gejm dizajnera implementacijom mehanika igre, korisničkih interfejsa i interaktivnih elemenata. U svom svakodnevnom radu, Unity developer/-ka koristi C# ili UnityScript (varijantu JavaScript-a) za pisanje koda koji kontroliše ponašanje objekata i likova u igri. Pošto je Unity multiplatformski engine, osoba na ovoj pozicji mora poznavati sve sisteme na kojima bi igra radila (PC, konzole i mobilne telefone).

Blisko sarađuje sa drugim gejm developerima kako bi integrisao/-la art, animacije i zvučne efekte u igru. Takođe, optimizuje performanse i rješava sve tehničke probleme koji se mogu pojaviti tokom razvoja igre. Može da kreira prilagođene skripte i plugin-ove koji poboljšavaju funkcionalnost Unity-a ili da sarađuje sa drugim developerima na integraciji third-party alata i biblioteka. Sve u svemu, Unity developer/-ka posjeduje odlične tehničke vještine, kreativnost i sposobnost za rješavanje problema.

Alati

Unity

Visual Studio

MonoDevelop

Blender

Photoshop

Substance Painter

Maya

3ds Max

Adobe Illustrator

Saradnja sa drugim timovima

Unity developer/-ka blisko sarađuje sa gejm dizajnerima kako bi razumio/-jela njihovu viziju, odredio/-la tehničke zahtjeve i implementirao/-la mehanike igre i sisteme u skladu sa tim. Pruža feedback o izvodljivosti određenih dizajnerskih ideja i sarađuje na iteracijama i usavršavanju mehanika igre kako bi se postiglo željeno igračko iskustvo. Takođe, sarađuje sa artistima i animatorima. Oni udruženo rade na integraciji arta, animacija i vizuelnih efekata u game engine. Unity developer/-ka obezbjeđuje pravilno uvođenje, optimizovanje i prikazivanje asset-a u okruženju igre. Takođe može blisko sarađivati sa dizajnerima zvuka i kompozitorima kako bi integrisao/-la auditivne elemente i stvorio/-la koherentno audio-vizuelno iskustvo za igrače.

Pored toga, Unity developer/-ka često sarađuje sa drugim programerima ili inženjerima u razvojnom timu. Oni mogu da rade zajedno na razvoju i integraciji custom alata, skripti ili plugin-ova, kako bi poboljšali proces razvoja igre ili proširili funkcionalnost Unity-a. Saradnja sa QA testerima takođe je ključna, jer Unity developer/-ka treba da popravi sve bagove ili probleme koji se pojave tokom testiranja. Njihovi zajednički napori doprinose stvaranju imerzivnog i prijatnog igračkog iskustva.

Vještine

U zavisnosti od senioriteta, od Unity developera/-ke se očekuje da može da savlada, uradi i isporuči sljedeće stvari:

Hard skills

  • Programiranje:
    • poznaje jezike kao što su C# ili UnityScript da bi napisao/-la kod koji kontroliše ponašanje objekata u igri, implementira mehanike igre i druge funkcije.
  • Unity game engine:
    • zna kako da radi sa Unity-em, uvodi i optimizuje asset-e, kreira objekte u igri, rukuje animacijama i implementira elemente korisničkog interfejsa.
  • Troubleshooting:
    • otklanja bagove u kodu, optimizuje performanse i rješava probleme kompatibilnosti.

Soft skills

  • Saradnja:
    • ima razvijene komunikacione vještine, razumije različite perspektive, radi sa ostatkom tima na postizanju zajedničkog cilja i stvaranju jedinstvenog igračkog iskustva.
  • Prilagodljivost:
    • prihvata promjene, revizije i feedback tokom razvojnog procesa igre, prilagođava se novim tehnologijama, alatima i metodologijama.
  • Rješavanje problema i kreativnost:
    • razmišlja kreativno i pristupa problemima iz različitih uglova kako bi prevazišao/-la izazove i pronašao/-la inovativna rješenja.

Senioritet

U zavisnosti od senioriteta, od Unity developera/-ke se očekuje da može da savlada, uradi i isporuči sljedeće stvari:

Junior

  • Implementira osnovne mehanike igre, kao što su kretanje karaktera, detekcija sudara, osnovno ponašanje neprijatelja i drugi osnovni elementi igre.
  • Identifikuje i popravlja uobičajene bagove, rješava runtime greške i osnovne tehničke probleme koji se mogu pojaviti tokom razvoja. 
  • Prati dizajnerske i tehničke smjernice, implementira specifikacije u vezi sa UI/UX dizajnom, integracijom asset-a, optimizacijom performansi i drugim zahtjevima projekta.
  • Otvoren/-a za feedback, preuzima inicijativu za proširivanje svojih znanja i vještina, i efikasno doprinosi kao dio razvojnog tima.

Medior

  • Samostalno dizajnira složene mehanike, poput naprednog ponašanja vještačke inteligencije, simulacija zasnovanih na fizici i kompleksnije interakcije igrača u svijetu igre.
  • Optimizuje performanse igre, analizira i poboljšava efikasnost koda, implementira level-of-detail sisteme i upravlja korišćenjem resursa.
  • Mentoriše juniore, daje smjernice i pregleda njihov kod kako bi osigurao/-la poštovanje najboljih praksi i standarda kvaliteta.
  • Nezavisno identifikuje i rješava probleme koji se javljaju tokom razvoja igre, bilo da se odnose na performanse, kompatibilnost ili funkcionalnost.

Senior

  • Upravlja tehničkim aspektom razvoja igre, definiše arhitekturu i framework projekta, i donosi odluke u vezi sa implementacijom složenih sistema.
  • Mentoriše juniore i mediore, pruža vrijedne uvide, pregleda kod, nudi konstruktivan feedback i pomaže drugim programerima da unaprijede svoje vještine i znanje.
  • Identifikuje bottleneck-ove, optimizuje korišćenje resursa i obezbjeđuje da igra nesmetano radi na različitim platformama i uređajima.
  • Aktivno istražuje nove alate, framework-ove i tehnike koje mogu poboljšati proces razvoja ili uvesti inovativne feature-e.
UNITY DEVELOPER // PROGRAMMING //
UNITY DEVELOPER // PROGRAMMING //

Obrazovanje

Za nekoga ko je zainteresovan za programiranje u gejming industriji sticanje diplome iz računarstva, softverskog inženjeringa ili razvoja igara bi bilo veoma korisno. Ovi programi obično pokrivaju osnovne koncepte u programiranju, algoritme, strukture podataka i prakse razvoja softvera — sve osnovne vještine za programere igara. Pored toga, kursevi koji se fokusiraju na grafičko programiranje, game engine-e (kao što su Unity ili Unreal Engine) i vještačku inteligenciju (AI) za igre mogu pružiti specijalizovano znanje relevantno za industriju. Dobro poznavanje programskih jezika kao što su C++, C# ili Python posebno je važno za razvoj igara, jer se ovi jezici široko koriste u game engine-ima, u kreiranju gejmplej sistema i alata za igru.

Pored formalnog obrazovanja, sticanje praktičnog iskustva kroz lične projekte, prakse ili učešće u game jam-ovima može poboljšati tvoje vještine i portfolio. Izrada i objavljivanje igara nezavisno ili u saradnji sa drugima može pokazati tvoju sposobnost da primijeniš naučene koncepte na razvoja igre u stvarnom svijetu. Umrežavanje sa profesionalcima u industriji putem onlajn zajednica ili industrijskih događaja, takođe, može ti pružiti dragocjene uvide i prilike. Ako budeš u toku sa trendovima, tehnologijama i najboljim praksama u programiranju igara, dodatno ćeš se pripremiti za uspješnu karijeru u ovom dinamičnom i konkurentnom polju.

Resursi

Knjige

  • Unity in Action: Multiplatform Game Development in C#” – Joe Hocking
  • “Mastering Unity 2D Game Development” – Simon Jackson
  • “Learning C# by Developing Games with Unity” – Harrison Ferrone
  • Unity Game Development Cookbook” – Paris Buttfield-Addison, Jon Manning, Tim Nugent
  • Unity Game Development Essentials” – Will Goldstone

Pojedinci

  • Sebastian Lague (@SebastianLague)
  • Brackeys (@Brackeys)
  • Mike Geig (@mikegeig)
  • Jason Weimann (@JasonWeimann)
  • Ryan Hipple (@roboryantron)

Kako izgleda intervju za ovu poziciju?

Novosti

UNITY DEVELOPER // PROGRAMMING //
UNITY DEVELOPER // PROGRAMMING //