Amusnet е водеща българска технологична компания, специализирана в разработката на софтуерни продукти и иновативни гейминг решения от ново поколение. С фокус върху клиентските нужди и смели стратегии Amusnet се утвърждава като надежден партньор в глобалната iGaming индустрия.
Зад успеха на компанията стои екип от над 850 експерти в различни направления, които ежедневно разширяват портфолиото. Днес то включва над 300 класически и съвременни казино игри, достъпни на повече от 2000 операторски платформи по целия свят.
За DEV.BG Васил Захариев, Front-End Software Engineer, и Никола Къкрински, Manager Art Team в Amusnet, разказват как трансформират креативността в код и как заедно вдъхват живот на land-based игрите на компанията. В разговора се включват още Есин Якуб и Илиян Киряков, които са на позицията Software Engineering Manager, както и Калоян Стоянков, Head of Land-Based R&D Division.
Никола, как постигате баланс между визуалното въздействие и оптимизацията на производителността, когато работите в среди с ограничен хардуер?
Всеки визуален елемент преминава през етапи на анализ и планиране, като използваме комбинация от техники според нуждите на продукта – различни утвърдени софтуери, както и вътрешно разработени практики.
Например Figma е използвана за концептуално споделяне, брейнсторминг и UI/UX дизайн, докато с Photoshop създаваме растерни изображения. В Illustrator работим с векторни елементи, текстури и pattern-и, които интегрираме в различни формати.
За грабващи и реалистични ефекти използваме Adobe After Effects, и когато е необходимо – Element 3D и Blender за 3D елементи. Завършеният продукт се анимира и оптимизира в Spine 2D и се имплементира във Front-end-a.
Нашите разбирания и методи се развиват паралелно с продукта, за да отговорим на непрестанно развиващите се технически изисквания и нужди на пазара.

Васил, каква роля играят техническите ограничения (например памет, GPU performance) при вземането на решения, когато работите с художествени ресурси?
Бих казал – основна. Ограничения като памет и натоварване на видеокартата ни карат внимателно да балансираме между артистичната стойност и производителността.
Например трябва да подсигурим непрекъсната и гладка работа на машината без рестарти, което се оказа предизвикателство. Проучихме и открихме, че можем да разширим инструмент за Pixi.JS с функционалност за засичане на memory leaks.
Такъв изследователски подход е интересен аспект от работата ни, тъй като част от tech stack-a ни е популярен в по-нишови индустрии като gaming, filmmaking и advertising. Съответно не всеки проблем, който срещаме, е толкова добре документиран, и вече разрешен в Stack Overflow. Но за сметка на това библиотеките са open-sourced, което ни позволява да се запознаем подробно с технологията и логически да достигнем до нужните решения, вместо да ги получаваме наготово.
Какво е най-важно в колаборацията ви, за да гарантирате, че UI елементите са не само функционални, но и естетически в синхрон с цялостния дизайн на играта?
Никола: За всяко задание за изработка на визуален елемент, функционалност или модул правим дискусии с Front-end екипа. Обсъждаме и анализираме всички аспекти на разработката и интеграцията, като се стремим към оптимални решения, които отговарят на специфичните ни нужди.
Правим проверки на изготвеното съдържание в предпродуктова среда на тестови установки. Това ни дава възможност лесно да правим корекции до постигане на желаните резултати – както визуално, така и функционално. Използваме различни техники за контрол върху крайния продукт, като често се обръщаме към Spine 2D за гъвкавост и бързи резултати, което намалява необходимостта от чести намеси на Front-end екипа.
Васил: Най-важният фактор за нашия успех е откритата и постоянна комуникация, взаимното разбиране на ограниченията и възможностите на всеки от нас. Когато изграждаме нови компоненти, често провеждаме брейнсторминг сесии за различни идеи и подходи за използване на Pixi.JS и Spine.
Разглеждаме задачите от всички възможни ъгли, което ни позволява да се предизвикваме взаимно и да разширяваме както знанията, така и уменията си.
Explore more
Екипът на Amusnet за разработката на land-based игри
Илиян Киряков, Software Engineering Manager, Back-end teams
Зад всяка визуализация в игрите стои стабилна техническа основа, изградена от Back-end екипа, който създава невидимия механизъм зад играта.
Ролята на един Back-end разработчик е в сърцето на игровата логика – от завъртанията и бонус механиките до обработката на данни и математическите алгоритми. Работим в тясно сътрудничество с Front-end, QA, математическите и хардуерни екипи, за да осигурим безупречен синхрон между всички компоненти на продукта.
Есин Якуб, Software Engineering Manager, Front-end & Back-office teams
Екипите комуникират ежедневно, за да създадат най-доброто продуктово изживяване за потребителя. Използваните технологии в land-based игрите осигуряват гъвкавост, стабилност и визуална привлекателност, както и лесна поддръжка в дългосрочен план. Ключови са ефективното управление на паметта, екранното пространство и рендерирането, за да се гарантират бързи реакции при докосване и плавност на движението.
Финалният продукт е резултат от сътрудничеството между механична конструкция, хардуер, арт, Back–end и Front-end екипи. Необходима е постоянна колаборация между продуктови и engineering мениджъри, инженери и QA специалисти за създаване на комплексни, но и атрактивни за пазара решения.
Калоян Стоянков, Head of Land-Based R&D Division
Първоначално планирахме да ползваме C++ с OpenGL за Front-end разработката, но решихме да преминем към TypeScript поради няколко причини. На пазара има значително повече разработчици на TypeScript, отколкото на C++ и очакваме тази тенденция да се запази.
Използването на TypeScript също е в съответствие с визията на компанията, като насърчава сътрудничество, поддръжка на общи библиотеки и обмен на знания между екипите, а това създава по-силна общност в Amusnet.
Имаме и вълнуващи планове за бъдеща разработка, която е интересно техническо предизвикателство и ще бъде по-лесно и оптимално разрешено с помощта на TypeScript в сравнение със C++.
Какъв съвет бихте дали на някого, който иска да навлезе в game development света?
Васил: Game development-ът е както забавен, така и предизвикателен – най-важното е просто да започнете. Не е важно какъв език или engine ползвате, тъй като онлайн има безброй ресурси, които могат да ви помогнат.
Илиян: Всеки ред код ви приближава към целта. Успешните игри започват с идея и отдаденост, а грешките и постоянството спомагат най-много за придобиването на опит.
Калоян препоръчва книгата „Game Programming Patterns“ и съветва да започнете с репликирането на не твърде сложни и вече познати игри, както и разглеждането на open-source проекти и игрови механики.