Дизайн

Творець гри while True: learn() про програмування в геймдеве, проблеми з VR і симуляції ML

Кілька років тому мені здавалося, що Олег Чумаков (тоді ще з Nival) був самим відомим програмістом геймдеву. Постійно виступав, проводив Gamesjam, був частим гостем подкасту Як роблять ігри.

З появою на ринку VR, Олег очолив у компанії новий підрозділ — NivalVR. Але ви всі знаєте, з віртуальною реальністю щось пішло не так, як хотілося.

Я на довгий час відволікся від геймдеву, а поглянувши знову, побачив — у команди Олега справи стали тільки цікавіше. Тепер вона називається Luden.io та їх симулятор спеціаліста з машинного навчання while True: learn() став хітом у своїй ніші, навколо нього коїться купа крутих історій.

Ми поговорили з Олегом, але я не зміг вибрати тільки одну тему — надто вже насичений і різноманітний був його шлях. А щоб програміст говорив про програмуванні не боячись бути незрозумілим, бесіду підтримав мій друг, колега і досвідчений розробник fillpackart.


Олег Чумаков

Я пограв у while True: learn(). Класна гра, я прямо залипнув.

Далеко пройшов?

Ні. Я почав грати вночі і застряг на сайдквесті. Сидів, не міг лягти спати, поки не вирішу. Як у вас взагалі справи з нею?

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

У перший раз гравців прибігло більше, ніж ми планували за два місяці. На запуску — у першу ж ніч більше, ніж ми хотіли за півроку. Тому з тих пір у нас дуже веселе життя. Локалізуємо, намагаємося якось утримати на плаву і розмовляємо з тисячею чоловік в Дискорді одночасно.


Ваш чат в Дискорді — я так розумію, там всі люди зацікавлені, всі в темі машинного навчання. Розкажи свою історію про кого-небудь з гравців.

Там є гравець, його звуть Містер Флоппі (як його звуть насправді — не знаю). Він до нас прийшов на закритій альфі. Ми пускали певну кількість людей, щоб вони пограли, і ми отримали зразковий фідбек, могли скоректуватися.

У нас у грі є кіт сидить на моніторі, нявкає. А за початковим задумом, кіт повинен був заважати. Коли програмуєш, він постійно приходить, там «погладь мене», в монітор лізе. Загалом, Містер Флоппі коли грав, до нього приходив його реальний кіт, жвавий, заважати йому програмувати в грі. Він надіслав цю фотографію, з неї все і почалося.

Потім він захопився, став активним членом нашого ком’юніті. Почав виробляти на 3D-принтері у себе вдома цих котів у різному внутрішньоігровому одязі і розсилати їх кращим гравцям сам. Він, умовно кажучи, безкоштовно робив мерч. Йому просто подобалося. І це дуже теплийспогад про те, як у нас ком’юніті самоорганізувалося. На наших проектах такого ніколи не було. Бували косплеі, фанарти, але щоб люди самі друкували іграшки по грі і один з одним ділилися — це вперше.

Були гравці, які хотіли прямо глибоко вивчити machine learning. Гра знімала їм боязнь складного порогу входу в ML. Після гри вони йшли на Coursera, шукали змагання, які їм будуть по зубах на їх рівні знань. І ось ми за ними активно стежимо, все чекаємо, коли ж перший з них отримає роботу в сфері машинного навчання. В цей день ми, мабуть, будемо святкувати

Тобто, поки не отримували?

Вони ще в середині навчання. Реліз гри був у березні, часу не вистачило. А так взагалі багато всякого відбувалося. Люди і на ютубі використовували гру, щоб викладати машинне навчання. У школах вона постійно використовується зараз — в Росії, в Британії, в Штатах, Австралії багато. Так що мені не вистачить розуму вибрати найкрасивішу історію. Там їх щотижня по дві з’являється.

ttps://www.youtube.com/embed/IqJZYEDkmZA
Станислва Семенов — Data scientist і один з топових юзерів Kaggle — грає в WTL

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

Мої обов’язки зараз полягають в тому, щоб дізнатися core-команди їх план — що вони найближчі два-три місяці роблять — і з цим планом в голові працювати з усіма, хто до нас приходить. Інтегрувати гру туди-сюди, в цю школу, в ту школу. Бути таким містком між девелоперами і зовнішнім світом.

Іноді і я привношу з улюбленого Customer Development. Наприклад, з’ясували таку проблему: діти ходять на курси по програмуванню — їх батьки запитують «ну що на заняттях було?», діти такі кажуть «та нічого». Батько не розуміє, чи дитина розповідати не хоче, то і правда нічого не робили. Тому у нас в грі в грі звіти автоматизированны. Тобто батьки отримують повідомлення — «ваша дитина сьогодні вивчив перцептрон», «ваша дитина вивчала rnn-ку» і так далі. Такі фічі з’являються завдяки взаємодії між зовнішнім світом і грою.

Ну і відповідно у мене, як у CEO, завдання, щоб всі були натхненні великою метою, всім було комфортно працювати, не було ніяких складнощів, все рухалося вперед не замислюючись про базові речі.

Зрозуміло. Тобто, ти сам не програмуєш зараз?

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

Про програмування в геймдеві

Ну давай про старі добрі часи згадаємо. Розкажеш про себе як програміста?

Ну, найбільший проект, на якому школу життя отримав, це гра Prime world. Це був дуже великий проект компанії Nival. Мобу з соціальної частиною (вона назвалася Замок). В нашій команді, яка як раз їм займалася, було більше 20 чоловік — і це тільки для однієї маленької частини гри. Проект був жахливих розмірів, ну і там були всі проблеми синхронного мультиплеера, які існують у цьому світі.

Філ: А на якій стадії ти сам до проекту підключився? В якому положенні він перебував у цей момент?

Замок, але коли я прийшов, там ще нічого не було.

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

Ф: І ким ти на нього прийшов, як хто?

Я прийшов на посаду звичайного програміста. Пам’ятаю як я створював порожній Unity проект. Ми починали з самого початку. Належало все створити і інтегрувати з бойовою частиною, яка активно розвивалася в той момент.

Ф: Ага, це Unity. Тобто, який яп? Плюси, C#?

Сесійний частина була на плюсах. Наша частина була на Unity. Основна логіка була на C#. Але в силу того, що це був проект, так скажемо, складного поєднання технологій, через Thrift це генерувалося ще і в Python, тому що сервер був на Пітоні.

Ф: Ох, і звичайно це накладало свій оверхэд на розробку на C#.

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

Я так розумію, це був час розквіту технологій зразок Thrift, Protobuf, ось такого. І вони сприймались тоді як неймовірний винахід наукового людства — раз, і вирішують твою проблему з тим, що декілька різних мов, а дані треба пересилати, і все повинно скрізь однаково працювати

Ф: Уявляю наскільки багато проблем. Коли ти прийшов на проект, ти вже був знайомий з C# і світом .net?

Так, я був знайомий. Я ще був знайомий з Unity 2.6 (якщо не плутаю), це був зовсім дивний продукт. Я сам .net писав, але там був Mono на якийсь ранній стадії. Це ще часи, коли Мігель де Ікаса навіть не займався Xamarin.

Пам’ятаю, моно був такий рідкісний звір, якого мало хто бачив, а в Unity він був вбудований, і Unity був чи не найбільшим продуктом, який моно використовував. Відповідно, там було все жахливе, що буває в світі віртуальних машин на ранніх стадіях. Величезні незрозумілі memory leak на всіх платформах, непередбачувані відмінності від .net в елементарних речах. Якісь зайві алокації постійно.

Ф: тобто до того ти працював із звичайним .net, а тут тобі дали інший рантайм, який по суті ще нормально не документований.

Я з Unity почав працювати, але ось цей перехідний період, про який ти кажеш — працювали .net а тепер в моно — він був, але трохи раніше. Я не можу сказати, що я був дуже досвідченим в .net. У мене було уявлення і кілька закінчених проектів, але ніде не поставало питання перфомансу, навіть якщо б я зробив у тих проектах все не правильно. Всі навантажені частини в тих проектах були плюси, і .net до цього відношення не мав.

Ф: А можеш розповісти про свій перший тиждень на проекті. Ось ти пройшов співбесіду, ти розробив дизайн. Що далі?

Ну для чистоти історії варто сказати, що ми робили спочатку не Prime World. До нього був ще проект. Він, на жаль, не дістався до релізу, і в один із днів ми перевелись на PW створювати Замок. Там було все так швидко — нам приблизно дизайнери описали ідею, що повинно вийти: «Повинен бути якийсь замок, в замку гравець, він розвиває його будує, прокачує».

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

