Вежа Героїв (PoketDungeon)

Головне меню гри

Не знаю з чого і почати розповідь про цей проєкт. Сказати можна дуже багато, але для тих хто хоче просто дізнатись про його стан і статус, скажу коротко: гра готова ~60%, проєкт закинутий, але не забутий.

Із цим розібрались, тепер більш детально.


Первинний задум

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

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

Головне меню
Меню персонажа
Магазин з предметами
Битва
Кімнати підземелля

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

PoketDungeon (робоча назва проєкту) мала стати реінкарнацією цієї гри, розробка якої провалилася через надто амбітний масштаб. Вгадайте через що вона зрештою теж провалилася?

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


Реалізація задуму

Генератор підземелля

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

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

Старий генератор утворив два кластери кімнат

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

Процес вирощування “гілок" підземелля

Розміщення спецкімнат відбувається за принципом дальності від початку. Кожна кімната має “коефіцієнт віддаленості” від початкової кімнати, і за цим показником кімнати розділялися на три групи: близькі, середні та дальні. Для кожної групи кімнат існує свій набір спецкімнат, у близьких кімнатах міг з’явитися фонтан, у середніх з’являлися магазин та скарбниця, у дальній з’являвся перехід на наступний поверх. Також за цим принципом розташовувалися і битви: у ближніх кімнатах були простіші битви, і чим далі в підземелля, тим важчими ставали битви. Але цей принцип я задав до того як я зробив так що різні гілки можуть поєднуватись між собою, тому бувало так що по сусідству могли бути розташовані як найлегші битви, так і найважчі, поряд з фонтаном міг з’явитися перехід між поверхами (бос) і так далі. Тоді я не знав як це полагодити, тому просто вирішив залишити все як є і пішов займатися іншими системами, але зараз я розумію що достатньо було просто перерахувати коефіцієнти дальності вже після завершення процесу створення кімнат…

Візуалізація груп кімнат за дальністю та приклад розташування спецкімнат

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

Екран переходу між поверхами
Екран переміщення по мапі підземелля

Текстова система

Також для цієї гри я спробував вперше написати таку систему тексту, щоб можна було перемикати локалізації (українська, англійська чи будь яка інша) та щоб речення конструювались безпосередньо під час гри. Наприклад, повідомлення що "Вас атакує [ім’я_ворога]!" дописувалось залежно від ворога що атакує, або “Ви знайшли [назва_артефакту]“

Це прості речі, які є стандартом для подібних проєктів, але тим не менш це додало новий рівень складності для розробки. Що буде якщо в речення вставиться слово що зробить його надто довгим щоб поміститись на екрані? Як бути з утворенням відмінків для слів? Як це буде виглядати на іншій мові? Все це доводилось тестувати, переписувати, перефразовувати…

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

Спрайт із українським та англійським шрифтами

RPG система

Екран вибору стартового класу персонажа (третій спрайт - плейсхолдер)

Основою “білду“ персонажа гравця є три ”первинних характеристики”: Сила, Спритність та Магія. За кожний здобутий рівень одна з цих характеристик підвищується на 1, а те яка саме характеристика буде зростати визначається “класом” персонажа: Мечник буде підвищувати Спритність, Воїн - Силу, Маг - Магію, Шукач пригод - випадкову характеристику. Також є можливість вплинути на розвиток персонажа якщо вдягнути спеціальний артефакт - тоді можна буде самому обирати яка характеристика зросте при отриманні нового рівня.

Від первинних характеристик вираховуються усі інші, “вторинні”, характеристики: здоров’я (Сила), наснага (Спритність), магічна енергія (Магія), швидкість (Спритність), фізична (Сила + Спритність) та магічна (Магія) атаки.

Екран вибору персонажа, стовпчик справа - характеристики

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

В нижній частині екрану опис меча, де зазначено які характеристики, та скільки їх потрібно

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

Список бойових здібностей що можна спорядити

Екіпірування: Артефакти

Екран персонажа, інвентар

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

Типи ушкоджень

