Софтверски инженер/ка

Софтверски инженер/ка е одговорен/на за дизајнирање, развој и одржување на софтверски системи од кои зависи играта Има детално познавање за компјутерски програмски јазици, алгоритми и принципи на развој на софтвер. Соработува со дизајнери/ки на игри и уметници за да ги преведе креативните концепти во функционални искуства за игри. Тој/таа работи на различни аспекти на развојот на играта, вклучувајќи графичко рендерирање, симулација на физичка, вештачка интелигенција, вмрежување и кориснички интерфејси.

Софтверскиот инженер/ка често има специјализирано познавање за енџини и frameworks. Ги оптимизира перформансите на играта, обезбедува непречена механика на играта и ги решава техничките предизвици што се појавуваат за време на процесот на развој. Поседува развиени вештини за решавање проблеми, бидејќи мора да идентификува и поправа грешки, да го оптимизира кодот и да дебагира за да создаде стабилно и пријатно искуство при играњето. Тој/таа треба да е во тек со најновите технологии и трендови во индустријата за игри за да примени иновативни техники и да го подобри севкупниот квалитет на видео игрите на кои работи.

Алати

Unity

Unreal Engine

C++

C#

Java

Python

Visual Studio

Git

Perforce

СОРАБОТКА СО ДРУГИ ТИМОВИ

Софтверскиот инженер/ка тесно соработува со дизајнерите/ките на игри за да ја разбере визијата и барањата на играта, ефикасно да ја имплементира механиката, да ги оптимизира перформансите и да ги реши техничките ограничувања. Соработува со уметници за да интегрира графика, анимации и визуелни ефекти во енџинот на играта. Исто така, ја обезбедува потребната техничка поддршка за да се обезбеди правилна имплементација и прикажување на уметничките средства во видео играта.

Покрај тоа, тој работи со QA тестери/ки за да ги идентификува и поправа грешките, осигурувајќи дека играта функционира како што е планирано. Соработува и со мрежните инженери за да развие можност за играње на повеќе играчи и да ги оптимизира перформансите на мрежата. Овие соработки се одговорни за стабилно и пријатно искуство за време на играњето.

ВЕШТИНИ

Во зависност од стажот, се очекува оваа позиција да може да го совлада, прави и испорача следново:

ТЕХНИЧКИ ВЕШТИНИ(HARD SKILLS)

  • Програмски јазици
    • Пишува ефикасен, чист и одржлив код за имплементација на функции, алгоритми и системи.
  • Frameworks и енџини
    • Користи алатки за градење, оптимизирање и распоредување игри на различни платформи.
  • Математика и алгоритми
    • Разбира линеарна алгебра, различни видови пресметки и структури на податоци и решава сложени проблеми.

МЕКИ ВЕШТИНИ (SOFT SKILLS)

  • Решавање проблеми
    • Ги анализира проблемите, ја бара основната причина од каде произлегуваат тие проблеми, ги поправа грешките и го оптимизира кодот на играта.
  • Соработка и комуникација
    • Ги разбира барањата, разговара за техничките решенија и обезбедува ажурирања за напредокот на проектот.
  • Приспособливост и континуирано учење
    • Прилагодлив/а и отворен/а за учење за нови технологии, алатки и техники.

Образование

За некој што е заинтересиран за програмирање во индустријата за игри, стекнувањето диплома по компјутерски науки, софтверско инженерство или развој на игри би било многу корисно. Овие програми обично покриваат основни концепти за програмирање, алгоритми, структури на податоци и практики за развој на софтвер – сите основни вештини за програмерите на игри. Покрај тоа, курсевите кои се фокусираат на графичко програмирање, енџини за игри (како што се Unity или Unreal Engine) и вештачка интелигенција (AI) за игри може да обезбедат специјализирано знаење релевантно за индустријата. Доброто познавање на програмските јазици како што се C++, C# или Python е особено важно за развој на игри, бидејќи овие јазици се широко користени во енџините за игри, при креирање системи за играње и софтвери за игра.