Таймлайн розвитку Luden.io

 

  • У 2014 році Nival сформувала окрему команду для розробки освітніх ігор у віртуальній реальності — NivalVR.
  • У січні 2015-го вийшов їх перший проект InMind — гра про подорож в мозок людини на мікроскопічному рівні для пошуку нейронів, які викликають психічні захворювання.

  • У тому ж році вийшла InCell. Вона розвивала ідею, але звучала зовсім вже як текст скаженого чат-бота — освітня гра з елементами рейсингу і стратегії, з процедурної генерацією, для VR-пристроїв, про подорожі в клітинний світ людини.
  • На Epic Games Mega Jam 2016 Luden.io зробила VRobot — “марну але веселу гру”, де треба трощити місто гігантським роботом. У 2017 вона вийшла в Steam VR, в 2018 — на Playstation VR.

  • У 2016 році NivalVR перейменували в Luden.io.
  • У 2017 вийшла ARrived — симулятор бога в доповненої реальності на технологіях Google ARCore, Apple ARkit and CoreML.

  • У березні 2018 вийшла в ранній доступ while True: learn() — симулятор спеціаліста за ML, але без VR і AR.

Про керівництво технологічною компанією
Ну зараз ти голова Luden.io. І як тобі — що важче? Чисто займатися розробкою або керувати всім цим, бути містком між світом і девелоперами?

Я думаю, залежить від того, з якими людьми ти це робиш. Мені дуже пощастило, з такими людьми як у мене і там і там супер цікаво і супер здорово.

А якщо теоретично порівняти дві професії — CEO і просто програміста? Я думаю програміст — більш вдумлива і більш повільна. Придумав, запланував, зробив. Зовнішні фактори з’являються рідше і не в такому обсязі. Там, умовно кажучи, завжди є правильні рішення, є конкретні, чіткі вимірні показники, що правильні рішення — це коли у тебе обрахунок займає не більше двох мілісекунд і виконується N потоків. Ти точно знаєш ці параметри, якщо в них вписався — все добре.

В роботі СЕО такого, звичайно, немає. У цьому світі чітких формалізованих речей зазвичай не буває, хоч ти і оточуєш цільовими вимірними показниками свій бізнес. Весь час треба думати, а як ще краще зробити, або може взагалі по-іншому. Чітких правил теж немає. Але в цьому і своя принадність

Ф: Як по-твоєму, досвід розробника допомагає тобі керувати?

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

Проводиш ти сам рев’ю?

Ну, не те щоб. На великому проекті PW, так — там були інші процеси, не як зараз у нас. Там, звичайно, весь код виглядав, щоб все було в єдиному стандарті. PW був такого масштабу, що там можна було просто забути, що одна частина використовується ще десь. Навіть протестувати локально було важко, наскільки великий проект. Тому там code review стандарти були хороші.

А тут хлопці дивляться одне в одного код, але в основному при інтеграції, коли ми збираємо всі фічі в єдиний бранч. Я не бачив у геймдеві, щоб коли у тебе 5-6 програмістів, були великі процеси code review. Частіше всього це не особливо потрібно, продукт первинний, а термін підтримки не десятки років.

Ф: А є якийсь консолідований підхід до розробки? Нав’язується він?

Є стандартний codestyle та базові поняття, що куди комбінувати, архітектурні правила. Є каркас проекту, в якому ми завжди працюємо. Він перевірений часом, і ми точно знаємо, що не дозволить нам вистрілити собі в ногу (принаймні з дробовика). Є базовий набір модулів, які з проекту в проект подорожують. Деякі написані давно, деякі недавно. Ми за рахунок великого перевикористання архітектурних стандартів, за рахунок дотримання codestyle не скочуємося зовсім в безодню.

Ф: Ти сам береш участь у наймі нових співробітників?
Так, звичайно.

Ф: Всіх?
Всіх.

У вас напевно не дуже велика компанія, так?

Ну так, не дуже велика, не тисячі осіб. Тому я, слава богу, хоча б один раз, але з кожним новим співробітником на етапі співбесіди 10 хвилин поговорю — яке відношення має до ігрової індустрії, у що грає. Щоб просто зрозуміти.