Всього є шість типів ушкоджень, умовно розділених на дві групи: фізичні та магічні.

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

До магічних стихій ушкоджень входять Вогонь, Лід та Блискавка.

Додатково, типи ушкоджень можна розділити на “чисті“ та “комбіновані“, залежно від характеристик які потребуються їх бойовими здібностями. До чистих типів ушкоджень належать Удар (Сила), Поріз (Спритність) та Блискавка (Магія). Комбінованими типами є Укол (Сила + Спритність), Вогонь (Сила + Магія) та Лід (Спритність + Магія).

Бойові здібності

Бойові здібності також розділені на дві категорії: атаки, та “дії у відповідь“ або “реакції“. Про другий тип розповім коли дійдемо до процесу битв.

Здібності вимагають певної кількості первинних характеристик та типу Зброї для виконання.

Здібність: спалах вогню, його опис у нижній частині екрану

Екіпірування: Зброя

Магічний жезл

Зброя є, фактично, множником для визначення кількості ушкоджень певного типу. Тобто, наприклад, атака вогняною здібністю за допомогою Омніжезлу (на картинці) завдасть 23(Атк. М) × 0.80 ушкоджень.

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

Екіпірування: Броня

Броня: шкіряний жилет

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


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

Те що задумувалося як проста копія покемонів зрештою перетворилося у складну систему.

Кількість комітів до репозиторію проєкту за весь час розробки гри

Бойова система

Нарешті ми дісталися до основного геймплейного циклу - битв.

Екран Битви

Зверніть увагу на вікно статусу гравця у правій частині екрану, вона містить такі інформаційні шкали (зверху - вниз): шкала ходу, шкала здоров’я, шкала наснаги, та шкала магічної енергії.

Битви у грі покрокові, черга ходів визначається наповненням “шкали ходу“ - від 0% до 100%, швидкість наповнення цієї шкали залежить від вторинної характеристики Швидкість кожного бійця. Основною фішкою цієї системи є те що під час битви швидкість бійців може змінюватись - як зростати, так і зменшуватись. Робити це можна за допомогою витратних предметів або здібностей, наприклад, бойові здібності льоду зменшують швидкість ворога “заморожуючи” його.

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

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

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

Нарахування грошей та досвіду

Бойова система сама по собі не складна, проте у ній є потенціал для розробки власної стратегії та стилю бою.

Дослідження підземелля

Другий основний геймплейний цикл це дослідження підземелля.

Початок дослідження поверху

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

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

Благословенний фонтан на мапі

Також можна зустріти магазин де можна купити різноманітні предмети, або продати ті що у вас є.

Магазин на мапі, відмічений монеткою
Всередині магазину

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

Кімната зі скарбницею, відмічена скринею

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

Кімната з босом, відмічена сходами

Чому розробка провалилася

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

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

Гра не була цікавою, в той час як її механіки цікавими були.

Усвідомлення цього викликало у мене чимало фрустрації, і на фоні довгої розробки, минулих провалених проєктів та проблем у житті, це помістило мене в певну “творчу кризу”, я перестав постити щось та звів розробку проєктів до мінімуму. Про PoketDungeon і думати не хотілось, не те що продовжувати щось робити.

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

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

У підсумку, відповідь на питання чому гра провалилася, проста: моя недосвідченість та упертість.


Що далі?

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

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

Дякую всім хто дочитав це до кінця, та усім хто підтримує мене у коментарях, я це дуже ціную. Чекайте на майбутні публікації.


Бонусні знятки

Перший макет гри
Другий макет гри
Третій макет гри
Макет магазину
Макет меню персонажа
Значки предметів
Вороги скелети - Раб, Наглядач, Найманець, Лицар
Вороги фавни - Боєць, Шаман, Мисливець
Макет зображення ворога у мануалі
Варіації тайтлтексту та назви
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Neсury
Neсury@y0MAQaJ8ZuGC0_l

15Прочитань
0Автори
0Читачі
На Друкарні з 12 березня

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається