Преглед на игровия двигател Unity3D - предимства и недостатъци
Unity3D е крос-платформен двигател за игри, разработен от Unity Technologies. Историята на създаването на двигателя е доста интересна и поучителна. Интересно, защото две момчета искаха да направят игра, но съществуващите инструменти не им подхождаха. И те решиха да направят свой собствен двигател и след това да направят игра на него. И след като направиха двигателя, разбраха, че не им е толкова интересно да правят игри, а по-скоро обичат да се занимават директно с двигателя. Така започва историята на един от най-известните и мощни двигатели. И тази история е поучителна, защото никога не се знае как ще се развие това или онова начинание. Но малко сме извън темата. Връщаме се към двигателя.
Как да създавам игри в Unity?
Unity използва подход, ориентиран към компоненти. Всичко в играта е обект, към който се добавят различни компоненти. Например, ако правим платформена игра, добавяме GameObject и към този GameObject добавяме графичен компонент (за рисуване на играча) и контролен компонент (така че играчът да може да се управлява с клавиатура или мишка). Можете да добавите произволен брой от тези различни компоненти към всеки GameObject. Тоест създаването на игра в Unity е добавяне на GameObjects и добавяне на необходимите компоненти към тях.
За какво е добре и за какво не
Поддържани платформи
Една от силните страни на Unity е списъкът с поддържани платформи, на които могат да работят приложения. Unity работи почти навсякъде - на компютър (всички операционни системи), на Android, на iOS, на SmartTV, в браузъра, на различни екзотични системи - например Tizen OS. Вярно, не без муха в мехлема. Ако работите с нещо специфично, например достъп на ниско ниво до хардуер в същия Android, бъдете готови да напишете част от кода на Java,след това свържете всичко с Unity. Същото с iOS. Освен това можете да създадете приложение за iOS само от MacOS X. Тоест, без MacBook или нещо подобно, не можете просто да пуснете игра на iOS. Това не е недостатък на Unity, а ограничение на Apple. Но ситуацията е точно такава. Така че, ако сте насочени към iOS, погрижете се за средата за изграждане на вашата игра.
Как и къде да разработите игра на двигателя
Силата на активите и общността
недостатъци
Разбира се, има и недостатъци. Първият недостатък е бавната работа. В сравнение с други двигатели, същия LibGDX или Cocos2D-X, Unity е бавен. Знам, че тези двигатели имат различни цели и че Unity е фокусиран върху по-големи проекти и има повече звънци и свирки в Unity, но фактът остава. За малка 2D игра, някакъв вид платформинг, Unity ще работи по-бавно от алтернативите. Няма да го забележите на компютър, но може да се забележи на мобилни устройства. Следва големият размер на приложението. Large - това означава, че ако изградите празен проект от настройките по подразбиране за Android, ще получите инсталационен файл от около 20 мегабайта. За компютър тази цифра ще бъде около 100 мегабайта. За големи проекти с размер на гигабайт това не е проблем, но за малки игри с Android, където всички графики и звуци заемат пет мегабайта, изтеглянето на допълнителни 20 мегабайта може да бъде неприятно. Още един минус - не е като минуса на Unity, но е свързан с него. Фокусирането върху обекти и скриптове, които са прикачени към тези обекти, насърчава разработчика да създава лоша архитектура. Добавянето на нова функция изглежда толкова лесно. Просто напишете скрипт и го прикачете към обекта. Но с разрастването на проекта връзките между скриптове и обекти стават по-сложни и става все по-трудно и по-трудно да се добавят нови функции, игратапо-бавен и по-бъгав. Това донякъде напомня на ситуацията с Delphi и закачането на манипулатори на събития към бутони. Запознатите ще разберат. Който не е в темата - да кажем, че това е лошо за големи приложения. Ясно е, че можете да пишете различно в Unity, да контролирате броя на скриптовете и връзките между тях. Освен това големите проекти се пишат така. Но неопитни разработчици извайват скриптове върху обекти и двигателят не ги кара за това.
Ако искате да напишете своя собствена играчка, но не искате да се занимавате с изучаването на език за програмиране, Unity е за вас. Ще бъде възможно да се скицират обекти и да се свързват помежду им без познаване на език за програмиране. В случай на проблеми голяма общност ще ви помогне. Е, ако решите да се занимавате сериозно с игри, Unity също ще бъде добър избор. В крайна сметка това е пълноправен мощен двигател, в който можете да пишете проекти от клас AAA.