Донецкий техникум промышленной автоматики

Ігри в браузері (частина 1)

Вчора читав доповідь на невеликому   місцевому заході GamesLab Вчора читав доповідь на невеликому місцевому заході GamesLab .

Тема доповіді: Ігри в браузері - з «чому» готують і як «їдять». Постарався за 30 хвилин розповісти про основні технології і про те що робити з готовою грою. Все це в першу чергу для інді. Про великі компанії можна і у гугла спитати.

Статтю розбив на дві частини. Це перша частина, де я коротко розгляну технології розробки ігор. Загалом, багато капітанства, але я намагався розповісти і у справі. Ця стаття невелика «витримка» найкориснішою інформації.

Існує 2 варіанти зробити гру для браузера: npapi плагіни і html5.

Найпопулярніші плагіни: flash player (далі по тексту просто flash) і unity web player.

Після того, як Google вирішив вбити NPAPI через проблеми з безпекою (і правильно зробив), unity web player помер Після того, як Google вирішив вбити NPAPI через проблеми з безпекою (і правильно зробив), unity web player помер. І справа навіть не в тому, що він більше не працює в хромі, а в тому, що сама компанія Unity оголосила про припинення розвитку і підтримки плагіна.

Хлопці, які розробляють Piratecraft , Поділилися інформацією:

після першого етапу відключення npapi в хромі (коли все ще можна було активувати unity плагін вручну через настройки) відсоток пограти, серед знову встановили гру, став значно нижче (та й загалом відсоток «технічних відвалів» завжди був вище в порівнянні з тим же flash ).

А ось Flash Player вижив А ось Flash Player вижив.

Компанія google вирішила, що вмирати flash поки рано. І стала разом з компанією adobe розробляти версію для chrome, яка заснована на новому api для браузерів ppapi. До речі кажучи, люди дуже скаржаться на те, що pepper flash в chrome значно гірше працює, ніж npapi flash в інших браузерах.

Я не стану агітувати починати розробку з flash, якщо ви до цього з ним не працювали. Але ось кілька плюсів «на подумати»:

  1. На ActionScript3 величезна кількість бібліотек і готового коду, який можна використовувати в своїх проектах. Якщо ви знайшли приклад коду 2011-го року - він все ще не втратив актуальність. Все буде працювати і прекрасно виконувати свої функції. Все це величезна база для навчання і кінцевого використання. Так само сама простота, з якою можна отримати кінцевий результат, вражає і є серйозним плюсом.
  2. Flash все ще затребуваний. Після всього галасу навколо його смерті багато кинули технологію, а, між тим, велика кількість проектів як розроблялися, так і розробляються на flash. Мені приходить багато пропозицій на linkedin. Роботи так само вистачає і на upwork, і на freelancer.com (спеціально вивчив попит)
  3. Можна бути інді! Все ж хочуть бути інді? =) Поки одні бігли з flash, інші продовжують робити і продавати ігри порталам. Звичайно, немає вже тих дурманних розум цифр, але заробити на життя можна (докладніше в наступній статті).

Найчастіше використання flash виправдано і навіть вкрай бажано. Просто подумайте, чи підходить цей інструмент для вирішення вашої задачі.

Йдемо далі, що ж таке HTML5?

Йдемо далі, що ж таке HTML5

HTML5 - це не мова розмітки.

HTML5 - це набір технологій для розробки web додатків.

Нам, як розробникам ігор, в першу чергу цікаві такі технології:

  • javascript - мова програмування;
  • canvas - отрисовка простий 2d графіки;
  • webgl - низкоуровневая і важча отрисовка 2d і 3d графіки.

Коротко про плюси:

  1. Основним плюсом HTML5 є його кроссплатформенность. В теорії, він повинен працювати на всьому, де є браузер. І коли-небудь так і буде. А поки, все дружно чекаємо світлого майбутнього і ставимо милиці, щоб все працювало добре і на максимальній кількості платформ.
  2. Ситуація з бібліотеками не гірше ніж на flash. Більшість бібліотек і інструментів з відкритим вихідним кодом (закрити вихідний код js не так вже й просто)
  3. Таргет для експорту з популярних движків (unity, unreal engin і т.д.).

Через особливості технології та попиту на ігри, написані на HTML5, варто окремо розглядати HTML5 WebGL і HTML5 Canvas.

HTML5 WebGL - «товстий». Він працює швидше, тому що отрисовка йде на відеокарті. Але це ж є і мінусом, тому що він підтримується на меншій кількості платформ. Найбільше з цим проблем на «стокових» (вбудованих в прошивку телефону) браузерах трохи більше старих телефонів.

HTML5 Canvas - «тонкий». Але в той же час і «кволий». =) Він підтримується на всіх пристроях (ну крім відвертої давнини). Але при цьому продуктивність залишає бажати кращого. Кілька рухомих об'єктів вже можуть стати проблемою (дуже сильно залежить від браузера і пристрої).

Коротко порівняємо плюси і мінуси платформ. Можна придумати тисячі пунктів для порівняння, але я зупинився на цих трьох:

  1. Чим менше білд, тим більше користувачів дочекаються завантаження гри і пограють в неї. У flash і Canvas з цим все добре і, в першу чергу, впирається в ресурси самої гри (графіка, звуки і т.п.). А ось на WebGL все трохи гірше. Якщо це експорт з великого движка, то він потягне за собою свої «товсті» бібліотеки, необхідні для роботи. На спеціально «заточених» WebGL двигунах з цим краще.
  2. Підтримка на мобільних пристроях наступний важливий, на мою думку, пункт. Flash, за заповітом Стіва, що не підтримується в мобільних браузерах (але зібрати мобільну версію додатка в стор можна!). З html5 все краще, в кінці кінців, в цьому його сильна сторона. WebGL на свіжих телефонах працює дуже навіть не погано. Принаймні, на двигунах під це «заточених» (наприклад: threejs ). З експорту з unity і unreal все як і раніше погано. Навіть якщо гра працює, то вельми не стабільно.
  3. Що стосується обмеження за жанрами, то тут в лідерах WebGL. По суті, на ньому можна зробити все, що душа забажає. Але чим «наворочені» гра, тим менше платформ вона буде підтримувати. З flash теж все досить не погано. Але багато жанрів робити просто недоцільно. А ось canvas - суцільне обмеження. В першу чергу через продуктивності. Кросплатформеність вимагає жертв. =)

Ще одним пунктом порівняння я хотів зробити затребуваність на ринку. Але гри на всіх перерахованих технологіях потрібні, тому що кожна технологія покликана вирішувати свої завдання, а тому затребувана в своїй галузі застосування. Не буває «срібної кулі», є лише інструменти допомагають вирішувати поставлені завдання.

У другій частині доповіді я розглядав попит і область застосування ігор у браузері в залежності від технології, на якому вони написані. Про це я розповім у другій статті, а то і так дуже багато тексту вийшло. =)

Буду радий вашим коментарям.

Дякуємо.

PS Повторюся, що стаття багато в чому капітанська. Але це обумовлено аудиторією доповіді, яку я читав (багато в чому це студенти).

UPD: Велике спасибі Sergey Batishchev за коментарі. Вніс зміни до статті.

Все ж хочуть бути інді?