Як ми витратили 1 рік і 3 місяці на розробку браузерної гри

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

На гру ми витратили 1 рік і 3 місяці, нижче я докладно розпишу, куди пішло це час.

Передісторія

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

Діалог був приблизно такий:
— Може, гру почнемо робити?
— Давайте, чому б не спробувати?
— А про що гра буде?

Далі пішли міркування про те, який жанр гри вибрати. Почали думати, яких ігор немає в індустрії:

— Шутерів — купа, танки — є, літаки — є, гонки — є, що ж тоді робити?
— Човнів немає.

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

Ніхто з нас навіть не думав про 2D гри, відразу всі представляли 3D — «інновації».

Всі ми знаємо про гучному CryEngine, завантажили, потыкали. Зрозуміли, що не можна в безкоштовній версії скомпілювати гру.

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

Завантажили, потыкали і розійшлися. Кожен у себе вдома за своїм розбирався. Сиділи, дивилися відео-уроки і намагалися зробити примітивні речі — земля, небо, вода і персонаж, який бігає по землі.

Один з чотирьох швидко втратив інтерес — протягом тижня нічому не навчився і забив на цю справу. Другий втягнувся, по урокам зробив машинку (3d-прямокутник і 4 циліндра), яка якось управлялася і навіть зробив човник (3d-прямокутник), яка плаває і тоне. Через тиждень він теж забив на цю справу.

Залишилося в команді розробників 2 людини, ми разом сиділи і дивилися уроки і ділилися один з одним своїми успіхами.

Розробка

1-2-й місяці — розбираємося з движком
Втяглися у це настільки, що сиділи по 6-9 годин і робили гру про човники. Ми не розуміли, що ми робимо і що з цього вийде. Далі ми втягнулися в розробку ще більше і кожен день займалися по 8-12 годин на добу, навіть без вихідних. Це дійсно було дуже цікаво і захоплююче. Ми вже вміли писати скрипти та багато вивчили в Unity, міняли поведінка човни, міняли модельки човнів, намагалися зробити, щоб вони стріляли. Це все вдавалося насилу, але у нас вийшло. Ми зробили 5 заспавненых човнів, які можна стріляти, у них витрачаються життя і вони вибухають.

Перша версія гри

Перша версія гри (трішки свіжіші)

3-5-й місяці — створюємо мультиплеер
Коли ми дізналися, що гра може працювати в браузері, вирішили зробити її для соціальних мереж, надихнувшись одним браузерних шутером. У нас навіть утворився якийсь концепт гри — браузерна онлайн-гра, заснована на водному виді транспорту. Геймплей повинен бути простим — човни гравців спавнятся в різних місцях і з допомогою кулеметів, нацепленных на човнах, гравці повинні знищувати один одного. Звичайно, гра повинна бути мультиплеєрної. На цьому моменті швидкість розробки трохи впала, нам довелося вивчати мережеву складову движка Unity3D, скориставшись стандартним мережевим рішенням.

Протягом місяця ми робили мережеву частину, намагалися довести синхронізацію до ідеалу. Саме тоді ми дізналися, що таке інтерполяція, екстраполяція та з чим їх їдять. Чесно кажучи, переводити одиночну версію гри в мережеву не дуже просте завдання, тому краще спершу визначитися: мережева у вас буде гра чи ні.

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

6-ий місяць — створення GUI і рефакторинг
До цього гра була без будь-яких GUI: ви заходите в гру і відразу потрапляєте на сцену з водою, де дві кнопки «приєднатися» і «створити сервер». Два тижні ми витратили на вивчення GUI. Робили знову ж стандартним рішенням, без будь-яких плагінів. Насправді — це ще збочення.

Зробивши хоч якесь головне меню в грі, ми взялися за рефакторинг коду. Чому? Та тому що ми почали писати гру на Javascript (UnityScript). Чому? По-перше, я знаю оригінальний JavaScript, по-друге, розробники Unity позиціонують JavaScript спрощеною мовою для новачків. Загалом, перейшли ми на C#, два тижні зайняв рефакторинг коду, але ми не пошкодували, нам дійсно стало зручніше писати на C# в MS Visual Studio.

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

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

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



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



9-10-й місяці — переробляємо мережеву частину
У зв'язку з тим, що стандартне мережеве рішення не давало того, що потрібно, а саме — онлайн побільше, незалежність сервера від гравців і, звичайно ж, система рівнів, прокачування, досягнень, все це повинні десь зберігатися. Переглянули багато сторонніх мережевих рішень, авторитарний сервер дозволяють зробити не багато з них. Вирішили зробити не авторитарний сервер. Нам підійшов Photon Server. Вивчали його десь тиждень, але зрозуміли, що він не підходить за двох причин: не знайшли способу запустити кілька копій сервера на одному фізичному і вичитали на сайті Photon обмеження за кількістю слотів на сервері.

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

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

11-й місяць — викладаємо гру у ВКонтакте
Нам вже порядком набридає вести односторонню розробку, без будь-яких фідбек. Так-так, все це час ми розробляли гру удвох і ніхто, крім тестерів, її не бачив. Зважилися випустити альфа-версію гри під ВКонтакте, щоб протестувати навантаження на сервер і отримати відгуки від спільноти. Може бути дізналися б, чого хочуть від гри самі гравці. Прив'язали VK API, скомпілювали, завантажили на сервер і додали додаток в ВК.

Викласти гру у ВКонтакте виявилося непросто: ми пролетіли з усіма поблажками, які були до цього у «Вконтакте», а саме: не потрібний сертифікат SSL, було безкоштовне розміщення у списку «Нові програми». Трохи не встигли. Нам довелося реєструвати SSL-сертифікат, добре гроші витрачати не довелося, по статті на Хабре отримали безкоштовний сертифікат. Але і це ще не все: модерація не пускала нас, вимагали перевести гру на російську мову і додати правила/пояснення до гри. Короткі правила до гри ми додали, в якості окремого віконця, але не могли зрозуміти, що потрібно було перевести в грі, адже вона так і російською.

У підсумку перевели слова «current» і «all» в правому нижньому кутку екрану. Відправили гру знову на модерацію тільки після цього її внесли в каталог.

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

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

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

Так само підключили рекламу в додатку «Вконтакте», сподіваючись, що хоч хостинг окупиться.





13-14-й місяці — розробка в розпалі
Нашу гру в ВК встановили вже близько 7 000 осіб, пограло загалом близько 10 000 чоловік. Бували онлайны, які в підсумку ламали наш сервер. Проявлялися баги в грі. Перспектива попереду, хотілося далі займатися розробкою, але часу вже на розробку було менше. Робота, всі справи. Робили наступне оновлення для гри, але розробка велася дуже повільно, за два місяці зробили дуже мало.

15-й місяць — кінець розробки
Часу ставало все менше, а нерозв'язних проблем все більше, ніхто не хотів вступати до нас в команду, жоден дизайнер, художник так і не зміг намалювати те, що було потрібно. Ми робили модельки самі, розфарбовували їх самі, але розуміли, що це все затягнеться ще на кілька років. У підсумку розроблення довелося закинути. Гра ще місяць-два працювала в пасиві, реклама приносила копійки, за весь час з гри ми отримали ~600 рублів, на хостинг витратили ~500 рублів, на домен ~300 рублів, а ще багато нервів і часу на розробку.

Висновок

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

Знову ж таки, зібрати команду ентузіастів дуже складно, кожен хоче жити на щось урвати свій шматок хліба.

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

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

Джерело: Хабрахабр

0 коментарів

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