Вчора читав доповідь на невеликому місцевому заході GamesLab .
Тема доповіді: Ігри в браузері - з «чому» готують і як «їдять». Постарався за 30 хвилин розповісти про основні технології і про те що робити з готовою грою. Все це в першу чергу для інді. Про великі компанії можна і у гугла спитати.
Статтю розбив на дві частини. Це перша частина, де я коротко розгляну технології розробки ігор. Загалом, багато капітанства, але я намагався розповісти і у справі. Ця стаття невелика «витримка» найкориснішою інформації.
Існує 2 варіанти зробити гру для браузера: npapi плагіни і html5.
Найпопулярніші плагіни: flash player (далі по тексту просто flash) і unity web player.
Після того, як Google вирішив вбити NPAPI через проблеми з безпекою (і правильно зробив), unity web player помер. І справа навіть не в тому, що він більше не працює в хромі, а в тому, що сама компанія Unity оголосила про припинення розвитку і підтримки плагіна.
Хлопці, які розробляють Piratecraft , Поділилися інформацією:
після першого етапу відключення npapi в хромі (коли все ще можна було активувати unity плагін вручну через настройки) відсоток пограти, серед знову встановили гру, став значно нижче (та й загалом відсоток «технічних відвалів» завжди був вище в порівнянні з тим же flash ).
А ось Flash Player вижив.
Компанія google вирішила, що вмирати flash поки рано. І стала разом з компанією adobe розробляти версію для chrome, яка заснована на новому api для браузерів ppapi. До речі кажучи, люди дуже скаржаться на те, що pepper flash в chrome значно гірше працює, ніж npapi flash в інших браузерах.
Я не стану агітувати починати розробку з flash, якщо ви до цього з ним не працювали. Але ось кілька плюсів «на подумати»:
- На ActionScript3 величезна кількість бібліотек і готового коду, який можна використовувати в своїх проектах. Якщо ви знайшли приклад коду 2011-го року - він все ще не втратив актуальність. Все буде працювати і прекрасно виконувати свої функції. Все це величезна база для навчання і кінцевого використання. Так само сама простота, з якою можна отримати кінцевий результат, вражає і є серйозним плюсом.
- Flash все ще затребуваний. Після всього галасу навколо його смерті багато кинули технологію, а, між тим, велика кількість проектів як розроблялися, так і розробляються на flash. Мені приходить багато пропозицій на linkedin. Роботи так само вистачає і на upwork, і на freelancer.com (спеціально вивчив попит)
- Можна бути інді! Все ж хочуть бути інді? =) Поки одні бігли з flash, інші продовжують робити і продавати ігри порталам. Звичайно, немає вже тих дурманних розум цифр, але заробити на життя можна (докладніше в наступній статті).
Найчастіше використання flash виправдано і навіть вкрай бажано. Просто подумайте, чи підходить цей інструмент для вирішення вашої задачі.
Йдемо далі, що ж таке HTML5?
HTML5 - це не мова розмітки.
HTML5 - це набір технологій для розробки web додатків.
Нам, як розробникам ігор, в першу чергу цікаві такі технології:
- javascript - мова програмування;
- canvas - отрисовка простий 2d графіки;
- webgl - низкоуровневая і важча отрисовка 2d і 3d графіки.
Коротко про плюси:
- Основним плюсом HTML5 є його кроссплатформенность. В теорії, він повинен працювати на всьому, де є браузер. І коли-небудь так і буде. А поки, все дружно чекаємо світлого майбутнього і ставимо милиці, щоб все працювало добре і на максимальній кількості платформ.
- Ситуація з бібліотеками не гірше ніж на flash. Більшість бібліотек і інструментів з відкритим вихідним кодом (закрити вихідний код js не так вже й просто)
- Таргет для експорту з популярних движків (unity, unreal engin і т.д.).
Через особливості технології та попиту на ігри, написані на HTML5, варто окремо розглядати HTML5 WebGL і HTML5 Canvas.
HTML5 WebGL - «товстий». Він працює швидше, тому що отрисовка йде на відеокарті. Але це ж є і мінусом, тому що він підтримується на меншій кількості платформ. Найбільше з цим проблем на «стокових» (вбудованих в прошивку телефону) браузерах трохи більше старих телефонів.
HTML5 Canvas - «тонкий». Але в той же час і «кволий». =) Він підтримується на всіх пристроях (ну крім відвертої давнини). Але при цьому продуктивність залишає бажати кращого. Кілька рухомих об'єктів вже можуть стати проблемою (дуже сильно залежить від браузера і пристрої).
Коротко порівняємо плюси і мінуси платформ. Можна придумати тисячі пунктів для порівняння, але я зупинився на цих трьох:
- Чим менше білд, тим більше користувачів дочекаються завантаження гри і пограють в неї. У flash і Canvas з цим все добре і, в першу чергу, впирається в ресурси самої гри (графіка, звуки і т.п.). А ось на WebGL все трохи гірше. Якщо це експорт з великого движка, то він потягне за собою свої «товсті» бібліотеки, необхідні для роботи. На спеціально «заточених» WebGL двигунах з цим краще.
- Підтримка на мобільних пристроях наступний важливий, на мою думку, пункт. Flash, за заповітом Стіва, що не підтримується в мобільних браузерах (але зібрати мобільну версію додатка в стор можна!). З html5 все краще, в кінці кінців, в цьому його сильна сторона. WebGL на свіжих телефонах працює дуже навіть не погано. Принаймні, на двигунах під це «заточених» (наприклад: threejs ). З експорту з unity і unreal все як і раніше погано. Навіть якщо гра працює, то вельми не стабільно.
- Що стосується обмеження за жанрами, то тут в лідерах WebGL. По суті, на ньому можна зробити все, що душа забажає. Але чим «наворочені» гра, тим менше платформ вона буде підтримувати. З flash теж все досить не погано. Але багато жанрів робити просто недоцільно. А ось canvas - суцільне обмеження. В першу чергу через продуктивності. Кросплатформеність вимагає жертв. =)
Ще одним пунктом порівняння я хотів зробити затребуваність на ринку. Але гри на всіх перерахованих технологіях потрібні, тому що кожна технологія покликана вирішувати свої завдання, а тому затребувана в своїй галузі застосування. Не буває «срібної кулі», є лише інструменти допомагають вирішувати поставлені завдання.
У другій частині доповіді я розглядав попит і область застосування ігор у браузері в залежності від технології, на якому вони написані. Про це я розповім у другій статті, а то і так дуже багато тексту вийшло. =)
Буду радий вашим коментарям.
Дякуємо.
PS Повторюся, що стаття багато в чому капітанська. Але це обумовлено аудиторією доповіді, яку я читав (багато в чому це студенти).
UPD: Велике спасибі Sergey Batishchev за коментарі. Вніс зміни до статті.
Все ж хочуть бути інді?