Ф: Але розробників ти сам не приймаєш на роботу як розробників?

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

Але якщо б мені потрібно було найняти сто чоловік за тиждень, то, звичайно, я б не зміг так вчинити. Мені наймати в такому темпі не треба, і, швидше за все, коли я наймаю людей, я з ними вже знайомий.

Геймдев vs бізнес-розробка

Ф: А бувають кейси, коли люди з інших індустрій переходять?

Буває, але не дуже часто. У геймдеві трек рекорд він зазвичай такий — люди люблять робити ігри в дитинстві і просто потім продовжують.

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

Він вам подобається, ви йому подобаєтеся, домовляєтеся, виставляєте оффер і людина пропадає. Іноді питаєте, «як справи», і тобі кажуть: «ось я прийшов звільнятися, начальник запитує, куди йду. Кажу, ось сюди. А він — ну давай ми піднімемо зарплату тобі, і ти нікуди йти не будеш». Дуже часто люди піддавалися на додаткову грошову мотивацію і залишалися в своїх індустріях.

Але були звичайно й інші випадки. Дуже хороші люди приходили з різних індустрій, у тому числі і банківського софту.

Так, я пам’ятаю ти в подкасті розповідав цю історію — програміст з банку каже «хочу зайнятися творчістю», йому на папірці пишуть цифру, і він залишається. У твоєму житті були такі папірці?

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

Ф: Кажуть, в банківських сферах, бізнесі, якість коду вище, ніж у геймдеві.

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

Наприклад, у компанії Кефір чудовою є гра The Last Day on Earth. Зроблена напевно якісно і здорово. І вона дуже швидко полетіла, стала дуже популярною. Я думаю, останнє, до чого вистачає рук, коли ось так починає злітати — це прочесати якість коду.

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

Ф: Я сам дуже багато в розробці бізнес працював — у нас якість коду було зведено в культ. Нам не треба було вирішувати завдання, нам треба було писати хороший код — це й було нашим завданням. Нам було наплювати, як продукт працює і чи існує він взагалі (ну, як відділу розробників). У вас, я так розумію, прямо протилежна ситуація. Тобто у вас завдання — зробити.

У нас, звичайно, продукт і його показники первинні. Іноді бувають ситуації схожі на те, що ти описуєш. Припустимо, ми з тобою робимо проект, який за відомою IP, ми знаємо яке у нього майбутнє. З деякою точністю можемо передбачити, що він буде підтримуватися 15 років. Очевидно у нас відразу з’являється business value в тому, щоб його підтримка не дорожчала з кожним роком. Для цього потрібно, щоб він був добре задокументований і зрозуміло для нового програміста написаний. Але таких проектів небагато, які підтримуються за 15 років. World of Warcraft скільки? Як раз до 15 років скоро буде. Ось там теоретично так. Але я думаю, що і 15 років тому розробники Blizzard дуже поспішали доробити продукт і не все зробили ідеально.

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

Безумовно.

Ф: В бізнесі за замовчуванням роблять код, який треба підтримувати 15 років, а ви так не робите, вірно?

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

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

При цьому, мені досить складно уявити ситуацію, де ми робимо банківський софт і не знаємо — а полетить він чи ні. Зовсім різні індустрії.

Як робити ігри і для себе, і для аудиторії

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

Це завжди двояке питання. Уявимо що ми робимо софт, який вирішує конкретну проблему користувача. Ми до цього користувачеві йдемо, запитуємо у нього «в чому проблема?» Розбираємося, знаходимо, Рахуємо— чи готова людина платити за вирішення цієї проблеми. Створюємо продукт, який цю проблему вирішує.

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

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

Але тут тонка грань. Треба вміти подивитися на продукт як для себе, але трошки іншими очима. Як сприйме людина, яка не грала 5 років? А людина яка зараз грає тільки в Destiny? Як подивиться людина, яка тисячу годин провів у доті. Ось так — але з тією іскоркою, що ти й сам повинен грати — це бізнесова мотивація.

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

Ну ти згоден, що ваші ігри все-таки нішеві?

Звичайно! Це основний плюс того, що ми робимо. Ми дуже хочемо бути нішевими. Не намагатися розважити чоловіків від 20 до 40 років — весь світ цих чоловіків розважає.

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

Працювати за таким принципом прибутково?

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

