Куток

Обкладинка для допису Як мене дивують підлітки, які вчаться геймдеву
Кірілл Свідерський
Кірілл Свідерський

Додано • Оновлено

Як мене дивують підлітки, які вчаться геймдеву

Привіт. Мене звати Кірілл Свідерський, я вже шість років навчаю підлітків геймдеву на курсах GoITeens. Діти від 13 до 17 років — моя аудиторія тут. І за цей час я встиг познайомитися з сучасним поколінням досить і досить добре.

Їх максималізм та протирічність дивує. Інколи вони туплять над простими завданнями і лінуються виконувати домашку, а іншим разом самостійно вивчають тони інформації тільки щоб втілити у життя якусь прикольну маленьку фічу у власному проєкті.

Саме про своїх студентів я б хотів сьогодні розказати. Адже навчання геймдеву підлітків на початку надто сильно відрізняється від навчання дорослих людей.

Фото з щасливого доковідного 2020 року

Підлітки в геймдеві: тренд, що набирає обертів

Українська і американська сфери геймдеву розвиваються по-різному. Для прикладу, середньостатистичний розробник ігор в США має 43 роки. Та й взагалі кількість співробітників за 40 там складає 62%. Це класичні олди, які у тому ж складі рухали геймдев ще 15 років тому.

В Україні не так. У нас середній вік гейм-девелопера — 28 років. І він продовжує знижуватися, бо у сферу йде велика кількість молоді. Я й сам це бачу, адже раніше працював Unreal Team Lead у Kevuru Games, де підбір і навчання кадрів було однією з основних моїх задач. Серед моїх колег по цеху вистачає молодих людей 20-22 років, і є ті, хто в цьому віці має тайтл міцного мідла. Але так не всюди. Моя основна робота наразі — це розробник геймплею на Unreal Engine в компанії Strikerz Inc, і там середній вік девелопера більше 30 років.

Багато девелоперів починає вчитися геймдеву ще у підлітковому віці. І якщо рухатися правильно та сфокусовано, то до повноліття вони вже отримують непоганий стек технологій та навичок, який шукають і цінують на реальних проєктах.

Скажу відверто, я й сам ханчу талановитих учнів: випускників курсів GoITeens і тих, кого я навчаю особисто. Бо навіть в свої 17 деякі з них вміють і можуть більше, ніж дехто в 30. За роки викладання я допоміг працевлаштуватися випускникам, деякі з яких працюють в Ubisoft, GSC, Kevuru Games та інших класних компаніях. З усіма я підтримую зв’язок та чую про них хороші відгуки від роботодавців.

Так, в компаніях ще залишається ейджизм до молодих спеців. Адже багато молоді має зависоку думку про себе і маючи знання слабкого джуна хоче зарплату сеньйора. Проте незважаючи на це нам вдається готувати готових до ринку людей. Зараз випускників наших курсів з геймдеву активно беруть на позиції інтернів або навіть відразу на джунів. А один з моїх учнів, Остап Леонов, взагалі став мідлом у 17. Молодий вік — це зараз не перешкода, а перевага.

Розробка ігор для підлітків: мій досвід

Скажу відразу: я досить суворий викладач. Я не розважаю підлітків, а готую їх до реального ринку, де вони будуть мати серйозну конкурентну перевагу перед іншими новачками. Їхні батьки три роки платять гроші не для того, щоб забезпечити дозвілля підлітка, а щоб створити фундамент для професійного розвитку. Так, ми розуміємо що діти є діти, тому перші місяці ми допомагаємо їм вибудувати в себе виконавчу дисципліну. А система мотивації через приклади ігор попередніх років допомагає в цьому.

З групою яка скоро випуститься

У мене є два основних принципи, яких я дотримуюся під час навчання:

Не робити знижок на вік. Конкуренція на ринку праці подекуди дуже жорстка. Наприклад, в деяких крутих компаніях на вакансію Junior QA подається більш ніж 200 людей. В розробці менше, але конкуренція також велика.

