Показано с 1 по 6 из 6

Тема: [MZ] Сборник рецептов для добавления «ЭкшОна» в игру (и некоторые размышления)

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #4
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

    Спойлер 3. Нюансы по практической части:

    Что ж, сделать можно много чего, на самом то деле. Но чтоб работало это все вменяемо…может и не работать.
    Вот что нужно учесть при реализации всего вышенаписанного:

    1) Хоть мейкер и позволяет хранить функции в переменных, но «вешается», если таких функций будет много. Много, в моем случае, было равно 16. Пришлось делить объявление функций на три отдельных общих событий.
    Что значит «вешается»? Перестает подгружать-применять изменение в коде функций. Может он их так хитро кэширует…но иначе я это побороть не смог.

    2) Если у вас в игре есть перемещения по разным картам, то каждый раз после попадания игрока на карту с такой АБС, нужно заново вызывать событие инициализации всех функций. Поэтому событие с инициализацией (или которое вызываем Общее событие инициализации) нужно на карте ставить с «Удалением события» - это заставит его однократно отработать при КАЖДОМ перемещении на карту.

    3) При большом количестве эвентов-врагов, особенно стреляющих-бомбистов, может лагать. Ограничивайте их кол-во или активируйте их при достижении определенного фрагмента карты.

    4) Также при большом кол-ве эвентов может повторяться Id клонируемых, чем это чревато – я не знаю.

    5) При использовании такого подхода в создании «АБС», может быть ситуация что эвент «удалится» быстрее чем нужно и будет игровая ошибка. Я не нашел решения этого вопроса, кроме как написание отдельного мини-плагина, оборачивающего ошибку (код плагина скопируйте в файл с расшерением .js и подключите к проекту):

    Код:
    Game_Event.prototype.findProperPageIndex = function() {
    	try{
    		const pages = this.event().pages;
    		for (let i = pages.length - 1; i >= 0; i--) {
    			const page = pages[i];
    			if (this.meetsConditions(page)) {
    				return i;
    			}
    		}
    	}catch(exception){
    		return -1;
    	}
    	return -1; 
    };
    6) Ну и самый важный нюанс!
    Вызов меню (открытие любой другой сцены) заставляет мукер перерисовывать (или как-то иначе заново инициализировать) игровую сцену, в результате чего выходят очень интересные ошибки.
    Возможно, если реализовывать это все плагином - такого не будет.
    В текущей реализации единственный выход - запрещать игроку открывать все окна/сцены...то есть запрещать доступ к меню!

    Последний раз редактировалось Darchan Kaen; 30.03.2022 в 19:36. Причина: Самый важный нюанс!

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[MZ] Сборник рецептов для добавления «ЭкшОна» в игру (и некоторые размышления)