Лише зараз ми отримали розуміння, як з цим ринком можна працювати, як його взагалі створити. Він слабо розвинений. Тепер за ще 10-15 років нам треба перетворити його у щось більш відкрите для інших розробників, хто теж поділяє наші цілі — що ігри повинні нести користь.

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

Взагалі, видно загальна лінія між іграми, твоїми заняттями — gamesjam, лекції, ти, здається, ще викладаєш…

Дуже рідко. Годин 10 в рік, в кращому випадку.

Звідки такий інтерес до освіти, викладання?

Є якась краса в тому, щоб допомагати більш молодим фахівцям бути набагато крутіше і щасливіше нас, досвід має працювати. Але і є менш візіонерська мотивація. Ось у вас є якась улюблена гра? Зараз за жанрами прямо визначимо хто-що.

Взагалі з усіх?

З усіх. Ну, навскидку, все одно згадаєш.

Ну давай Мас Ефект.

Ок, Мас Ефект хороша, мені теж подобається. А у другого нашого…

Ф: Готика, напевно.

Блін, ну Готика теж прекрасна. Я тепер задумався, а чи не назвати їх. Готику я теж дуже люблю, і Мас Ефект мені подобається, але я прямо божевільний фанат жанру симуляторів і тайкунов. Mini Metro я взагалі вважаю геніальним досягненням сучасного ігрового мистецтва. Не грали?


Так, так, бачив її.

Якщо проводити паралель з художнім мистецтвом, то це така «нуль форм», як у Малевича — коли мінімальними зусиллями подається величезний пласт глибокої системи.

Тайкунм і симулятори це модель предметної області, в якій ми інтерактивно щось робимо і бачимо наслідки. Ігри, якщо подивитися глибше, це саме спосіб отримати досвід без ризиків. Тобто гра — сама натуральна форма навчання. Ось у нас компанія називається Luden.io. Якщо розкласти, Ludus з латини перекладається двома способами — гра і школа. Біля колізею такі руїни, вони називаються Ludus Magnus. Це місце, де навчалися гладіатори, вони там грали, боролися і так готувалися до боїв на арені.

І ось симулятори, тайкуны — як раз призначені, щоб дати досвід в тих областях, де його отримати занадто складно або дуже дорого, або взагалі не можливо отримати на планеті Земля. Підготувати людину до ситуації, з якою вона зіткнеться в майбутньому, відрепетирувати її.

Освіта, яка була в форматі 20-30 років тому стала мало актуальною. У дитини в руках телефон, на ньому є Youtube, Twitch, якась гра, і все це набагато цікавіше, ніж читати заумну і не захоплююче написану книгу.
Якщо ми з’єднаємо ці форми — грати і пізнавати, то виграємо з усіх боків.

Що сталося з VR

За таким же принципом у перших проектів була ідея робити упор на VR?

З VR цікава тема… коли ми починали, він тільки запускався. VR, безумовно, змінить сильну сторону ігор — безризикове отримання досвіду, додає ефект присутності. Мозок ще більше вірить, що це відбувається насправді, хоча це просто экстрарепетиція. Але ринок відчуває деякі утруднення зі швидкістю росту зараз. Не вдалося намацати той формат VR, який би всі хотіли мати вдома.

Тому ми вирішили, що до своєї мети ми продовжимо йти, але VR… У нас на всіх платформах випущені проекти. Крім того у нас у виробництві VR проекти, які інтегруються в школи. Якщо на якийсь із платформ щось зрушиться з місця, і це буде віртуальна реальність, яка допоможе виробляти корисні гри, то ми обов’язково посилимо там свою присутність. А поки у нас там багато гравців, всі раді і щасливі але while True: learn() — без віртуальної реальності.

Після Е3 як раз ходила ця картинка з інтернету, що згадок VR в пресі катастрофічно менше, ніж раніше.

Ну на жаль, так.

Як думаєш, що сталося?

Хочете додому собі купити шолом віртуальної реальності?

Ні.

Ну ось. Ось це і сталося. Люди не хочуть. От як тільки ви прокинетеся і зрозумієте, що хочете собі VR, значить переломний момент близький.

А чому не хочуть? Адже все було так класно. Коли це з’явилося, всі були в захваті, всі казали, що через 5-10 років це буде скрізь, ми взагалі туди переїдемо жити.

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

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

Я думаю, є проблема курки і яйця. Шолом можна купити додому, але постає питання, що з ним робити. А той, хто виробляє контент для цього шолома, думає, навіщо для нього виробляти , якщо там людей немає, як я відіб’ю розробку по грошах. Ця проблема поки що не знайшла рівноваги на VR ринку.

Але сегменти з’явилися, і я думаю будуть зміцнюватися. Спочатку вузенькі ринки, потім ринок побільше, побільше. Як було становлення приставок в 80-ті,  90-ті, так само становлення VR може станеться. Але за три роки не вдалося — він не злетів до масштабу мобільних телефонів.

Тобто, ти віриш, що він злетить, просто пізніше?

Питання в якому форматі. Буде це універсальний пристрій, що дозволяє і AR і VR зробити, або роздільні пристрої — складно прогнозувати.

Моя особиста думка, що він займе спеціалізовану нішу, таку ж наприклад, як сьогодні планшети. Багато у кого вдома вони є, але мало купують нові. І все одно вони якусь задачу вирішують. З VR, можливо, буде те ж саме. Якийсь сегмент він точно займе на ринку. Питання лише в розмірі цього сегмента.

Є одне чудове використання, здається, Сергій Гальонкін, мені розповів. Один чоловік купив шолом дивитися кіно, тому що у нього четверо дітей. Use case зрозумілий відразу.

Працювати було важко з віртуальною реальністю? Технічно.

З VR величезні проблеми є з перфомансом, і вимоги платформ часто у тому, щоб його підтримувати. Ми зараз вийшли з нашою старої грою — VRobot — на Playstation VR. Там, наприклад, потрібно обов’язково підтримувати стабільні 60 фпс. На Oculus (в тому числі мобільного) потрібно підтримувати 75 фпс. Навіть якщо в певні моменти на 20-30 кадрів падає — все. Ти повинен оптимізувати гру, щоб не падало.

Але у нас дуже сильна команда з точки зору низькорівневої оптимізації графіки. У нас є Микита, який супер професіонал саме в цьому.

Ф: тобто, у вас є окремий чувак для оптимізацій?

Ну він не тільки цим займається, але це його основний скілл. Вони ще у парі з Дмитром працюють, який може будь-3D сцену зібрати під потрібні показники продуктивності. Тому з ними у нас було все добре і чудово.

Про машинне навчання в геймдеві
Тим, кого захоплює геймдев і машинне навчання, Олег показує фото Деміса Хассабиса. Шаховий вундеркінд, нейробіолог і засновник компанії DeepMind теж починав свою кар’єру як розробник ігор.

Він програмував штучний інтелект для Black&White Пітера Мулинье. А потім у власній компанії Elixir Studios випустив, наприклад, симулятор бондовської супер-лиходія Evil Genius.

І тільки потім став одним з найвідоміших дослідників ШІ в світі.


У while True: learn() відображено ваш реальний досвід?

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

А в while True: learn() ми брали за референс не інший проект — у нас референс був реальність. Якщо робиш щось і не знаєш, як зробити — подивися як в реальному житті. Економіка гри — це оренда обчислювальних серверів. Якщо ти вирішуєш завдання по обробці величезного масиву даних, ти орендуєш собі сервера, вважаєш, здаєш, припиняєш оренду.

Ми хотіли показати у грі хронологію розвитку машинного навчання з 50-х років, з першого перцептрона і закінчуючи сучасними self driving cars, всякими капсульними мережами і так далі.

Ми виклали всі ці опорні точки, у нас Ваня спеціально збирав гугл-таблиці — основні перехідні блоки машинного навчання, як індустрія змінювалася, що нового привносилося. І з допомогою квестів це подається саме в такому порядку.

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

На кожному році, що було цікаве. Воно або спростовувалося майбутнім розвитком технологій, або навпаки підтверджувалося.

Можна клікнути в кожен блок, подивитися як він у грі працює, як працює у реальному житті.

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

В команді люди займалися раніше машинним навчанням?

Так. while True: learn() ми робили паралельно із запуском VRobot, тому VR команда у нас була сконцентрована на портировании на Playstation. А нова невелика команда складалася з фахівців з машинного навчання.

А розповіси про них, що за команда, над чим вони працювали раніше?

Так ось зібрали. Коли з’явилася ідея, я з знайомим, другом  студентом підібрав команду.