Якщо ти будеш ставитися м’яко, прощати лінь і небажання вчитися, то після закінчення курсу ти отримаєш спеца, який програє конкуренцію та не отримає роботу. Як результат, він буде винити тебе, бо ти його погано навчив — і це буде на 100% правда.

Тому, перші заняття перетворюються на невеличку перевірку. Задаю кожному учню по 40 задач. Вони не складні, але для їх розв’язання треба витратити деякий час, орієнтовно 2-4 години на тиждень. Якщо підліток зробив їх усі без нарікань і вчасно, то у нього є всі шанси стати крутим розробником. Якщо ж починається «Я забув», «Я не встиг», «Домашку з’їла собака», то у більшості випадків з таким учнем ми прощаємося вже через місяць. Він просто не вивезе навантаження і демотивуватиме усіх, хто буде з ним в одній групі.

Вчасно показати особисті межі. У підлітків поняття субординації відсутнє в принципі. Для них відправити купу мемів в особисті повідомлення о третій ночі — це нормально.

На перших заняттях приходиться окремо наголошувати: особисті — тільки для важливих організаційних питань і тільки в робочі дні з 9 до 18 годин.

А ще у нас є робочий чат груп. І там спілкування має стосуватися тільки навчальних тем. За мемчики і флуд прилітає тимчасовий бан. Але за серйозні порушення можна отримати і пермач. Це робочий інструмент, тому правила жорсткі.

Звичайно, я все ще отримую купу повідомлень в особисті. Так, всі вони стосуються навчання, але я розумію, що справа не в ньому. Підліток хоче просто відчути контакт з викладачем і тому часто ставить питання, на які можна без проблем знайти відповідь в інтернеті. Але хоч від мемів серед ночі це рятує.

Вчити підлітків — це постійно дивуватися

Це не тільки про хороше. Факапи у підлітків часто трапляються на рівному місці. Коли вони роблять власні проєкти, я постійно наголошую не забувати користуватися контролем версій, сінкатися перед усіма важливими змінами в коді і проекті. А краще — перед будь-якими.

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

Ще через відсутність досвіду студенти часто переускладнюють розв’язання задач. У випадках, де варто написати декілька рядків коду, часто пишуться десятки чи сотні. Але поки не навчишся писати як-небудь, не буде фундаменту зрозуміти «чому ось так правильно» в майбутньому. Команда, яка цього навчального року робила горор-гру The Joy Of Your Nightmare, зберегла собі купу часу тим, що після перших невдач зі звуковими івентами, вони написали зручний аудіо-менеджер для їх програвання. Але без перших помилок було б неможливо зрозуміти таку велику абстракцію.

Втім, частіше студенти дивують мене якраз у хорошому сенсі. Особливо часто це трапляється, коли в 3-4 семестрі вони працюють над власними проєктами. Ентузіазм та бажання підлітка зробити щось класне перекриває нестачу знань та досвіду.

Якщо є бажання, команда може опанувати досить складну технологію в найкоротші строки. Інколи навіть без нормальних гайдів. Буквально кілька місяців тому одна з команд учнів робила гру на Unity і захотіла додати режим мультиплеєра. Як інструмент вони обрали Unity Lobby + Unity Relay, але не знали, як подружити це з бібліотекою Mirror. В результаті вони напряму штудіювали сотні сторінок документації англійською мовою. І таки знайшли, як їх поєднати.

Креативність — це ще одна риса підлітків, яка мене завжди дивує. В головах підлітків інколи народжуються чудернацькі речі, але в результаті все виглядає класно. Геймдев це взагалі про креатив і подачу, але діти інколи можуть дати фору навіть досвідченим геймдизайнерам.

Ось іще один приклад із горору. Наприкінці діти стикнулися з проблемою: не знали, як познайомити гравця з системою управління так, щоб це не вибивалося з сеттингу. Пробували кілька стандартних ідей — не підійшли. Далі зробили, наче підказки про управління передаються через старий телевізор з перешкодами, але для гравців це здавалося фоном і не всі слухали що кажуть. Ще далі — спробували передати управління через щоденник персонажа. Дуже класні і незвичні ідеї.