Покрај формалното образование, стекнувањето практично искуство преку лични проекти, практиканти или учество на гејм џем настани може да ги подобри вашите вештини и портфолио. Создавањето и објавувањето игри самостојно или во соработка со други може да ја покаже вашата способност да ги применувате научените концепти во развојот на игри во реалниот свет. Вмрежувањето со професионалци од индустријата преку онлајн заедници или настани во индустријата, исто така, може да ви обезбеди вредни сознанија и можности. Следењето на трендовите, технологиите и најдобрите практики во програмирањето на игри дополнително ќе ве подготви за успешна кариера во ова динамично и конкурентно поле.

СТАЖ

Во зависност од стажот, се очекува оваа позиција да може да го совлада, прави и испорача следново:

ЈУНИОР

  • Под водство на медиор, дизајнерските концепти и барања ги преведува во функционален, модуларен код кој добро се интегрира во целокупната архитектура на играта.
  • Идентификува и изолира проблеми, ги разбира пораките за грешки и користи алатки за отстранување грешки (debugging) за да ги лоцира и поправа грешките во кодот.
  • Активно дискутира, дава предлози и ефективно комуницира со другите членови на тимот.
  • Го проширува своето знаење за развој на игри, програмски јазици и енџини за игри, отворен е за повратни информации и постојано ги подобрува своите вештини.

МЕДИОР

  • Го организира кодот во компоненти за повеќекратна употреба, ги дефинира структурите на податоци и имплементира алгоритми кои поддржуваат различни карактеристики на играта.
  • Анализира и оптимизира графичко прикажување, физичка симулација, алгоритми за вештачка интелигенција и други критични аспекти на играта.
  • Ги насочува и поддржува јуниорите, дава повратни информации, го споделува своето знаење и им помага да напредуваат на нивните позиции.
  • Ги анализира проблемите, предлага креативни решенија и ги имплементира, ги следи трендовите во индустријата и истражува нови пристапи за подобрување на играта, графиката или другите аспекти на играта.

СЕНИОР

  • Обезбедува техничко водство и го води тимот во донесувањето одлуки за развој, изборот на соодветни технологии и дефинирањето на најдобрите практики.
  • Ги оптимизира перформансите на играта и обезбедува приспособливост, ги идентификува и адресира тесните грла на перформансите и на ниво на код и на ниво на систем.
  • Обезбедува насоки и конструктивни повратни информации за да им помогне на јуниорите да ги подобрат своите технички вештини и често учествува во процесите на регрутирање.
  • Управува со проекти, ги надгледува техничките аспекти на игрите во развој, соработува со други оддели, придонесува за распределба на ресурсите и приоритизација на задачите.
СОФТВЕРСКИ ИНЖЕНЕР // ПРОГРАМИРАЊЕ //
СОФТВЕРСКИ ИНЖЕНЕР // ПРОГРАМИРАЊЕ //

РЕСУРСИ

КНИГИ

  • “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

ПОЕДИНЦИ

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

Како изгледа интервјуто за оваа позиција?

Вести

Нашата единствена веб платформа за професионална ориентација во доменот на игри е (де)локализирана на уште три јазици, со дополнителна БХС верзија наменета за корисници од целиот регион!
Работењето во индустријата за игри е секогаш возбудливо патување, но процесот на добивање работа е исто толку возбудлив како и самите игри. Ако имате страст за игри, секое ниво во процесот ќе ви донесе задоволство, а не само предизвик. Со развојот на индустријата се зголемија и стандардите во неа, па затоа е важна добрата подготовка. Во овој блог можете да најдете совети кои ќе ви помогнат да се истакнете во морето на кандидати
Зборувавме со над 20 сениори во српската гејминг индустрија. Кога ќе ги изгледате овие шест епизоди, би требало да ви стане многу појасно што можете и што сакате да направите во гејмингот. Ќе ги дознаете сите најбарани професии, најнови алати и различни позиции во индустријата.
СОФТВЕРСКИ ИНЖЕНЕР // ПРОГРАМИРАЊЕ //
СОФТВЕРСКИ ИНЖЕНЕР // ПРОГРАМИРАЊЕ //