Кросплатформний рушій візуальних новел

Кросплатформний рушій візуальних новел 19.05.2020

Кросплатформний рушій візуальних новел

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

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

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

Для розробки ігрового рушія візуальних новел було використано інтегроване середовищі розробки для професійного програмування на мовах JVM від JetBrains - IntelliJ IDEA. Мовою програмування була обрана сучасна JVM мова Kotlin, яка при компіляції конвертуєтся в байткод однієї з найпопулярніших кросплатформених мов програмування – Java. Для графічного відображення візуальної новели була обрана кросплатформена бібліотека LibGDX з підтримкою десктопних платформ Windows, Linux та Mac, мобільних платформ Android, iOS та BlackBerry, а також веб-браузерів з підтримкою HTML5.

Таким чином це дозволятиме створювати візуальни новели по принципу “Write once, run everywhere” – “Напиши один раз, запускай скрізь”, додаючи тільки лаунчери для того чи іншого бекенду, підтримуваного LibGDX.

У архітектурі рушія було використано патерн екранів, які названі GUI - graphical user interface чи графічний інтерфейс користувача. Це дозволяє без зайвих переписувань та змін коду відображати будь які екрани у рамках гри шляхом визову лише одного методу у головному класі рушія. Усі введення користувача відловлюються на рівні одного з бекендів бібліотеки LibGDX, як-от наприклад LWJGL у бекенді для десктопів та передаються у екрани, тому усі додаткові перевірки (натиск кнопок миші та зчитування її позиції для перевірки натискання на кнопки, зміна розміру вікна при зміні роздільної здатності гри, відкриття та закриття екрану, тощо) можна робити в середині екрану, зберігаючи принцип єдиної відповідальності і не перевантажуючи основні класи та обробники введення зайвими перевірками.

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

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

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

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

 

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


Назва конкурсу:  Конкурс «Кращий інноваційний диплом (проект)»
ПІБ конкурсанта:  Шушляков Олександр Дмитрович
Країна:  Україна
Область:  Харківська область
Назва НЗ:  Національний технічний університет «Харківський політехнічний інститут»
Учасник фіналу:  Так
Місце Фінал:  5
Файл статті (pdf):  Завантажити

Повернення до списку