Важливим елементом навчання є третій з шести семестрів, коли діти роблять свої перші великі ігри. Ми надаємо їм повну свободу в виборі сюжетів і тем! Це дає мотивацію робити своє, а не домашнє завдання «для дяді». І через це інколи з дітьми складно, бо вони намагаються зробити все, як самі хочуть. Але в цьому також плюс: вони знаходять незвичні рішення звичних задач. Нещодавно на занятті я пояснював технологію (Mirror), яку можна використати для мультиплеєра у грі на Unity. А на наступному занятті я дізнався, що дві з трьох команд використали зовсім іншу технологію (Photon), яку вивчили самостійно за тиждень. І таке трапляється постійно. Вони не обмежуються тим, що є на уроках, а постійно пробують щось нове.

Коли вони залучені в робочий процес і отримують від нього задоволення, то для них майже не існує неможливого. Так, вони все ще можуть натупити в елементарних речах, але при цьому здатні вивчати величезну кількість інформації і розбиратися в досить складних технологіях. Їм не треба терміново шукати роботу і заробляти, тому вивчення геймдеву відбувається поступово, з інтересом та різними челенджами.

Також цього року мене здивувала команда дівчат Олі Московської і Саші Корнійчук. Вони почали робити проект на Unreal Engine раніше, ніж ми розпочали вивчення цієї технології. І вдвох довели його до стану доволі якісної демки, яку я навіть портував на власний Steam Deck після презентації на курсах.

З дітьми зовсім по-іншому, ніж з дорослими. І коли ти на третій чи четвертий семестр навчання починаєш підпускати їх трохи ближче і ставишся починаєш ставитися як до майбутніх колег, то розумієш, наскільки вони класні. Впевнений, що всі вони ще вплинуть на майбутнє українського, а може й навіть світового геймдеву.

Сподобалася стаття і захотілося вивчати GameDev? Або вже почав і стикнувся зі складнощами? Записуйтеся на пробне https://ua-it.co/3Pl1hBN

П.с.: стаття отримала більше охоплення ніж я думав. Якщо є ще речі про які хотіли б почитати на кутку - пропонуйте теми в коментарях!

Топ коментарі (14)

Звернути
 
bonamors_7efa2872b0873ccc profile image
BonaMors

Крута робота, було б цікаво подивитися на ваш матеріал по патернам в UE, якщо такий є

Звернути
 
kaizer_dragomir profile image
Кірілл Свідерський

Привіт. Вичещених записів під ютуб поки немає, і без додаткового фінансування/монетизації найближчим часом і не буде.

Треба розуміти що патерни можно зрозуміти правильно лише на реальних прикладах, і коли вони дійсно допомагають. Бісить коли новачок в ООП починає плодити сутності і абстракції, "бо так правильно". ООП і патерни мають допомоготи полегшити роботу з кодовою базою, а не навпаки. Тому, починати треба з розуміння абстракції і правильного використання, десь вище є структура в якому порядку я викладаю матеріал. Коли людина починає робити достатньо великі проекти (більш ніж ігри дітей вище) - і стає дійсно важко, ось тоді і з'являється ЖАГА структурувати і полегшити роботу. Тому, перший неочукаваний крок -я не розповідаю патерни тим хто не готовий до них, бо тоді людина тільки зробить гірше проекту на якому працює. З індивідуальними клієнтами, з групами на курсах - спершу йде абстракція. І тоді, можна вже брати в першу чергу приклади з роботи людей і показати як краще застосувати ті чи інши патерни.

Є єдине виключення - на умновному "четвертому семестрі" розмуіння фабрик стає дуже необхіднним вже тоді і я це даю раніше.

В цілому, для структури занятя я беру за структуру ось цей матеріал
refactoring.guru/uk/design-pattern...

