Интерпретатор скриптов TypeScript, работающий в среде JavaScript. Технология горячего обновления кода для небольших игр на примере WeChat.
Описание проекта egret_demo:
Проект включает простую игру и функции, такие как публикация плагинов (необходимо использовать формат commonjs2, так как exml также требует горячего обновления), горячее обновление ресурсов (реализовано загрузка, распаковка и кэширование всех файлов в Start.ts) и горячее обновление кода (требуется самостоятельная настройка сервера и реализация в основном файле queryCode).
Для горячего обновления ресурсов достаточно выполнить команду egret publish --target wxgame, а затем упаковать файлы ресурсов в zip-архив в каталоге с расширением remote.
Пример горячего обновления кода представлен в Main.ts.
При отправке на проверку рекомендуется также скомпилировать логику горячего обновления в JavaScript. После прохождения проверки, при необходимости выпуска новой версии, сервер переключается на использование кода горячего обновления, и ресурсы также упаковываются в zip-файл.
Проект cocos_demo:
Демонстрационный проект Laya Engine пока недоступен.
Следующие функции ещё не реализованы (будут реализованы позже):
Пример:
qs.run(`
class Start{
public constructor() {
console.log('你好,世界!');
}
}
`, 'Start', window);//если весь код объединён в одном файле, этот способ более удобен. Если код фрагментирован, лучше использовать следующий способ:
Другой способ:
var runTime = new qs.RunTime(window);//создать объект времени выполнения
runTime.regedit(`class Test{public constructor(){console.log('Ты хороший, мир!')}}`);//зарегистрировать класс Test
runTime.regedit(`class Start{public constructor(){new Test()}}`);//зарегистрировать класс Start
new runTime.g.Start();//создать экземпляр класса Start, в некоторых случаях можно просто использовать new Start();
С 26 марта доступно обновление только определённых методов или классов. Реализация находится в egret проекте в UpdateFunction и UpdateClass. Рекомендуется использовать локальное обновление, а не полное горячее обновление.
Результаты сравнительного тестирования производительности:
На устройстве Huawei Mate20:
На ПК с использованием Unity и трёх популярных решений для горячего обновления (scorpio, lua, cls):
Результаты сравнения производительности:
Исходный код JavaScript оптимизирован для циклов for, поэтому его производительность высока. Можно проверить это, выполнив цикл 100 миллионов раз без реализации for. Сравнение с несколькими популярными решениями для горячего обновления в Unity показывает, что 1 миллион вычислений не уступает им по производительности. Однако только циклы и вычисления не дают полной картины. Тестирование производительности лишь отражает некоторые аспекты, а не всю картину. В целом, как и решения для горячего обновления в Unity, оно не может полностью заменить исходный код.
В заключение: по просьбам пользователей, в спешке публикуется предварительная версия, которая не является идеальной и может содержать неизвестные ошибки. Тем не менее, она подходит для обычного развития. Разработчики с навыками могут попробовать её.
Из-за самостоятельной предпринимательской деятельности и большого количества дел в компании, у автора ограничено время. Библиотека ещё не полностью доработана. Если есть проблемы, пожалуйста, поймите ситуацию. Когда компания встанет на ноги, автор обязательно будет тщательно поддерживать эту библиотеку.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )