26 may
2016
В данный момент думаю изменить упоротую систему привязки ивентов к глобальному таймеру на менее упоротую, но, поскольку вряд ли это последнее изменение, ищу советов, основанных на личном опыте (или гугле, да).
Упоротая система
Хэштейбл с 50000 строк для таймера. В ячейках: 0 - число ячеек в строке, 1 - Запускаемый на этом тике триггер, 2 - Целочисленное, которое при запуске триггера заносится в глобалку, 3 - Юнит, который при запуске заносится в глобалку(иногда позволяет избегать муторных стекообразных костылей). Далее 123 повторяются. После выполнения действий со строкой child_0 становится = 0. Планировал 2 и 3 просто перевести в неопределенные параметры, без привязки к типу, а 1 в экзекут функции (но, в случае с экзекута триггера с ним так удобно работать через WE :) )
Проблема возникает когда нужно делать что-то с малым периодом. Опять же, передвижение юнита с 0.01 (покуда существуют 100Hz+ мониторы, я буду юзать период 0.01(хотя периодичность легко меняется, т..к. всё в дефайнах)). В этом случае нужно проделывать дофига действий каждый тик. Не айс.
Проблема возникает когда нужно делать что-то с малым периодом. Опять же, передвижение юнита с 0.01 (покуда существуют 100Hz+ мониторы, я буду юзать период 0.01(хотя периодичность легко меняется, т..к. всё в дефайнах)). В этом случае нужно проделывать дофига действий каждый тик. Не айс.
Менее упоротая система
Хэштейбл с 0 строк для таймера. В ячейках: 0 - число ячеек в строке, 1 - Запускаемый при (2==3) триггер, 2 - текущий тик для события, 3 - Периодичность события, 4 - Число тиков(уменьшается с каждым проком. Если равно нулю - приравнять к -1. Ячейки с -1 пропускаются циклом - обработчиком. Если событие бесконечное - приравнять к -2 (пока минусуя единицу оно дойдет до нуля через переполнение целочисленной - пройдет 12к часов при тикрейте в 0.01)), 5 и 6 - под любые данные. (если данных нет - лишнюю память не жрет, так ведь?) | ||
В этом случае нет ограничения в 50к тиков, как устанавливалось до этого. И, в целом, я пока не вижу минусов у этой системы. Во избежание слишком лютого проседания памяти планирую флашить строку, если обработчик нашел только минус единицы. (бесконечные ивенты легко засунуть обратно). | ||
Мхм... Теперь, изложив свои мысли вижу смысл сделать 3 строки в хештейбле - 1 для одноразовых проверок, 2 - для периодичных, 3 - для бесконечных ивентов. И флашить по строке, когда в 1 или 2 остаются лишь минус единицы. |
И да, мне в кайф изобретать велосипеды.
Answer
Diaboliko, xgm.guru/p/blog-nvc123/101422
это про то как вешать всякую фигню на общий таймер
хэш тут нафиг не нужен т.к. таймер 1
это про то как вешать всякую фигню на общий таймер
хэш тут нафиг не нужен т.к. таймер 1
To leave a comment please sign in to the site.
Блог
Edited by Raised
Блог
Edited by Diaboliko
Для таких целей моя "менее упоротая система" подходит, вроде как... Но во второй раз я мог не учесть что-то также как и в первый.
Блог
Блог
Проекты :
Way of Others
Simple AoS
Elven Union
Plague
Во славу Лоа
zombie rush new
Былые долги
Блог
Блог
Edited by Diaboliko
А вот про ограничение в фпс не слышал.
Блог
Проекты :
Way of Others
Simple AoS
Elven Union
Plague
Во славу Лоа
zombie rush new
Былые долги
Блог
Проекты :
Во славу Лоа
zombie rush new
Assasin's Wars
Эволюция видов
Christmas Preparations
это про то как вешать всякую фигню на общий таймер
хэш тут нафиг не нужен т.к. таймер 1