• Silver Cats

Історія створення Silver Cats


Розробку RPG я розпочав у 2017 році, коли створив новий проект у Unity та розпочав роботу над кодом системи. Проте світ гри був вигаданий набагато раніше – у 2014 році, і з цього року я хотів би розпочати.


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


Однак тодішній інтерес про те, як створюються комп'ютерні ігри, привів мене до відповідних запитів у Гуглі, а згодом до статті про ігрові рушії та 3D моделювання. Так я дізнався про те, що ігровий рушій – це не таємнича технологія, а цілком звичайна програма, де в залежності від навичок розробника можна робити різні ігри. Наступний мій гугловський запит «що таке рушій» привів на статтю про Unity, я встановив версію Unity 4 і почав з цікавістю в ній копатися.


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


На той час Unity вважався «тільки для мобільних ігор», і все ж в інтернеті я знаходив час від часу туторіали для ігор на ПК, що дуже тішило. Скачав різні ассети з плагінами і почав розбиратися – це мені допомогло поступово опанувати рушій. У той час не було планів на майбутнє, я знаходив якусь функцію рушія і просто про неї гуглив. Тоді я вже точно знав, які ігри хотів би робити, тому шукав гайди для комп'ютерної розробки та, по можливості, для фентезійних RPG.

(Моє перше меню в Unity, 2014 рік)

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


Я захоплювався жанром MMORPG, особливо азіатськими іграми, і вирішив розпочати самонавчання у цьому напрямі. Було зрозуміло, що створення MMORPG мені не світить, а для того, щоб створити звичайну RPG, безкоштовного контенту з Asset Store було недостатньо. Через деякий час самонавчання стало зрозуміло, що без знання програмування неможливо створити ту гру, яку я хотів. У мене були крихти знань Java, які залишилися після роботи над модом для Майнкрафта, але C# виявився зрозумілішим і, скажімо так, душевно ближче, тому почав шукати уроки з C#. Так я знайшов старі відеогайди і почав самонавчання.


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

(Скріншот печери в Blender, 2014 рік)

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

(Печера в Unity, 2014 рік)

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


Через два роки такого самонавчання я створив перший «варіант» майбутньої гри. На той час я вже мав якісь базові знання C# і Blender, плюс під рукою були хороші туторіали, і в результаті я зміг зробити більш-менш готову локацію.

(Перший закинутий проект, 2016 рік)

У цьому проекті народилися зародки майбутньої системи. Найскладнішим для мене було створити комірчатий реманент – здається, тоді ще не було UI і весь інтерфейс був написаний кодом за допомогою GUILayout. Хоч на реманент я витратив чотири місяці, деякі баги виправити все одно не міг. Плюс у GUILayout були проблеми з масштабуванням на різній роздільній здатності екрану, та й взаємодія з інтерфейсом була незручною.


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

(Перший закинутий проект, 2016 рік)

Якість мене не влаштовувала, до того ж на той момент я дізнавався багато нового як про рушій, так і про програмування, вже частіше заглядав у довідку Microsoft, а не на форуми, і в принципі деякі речі міг робити сам. Було вирішено видалити цей проект і створити новий. Так, у 2017 році я створив другий «варіант» майбутньої гри. Чим більше я вивчав C#, тим менше мені подобався мій код, тому новий проект я створив з нуля і повністю переписав ігрову систему.

(Другий закинутий проект, 2017 рік)

Графіку вирішив робити у реалізмі, що мене тоді влаштовувало. У цій версії я довго порався зі скриптом кастомізації, який підвантажував модельки броні на персонажа. Не пам'ятаю, скільки на це пішло часу – здається, місяці два – і все ж таки за допомогою купи прогорнутих форумів вдалося знайти рішення. Але це все одно була не та гра, в яку я хотів грати. Тому я кинув цей проект та створив третій «варіант» майбутньої гри. Було вирішено робити його повністю в hand-painted стилі, до того ж у мене залишалася робоча система з попереднього проекту. Виглядав він так:

(Третій закинутий проект, 2017 рік)

Система гри поступово розвивалася. Довелося відмовитись від реманенту, написаного з GUILayout, і переробити його з нуля, використовуючи UI. Також я додав торгівлю з NPC та систему квестів. Через деякий час була навіть готова невелика сюжетка із вбивством боса наприкінці, але після довгих роздумів я дійшов висновку, що це все одно не та гра, в яку я хочу грати. У результаті кинув її та створив останній проект, над яким працював з 2017 по 2020 рік – Silver Cats.


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


(Початок роботи над локацією «Долина шахтарів», Silver Cats, 2017 рік)

Було вирішено робити оточення у hand-painted стилі, а персонажів у реалізмі. Болванки персонажів, створені в Makehuman, були досить гарної якості для інді гри, а робити персонажів з нуля було б надто довго.


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


(Долина шахтарів, Silver Cats, 2020 рік)

Unity, Krita та Blender на той час вже мали всі необхідні для роботи функції. Моделювати, програмувати та малювати текстури я вмів, тільки з анімацією та партиклами були проблеми. Болванки персонажів робив у Makehuman, потім редагував їх у Blender, моделював одяг та робив LOD меші для оптимізації. Asset Store здорово допоміг з анімаціями та партиклами, які я робити не вмів: там я знайшов майже всі анімації, які були потрібні. Але деякі анімації все одно довелося робити самому.


(Гільдійський ліс, Silver Cats, 2020 рік)

У серпні 2020 року я закінчив розробку гри, а 18.12.2020 вона вийшла в реліз.