Розробка першої гри [на Unity3D]

Коли я пішов на ПОВТ (можете вставити свою спеціальність в IT), для того щоб дізнатися, як писати гри. Хоча навчання і було дещо віддалене від цікавої тематики, воно принесло фундаментальні знання, без яких було б дуже важко. Подальша після випуску робота в декількох компаніях тільки затягувала в ентерпрайз, віддаляючи від геймдеву. Але, час від часу, купуючи нову гру, або спостерігаючи за розробкою чергового тайтла, виникає дуже нав'язлива ідея — «Хочу цим займатися!».

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

За останній проект я взявся дуже міцно і довів до стадії релізу.

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

Вступ
Загальний план основних етапів створення гри, висвітлених у статті:
  • Ідея
  • Сюжет
  • Натхнення
  • Концепт
  • Робочий прототип
  • Розвиток прототипу в кінцевий продукт
  • Завершення
В кінці статті я торкнуся плани на майбутнє, враження від вибраного інструменту і деякі помилки.

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

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

У моєму випадку, ідеєю став жанр гонок на човнах.

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

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

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

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

Основним варіантом геймплея став, так званий, заїзд на час — тут хотілося домогтися чогось схожого з серією TrackMania. Можливо, в останній частині (Turbo) розробники перейшли якусь грань хардкорності межує з неможливістю ідеальних проходжень на максимальної концентрації,у мене 316 медалей на 128 треках і часом хочеться ніколи не відкривати гру знову
але інтенсивність гонок, які хочеться проходити без помилок як можна швидше, з миттєвим перезапуском у випадку помилки — ось той ключовий момент, який визначив весь геймплей.

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

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

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

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

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

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

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

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

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

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

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

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

Я (ще|не) художник!
найскладнішим стала розробка всіх моделей, текструирование і відтворення картинок сюжету, поданих у вигляді кадрів стилізованих під комікс.

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

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

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

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

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

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

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

Також була задумка випустити проект і на мобільних платформах — все ж це мультиплатформовий движок, але дійсність така, що без додаткової жорсткої оптимізації цього не отримати. У разі, якщо у гри набереться аудиторія і будуть запити, то спроба портування точно буде. Зараз же необхідно наявність дискретної графіки(перевірялася інтегрована IntelHD4400 — її явно недостатньо, однак при використанні дискретної відеокарти навіть ноутбука, можна розраховувати на нормальне кількість кадрів)

Враження від Unity3d
Працювати було дуже зручно, враховуючи наявний досвід C# розробки, лише в деяких випадках стикаєшся з обмеженнями Mono і специфікою самих об'єктів. Досить багато уроків — правда більшість орієнтовані на новачків, тому складно довго слухати про розташування скобочек, найменування змінних, стандарти їх коду з різними нотаціями та іншим подібним, причому цим дрібницям приділяється просто невідповідну кількість часу. Але на швидкості в півтора-два рази швидше, найчастіше, швидко переглядаєш або проматываешь до ключового в ролику моменту, дивишся як працювати з черговим вікном, розкриваєш додається лістинг і продовжуєш у своєму проекті.

Для Unity багато різних плагінів, і навіть власноруч був розроблений невеликий діалог-розширення редактора, для генерації буйків на трасі, з деякими коефіцієнтами для згладжування поворотів. У мережі можна знайти величезну кількість скриптів, також не варто обходити повз вбудованого AssetStore, в якому є як платні(більшість), так і безкоштовні варіанти. Додатково — звертайтеся на офіційний форум, де вам обов'язково дадуть відповідь.

Також — у Unity ще зустрічаються проблеми у вигляді некоректної роботи чого-небудь, і в моєму випадку, випускати гру довелося на останній бета-версії, оскільки всі попередні просто не були призначені для WindowsStore білду — помилка в роботі з тінями. В результаті, до цих пір є одна невирішена до кінця проблема, через яку довелося генерувати проект в Il2CPP режимі, хоча хотілося отримати звичайний C# — проблема відома і висить в пропозиціях на поліпшення, однак сподіватися на швидке вирішення не варто.

Єдине, про що хочеться додати — це дуже довгий перерахунок освітлення! Його запікання може легко перейти кордон до 20 годин на сцені, і це при не самому слабкому CPU. Але без цього на ваші тіні буде страшно глянути. Мабуть, всі розробники повинні мати як мінімум 8 а то і 10 і більше ядер, з необмеженою кількістю оперативної пам'яті, т. к. одне завдання на перерахунок світла легко йде за споживання 4Гб, кількість таких завдань на великих сценах вимірюється в сотнях.

Помилки
я можу побачити тільки озираючись зараз.

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

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

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

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

p.s. Спочатку, стаття була мало не в два рази більше, і довелося робити більш коротку витримку. Також були вирізані такі моменти як: UI, земля, вода і хвилі, безпосередньо реліз з викладенням стор. Якщо у вас є будь-які питання по темі — задавайте, і я постараюся відповісти.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.