Огляд ігрового движка Unity3D - переваги та недоліки
Unity3D - кроссплатформенний ігровий двигун від компанії Unity Technologies. Історія створення движка досить цікава та повчальна. Цікава, бо двоє хлопців захотіли зробити гру, але їм не підходили існуючі інструменти. І вони вирішили зробити свій движок, а потім уже робити на ньому гру. І після того, як вони зробили двигун, вони зрозуміли, що їм не так і цікаво робити ігри, а більше подобається займатися безпосередньо движком. Так і почалася історія одного з найвідоміших і найпотужніших двигунів. А повчальна ця історія тому, що ніколи не знаєш, чим обернеться той чи інший почин. Але ми трохи відійшли від теми. Повертаємося до двигуна.
Як створювати ігри в Unity?
Юніті використовує компонентно-орієнтований підхід. Все у грі – це об'єкт, куди додані різні компоненти. Наприклад, якщо ми робимо платформер, ми додаємо GameObject, і до цього GameObject додаємо графічний компонент (для малювання гравця) та компонент управління (щоб можна було керувати гравцем клавіатурою або мишкою). Таких різних компонентів можна додати будь-яку кількість до будь-якого GameObject. Тобто створення гри в Unity - це додавання GameObject-ів, і додавання їм потрібних компонентів.
Для чого підійде і для чого ні
Підтримувані платформи
Один з козирів Юніті — це список платформ, що підтримуються, де може запускатися програми. Unity працює майже скрізь - на ПК (всі операційні системи), на Android, на iOS, на SmartTV, в браузері, на різних екзотичних системах - наприклад, Tizen OS. Щоправда, не обійшлося без ложки дьогтю. Якщо ви працюєте з чимось специфічним, наприклад, низькорівневий доступ до заліза в тому ж Андроїді - будьте готові писати частину коду на Java,потім компонувати все це з Юніті. Аналогічно з iOS. Також, зібрати програму під iOS можна лише з-під MacOS X. Тобто, не маючи Макбука або чогось схожого, гру на iOS ви так просто не випустите. Це не недолік Юніті, це обмеження Apple. Але ситуація саме така. Так що у випадку, якщо ви орієнтуєтеся на iOS - подбайте про середовище складання вашої гри.
Як і де розробити гру на движку
Сила ассетів та ком'юніті
Недоліки
Звісно, є й мінуси. Перший недолік – це повільна робота. Якщо порівнювати з іншими двигунами, той же LibGDX або Cocos2D-X, Юніті повільний. Я знаю, що у цих двигунів різні цілі, і що Unity орієнтований на більші проекти, і наворотів у Юніті більше, але факт залишається фактом. Для маленької 2D гри, якогось платформера, Юніті працюватиме повільніше, ніж альтернативи. Ви не помітите цього на ПК, але це може бути помітно на мобільних пристроях. Наступне — це великий розмір програми. Великий - це означає, що якщо зібрати порожній проект з налаштуваннями за промовчанням для Андроїд, ви отримаєте файл інсталяції близько 20 мегабайт. Для ПК ця цифра буде близько 100 мегабайт. Для великих проектів розміром в гігабайти це не страшно, але для маленьких Андроїд-ігор, де вся графіка і звуки займають п'ять мегабайт, тягнути додаткових 20 мегабайт може бути неприємно. Ще один мінус - це як би не мінус Юніті, але пов'язаний з ним. Орієнтація на об'єкти та скрипти, що прикріплені до цих об'єктів, підштовхує розробника створювати погану архітектуру. Додати нову можливість здається такою простою справою. Всього написати скрипт, і причепити його до об'єкта. Але зі зростанням проекту зв'язки між скриптами та об'єктами ускладнюються, і додавати нові фічі стає все важчим і важчим, гра стаєповільнішою і глючною. Це чимось нагадує ситуацію з Delphi та чіплянням обробників подій на кнопки. Знаючі люди зрозуміють. Хто не в темі, скажімо так, це погано для великих додатків. Зрозуміло, що і на Unity можна писати інакше, контролювати кількість скриптів та зв'язки між ними. Більше того, великі проекти так і пишуть. Але недосвідчені розробники ліплять скрипти на об'єкти, а двигун їх не сварить за це.
Якщо ви хочете написати свою іграшку, але не хочете сильно морочитися з вивчення якоїсь мови програмування - Unity вам підійде. Накидати об'єктів і зв'язати їх між собою вийде і без знання мови програмування. У разі проблем велика спільнота вам допоможе. Ну а якщо ви вирішите зайнятися іграми серйозно, Юніті теж буде добрим вибором. Як-не-як, це повноцінний потужний двигун, в якому можна писати проекти AAA-класу.