Skip to content

1.0 | Скриптовой Движок | Введение

HollowHorizon edited this page Apr 19, 2023 · 2 revisions

Скриптовой движок KotlinScript

Моё ядро HollowCore использует продвинутый скриптовой движок KotlinScript, специально переписанный для использования в модах. KotlinScript - это язык программирования, который позволяет создавать скрипты на Kotlin с некоторыми упрощениями. Например, вам не нужно создавать классы или методы - все, что вы напишете в скрипте, будет запущено как отдельный метод. Однако вы по-прежнему можете придерживаться всех принципов ООП с некоторыми допущениями.

HollowEngine использует этот движок для создания различных скриптов, включая Диалоги и События. Если вы уже знакомы с программированием на Kotlin, то трудностей у вас не возникнет. Если же нет, то настоятельно рекомендуем ознакомиться хотя бы с основами этого языка!

Как создать скрипт?

Прежде всего установите мод и зайдите в мир. После чего в папке с игрой (.minecraft) появится папка hollowscript. В ней вы и можете создавать скрипты. Рекомендую распределять файлы по разным папкам, например: hollowscript/modpack/chapter_1/prologue/....

Соответственно пакет в начале скрипта тоже лучше именовать начиная от коренной папки, например package modpack.chapter_1.prologue.

Названия файлов обязаны иметь вид name.type.kts, где name - название скрипта, type - тип скрипта (у каждого вида скриптов свой тип, их имена соответственно в других разделах), kts - окончание скрипта, оно и должно так называться.

После запуска будет компиляция, она может занимать от 5 секунд, до 3-5 минут в зависимости от размера скрипта и производительности ПК. После первой компиляции скрипты кэшируются и запускаются моментально. При изменении скрипта и повторного запуска скрипт компилируется заново.

Для создания вашего первого скрипта необходимо установить мод и зайти в мир. После этого появится папка hollowscript в папке с игрой (.minecraft), где можно создавать скрипты. Рекомендуется распределять файлы по разным папкам, используя пакеты в начале скрипта, начиная от коренной папки (например первая строка: package ru.hollowhorizon.story_modpack.event_1). Это важно, чтобы ваши скрипты меньше конфликтовали с другими, а также при написании библиотек. (Но я бы не рекомендовал совмещать несколько сюжетных сборок...) Названия файлов должны иметь вид name.type.kts, где name - название скрипта, type - тип скрипта (у каждого вида скриптов свой тип), kts - окончание скрипта. После запуска скрипта происходит компиляция, которая может занимать от 5 секунд до нескольких минут, в зависимости от размера скрипта и производительности ПК. После первой компиляции скрипты кэшируются и запускаются моментально, а при изменении скрипта и повторном запуске он компилируется заново.

Известные проблемы

  • Скриптовой движок может работать не во всех лаунчерах. На данный момент работоспособность гарантирована лишь в Официальном Лаунчере, TL Legacy и TLauncher. В остальных не тестировалось.

  • При использовании в коде классов из игры, все переменные и методы обфусцированны, т.е. вместо условного Minecraft.getInstance().setScreen(...) придётся писать Minecraft.func_71410_x().func_147108_a(...), исправить это в ближайшие недели не получится, ибо придётся серьёзно переписывать компилятор Kotlin.

  • Пока мод не тестировался на сервере, так что это придётся учитывать при разработке, ибо никакую совместимость я пока не писал, но теоретически всё должно работать. Только учитывайте, что диалоги - чисто клиентская часть, а события - серверная.