Але, приклади беру х життя клієнтів і своєї особистої практики. "Маленькі" учбові приклади з причин наведених вище вважаю поганими і не розкриваючими суть питання "навіщо воно мені треба". На рефакторгуру красиво сказано "Якщо у тебе в руках молоток, то всі предмети навколо починають нагадувати цвяхи.". Можемо розглянути якийсь патерн що вас цікавить і спробуємо знайти застовування з вашої практики в коментарях)

Звернути
 
bonamors_7efa2872b0873ccc profile image
BonaMors

Хотілося б побачити як раз більше живих прикладів з реальних проектів де використовуються ті чи інші патерни для проектування, щоб побачити більше прикладів коли вони дійсно треба :)

В гуглі не так багато прикладів, а ті що є, як ви вже зазначили як раз просто реалізують дизайн патерни на дуже базових прикладах, для яких по факту ці дизайн патерни і не потрібні.

В UE з коробки реалізовані деякі патерни. Практично всі використовують вже реалізовані observer (делегати) та singleton (game instance, blueprint functions library), state (anim BP, BTT). Напевно, якщо подумати є ще до яких у розробника є доступ (напирклад flyweight за допомогою мержу мешів і тд), ну а під капотом самого двигуна можна знайти багато інкапсульованих.

Із тих що є сенс писати самому в UE поки що відмітив:
1) Object pool для однакових об'єктів, які постійно створюються та знищуються. Наприклад, кулі
2) Command більше актуально якщо робити гру стратегію, turn based / RTS etc
3) Factory Method / Abstract Factory коли гра не на 3 рівні, особиливо якщо дуже багато об'єктів абстрактного типу, але різної форми та однаковою поведінкою, але різною реалізацією

З великим задоволенням би подивився реальні приклади на проектах як цих трьох, так і інших. Я розумію, що для мене окремо ви це робити не будете, але якщо буде можливість накидати хоча б короткі приклади використання будь-яких патернів в UE зі своєї практики, я буди вельми вдячний

Тред Тред
 
kaizer_dragomir profile image
Кірілл Свідерський

В гуглі не так багато прикладів, а ті що є, як ви вже зазначили як раз просто реалізують дизайн патерни на дуже базових прикладах, для яких по факту ці дизайн патерни і не потрібні.

Саме про це і писав комент вище)

Як ми прийшли до фабрик. 4 семестр працюємо над абстракцією. Проекти поступово стають більшими. Доходимо до того, що на сфмл робимо гру типу агаріо - останній проект семестру. Звичайно для такого проекту нам потрібні "майже повноцінні" геймобджекти. І починаються складнощі з тим як їх створювати. Саме в цей момент програми вперше в дітей починає ділитися на шар рушія і шар гри. Шар рушія має забезпечити функціонал того, щоб під капотом об'єкти реєструвалися в потрібних списках при створенні! Саме з точки зору абстракції підходимо до цього питання. І ось з такої нетипової ситуації ми і розпочинаємо фабрики, маючі необхідність в цьому патерні. Далі я вже ділю умовно на 3 "під патерни". Знаю що це не канонічно, але виділяю окремо фабричний метод як всього-лише метод. Далі як вчив Мартін, коли в метод передається багато аргументів з'являється клас і патерн який я дітям називаю просто "Фабрика". Як приклад застосування розказую про будь який продкашн зі стратегії: кожен домік вміє будувати своїх юнітів по своїх цінах. І далі вже розповідаю про абстрактну фабрику, але "книжкового" прикладу саме в цій ситуації на рівні уроку достатьно.

Щодо стейтів. Ідею діти розуміють ще на рівні анім графу. А от специфіку реалізації можна тільки коли буде відповідна задача. І я не фанат коли в реальних проектах люди фігачать велосипеди. Щодо крутої масштабованої ФСМ пораджу проект львівського дева Андрія Грешика
discord.gg/DswRQVV4
Я зустрічав цей плагін на декількох різних непов'язаних проектах, думаю це не просто так)

Щодо сінглтону. Кращим прикладом я вважаю існування в двиглі SubSystem-ів. І дуже крута ідея використовувати! Наприклад, звукова сабсистема, інше.

flyweight - матеріал інстанси.

Про команди - може бути використано як один з моджливих засобів для створення реплеїв. Але щоб дійсно був вдалий приклад - потрібно поїбашити пару тижнів) Ну, або в підсумку буде недвалий приклад, це і називається досвід) В мене був раз в житті була необхідність юзати це, як раз на ртс учнів. І там вони потім від ідеї патерну якогось дивного дікообраза зробили

Пули як і різні алокатори робляться під конкретну задачу. І, для пула точно є приблизно 2 мільйони готових рішень

Щодо декораторів - крутий приклад це LINQ в шарпі. Я так за цим сумую, що колись навіть хотів створити свою бібліотечку для анріала з таким самим функціоналом. Але, зусиль більше ніж користі і закинув

А загалом - Ти часто пишеш код, а не патерн. Розуміння абстракції і адекватність, розуміння що саме треба зараз дозволяють писати код корисний. Будь який Spawner це по суті фабрика, але дає набагато більше змісту і розуміння. Я хейчу код, коли в ньому починає з'являтися забагато назв патернів

Тред Тред
 
bonamors_7efa2872b0873ccc profile image
BonaMors

Дякую за розгорнуту відповідь, про subsystem забув написати)

Звернути
 
milky profile image
Milky Way

Дід видав базу!!!!

Звернути
 
enningture profile image
Enningture

Шкода, в моєму віці такого не було. Хоча шлях самонавчання теж крутий, тому бідкатись нема про що.

Звернути
 
kaizer_dragomir profile image
Кірілл Свідерський

Вітаю. Дякую за коментар. Але не вважайте що самонавчання немає) У кожної дитини яка закінчує 5 і 6 семестр свої власні цілі, свої теми для вивчення. Я можу лише підказати і направити, провести 1-1, порадити. "Класичні" домашні завдання і лекції лишаються на початку курсу. Просто у моїх падаванів шлях трішки швидше, бо якщо дійсно застакались є де спитати (бо якщо я знаю що проблема гуглиться - на фініші курсу навіть відповідати не буду)

Звернути
 
ihor_belladon profile image
Igor Belladon

Три роки - велика частина життя для підлітка
Лише вмотивовані та наполегливі пройдуть такий шлях. То ж, так! Таких варто брати в команду

Звернути
 
kaizer_dragomir profile image
Кірілл Свідерський

Тому насправді це і є 2 курси по півітора роки, з зовсім різною відповідальністю і цілями. Спочатку діти йдуть до того ради чого прийшли на курси - створити свою гру. Тих кому цікаво йти далі чекає подальше важке і цікаве доросле навчання. Дякую за коментар)

Звернути
 
sergei_kuznetcov364 profile image
Sergei Kuznetcov

заздрю можливостям навчання сучасних дітей, а для дорослих 30+ є якісь курси з геймдеву?

Звернути
 
kaizer_dragomir profile image
Кірілл Свідерський

Привіт. Мій план у вільному доступі гуляє мережею, користуйтесь
docs.google.com/document/d/1fyTCP_...
Це якщо саме в девелопмент хочеться. За інші спеціальності - шукайте фахівців.

З відомих мені курсів раджу Games Academy і якщо вже є деякий бекграунд можна пробувати в Nix на навчання

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

Звернути
 
progdruid profile image
Programming Druid

треба більше кулсторі про студентів від діда

Звернути
 
kaizer_dragomir profile image
Кірілл Свідерський

До речі, вже маю ідеї) Згадаємо хоча б як до Тебе гноми прийшли)))

Куток

Підписуйтеся на наші соціальні мережі:
Telegram
Twitter
Facebook


Тепер у нас також є Youtube канал!