Ф: Ти підбирав ML фахівців?

Так, але там у нас всі хлопці молоді, у них немає, звичайно, 20-річного досвіду в машинному навчанні. На Kaggle всі пограли хоча б по кілька разів, якісь завдання порішали. В інституті вже багато це проходили.

Ф: І вони робили гру. Але розробка гри — це ж не machine learning, правильно? Тобто це фулстеки — дата саентисти і продуктові розробники в одній особі.

Ну як вам відповісти. Це люди які розбираються в машинному навчанні, розуміють, як воно влаштоване. І розробляють гру на Unity, пишуть код ігровий, верстають інтерфейси і так далі.

Просто щоб придумати якісь квести і розкласти це все по хронології потрібно розуміти контекст. Але очевидно ipython notebook для кожного квесту вони не заводили.

У нас є спеціальна там бібліотека, яка рахує convolutional мережі і якісь зовсім базові речі на шарпа, які Unity працюють. На ній же випущена наша гра AIDraw про малювання. Там гравець малює, а нейромережа відгадує, що він малює. Ця бібліотечка обчислює все це справа, а навколо неї обв’язана ціла гра.

Ф: ML і геймдев не так давно почали перетинатися. Ось, наприклад, у мене гра з машинним навчанням. Який стек підійде?

Я не бачив багато проектів, які перетинають машинне навчання і геймдев — саме продуктового використання, щоб в клієнті гри щось відбувалося.
У Unity є власна система reinforcement learning. Вона дозволяє робити невелику кількість речей, але вбудована прямо в Unity, тому поріг входу невисокий.

Є ряд бібліотек, такий же як і для інших областей, плюсових фреймворків для нейромереж.

В мобільних технологіях часто використовують CoreML від Apple, який дозволяє обчислити прямо на GPU девайса. Беремо модель, навчаємо її в тому ж TensorFlow або в яндексовском CatBoost, пакуємо в спеціальний файлик — і ось вона вже може на айфоні запускатися прямо на GPU і нам видавати результуючий prediction назад.

Ми її використовували, наприклад, у грі з доповненою реальністю ARrived, там де потрібно було розпізнавати зображення з камер і говорити, що на них.

Якщо говорити не про продуктовне використання, не в клієнті гри — там все класичне. На серверах люди ганяють звичайні технології, які у всьому ML. Але там це використовується для аналізу або персоналізації оффера.
Знаменитий кейс — намагалися передбачити, коли з World of Tanks відвалиться гравець, і що з цією інформацією зробити.

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

А може в центрі дизайну гри почати збір датасету?

Ну, це така westworld концепція. Можливо вона має право на життя, але я сходу не бачу, що за датасет від дій гравців може бути корисний.

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

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

А в AIDraw це не було завданням?

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

Ф: Припустимо ти задумав гру, яка буде якось використати ML, і в процесі розробки розумієш, що як задумав — не вийде, а виходить щось зовсім інше. В тебе бували такі випадки?

Наприклад, ми знали, що в while True: learn() буде випускатися великий апдейт про self driving cars. Гравець буде навчати машинку їздити, обганяти інші машинки, перебудовуватися, газ піддавати, гальма натискати.

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

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

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

З машинками ми прийшли до чого? Спочатку ми вказували, який инпут даних використовувати, щоб навчити машинку їздити параметри, які ми можемо змінювати (всякі threshold, loss. В генетиці, наприклад, розмір покоління, мутації). І вийшло щось не дуже інтерактивне. Людина заходить, якісь параметри поміняв, а далі тупить, дивиться, як машинка їздить. Для розробників, які в контексті, це прикольно. А для людини з боку як-то не інтерактивно.

Ф: Не відчуває свого вкладу?

Так, немає зворотного зв’язку миттєвою. Тому у нас трошки помінявся дизайн. Гравець буде вести машину. Типу навчи машину, сам її водінням. І вона повторює за тобою, як ти її навчив.

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

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

Ф: тобто, ви закладаєте на те, що вам доведеться зробити прототип, подивитися як він себе поведе і по суті переробити заново?

Безумовно, так.

Ф: Але це нестандартно для розробки. Це фіча саме ML, вірно?

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

Наша передбачувальна база, яку ми в голові тримаємо, вона справляється з цим завданням.
А ось з ML ще не справляється.

Related Articles

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Close