Перейти к контенту

Курилка программистов


Рекомендуемые сообщения

Ну, вообще-то приведенный вариант - он уже тоже "несколько" устарел, но по смыслу - да.

в call_upd3() мы проверяем - есть ли ожидающие своей очереди арты. Если есть - проверяем еще и условия, что пора. В простейшем варианте - такое условие - время: n игровых секунд от начала игры, допустим.

(в своем варианте я заменил на "от загрузки", но это не принципиально).

 

В не простейшем - но это уже разговор о вкусе фломастеров - я бы предпочел вариант "насыщения" аномалии, а не время.

 

Назвать это таймером - можно и назвать, конечно. Почему ж нельзя ? Если хочется ?

 

Но, даже такой способ я считаю чрезмерно агрессивным, поэтому ипользую очередь функций, которая просто перезапускается раз в 5 секунд, если закончилась. А уже в ней очередь аномалий, с которыми надо что-нибудь сделать.

 

  Показать

Но это уже, простите, уже совсем не таймеры. ;)

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Мы уже выяснили, что есть сложности с формулировками :)

Таймер - нечто, позволяющее выполнить какое-либо действие через минимальное определенное время © Примерно так. Каким образом это нечто функционирует, вопрос реализации.

И тут самое интересное - как не извращайся, количество проверок на такие события не изменится. Другое дело интерфейс. Я за удобство, а быстрее работать заставить вряд ли выйдет. Точнее не так - ресурсов использовать меньше. Все ветвления и "медленные" обработчики делаются опять же разными способами, не меняя сути в принципе.

  • Нравится 1

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий
  Dennis_Chikin писал(а):

есть ли ожидающие своей очереди арты

Само собой, пустоту мы и проверить "на пора" не сможем.

  Dennis_Chikin писал(а):

вариант "насыщения" аномалии

Опять же, что такое "насыщение"?

  Dennis_Chikin писал(а):

if global_time_ms >= t5000t then

Для меня это и есть таймер. Если время пришло, фигачим что нибудь (а именно, выполнение этих самых функций из t5000, я бы так сделал). Остальное (я про t5000i) - дополнительная надстройка, нужна она или нет, решать разрабу.

По мне размытие вызовов быстрых функций по апдейтам будет аналогична вызову, где написан коммент "здесь можно сделать что-нибудь полезное", а если попадется долгая функция - тут и размытие не проканает.

Если так немного отстраниться, то в этом случае можно запилить "каскад", т.е. вызвали первую функцию по срабатыванию на global_time_ms >= t5000t, далее перед последним эндом вызываем следующую (асинхронно, это вообще возможно в луа?), и так далее. Кстати, есть шанс того, что таймер может вновь сработать еще до завершения каскада.

  • Согласен 1

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Ну, о терминологии: "таймер" и "очередь" - вообще-то взаимоисключающие понятия.

Таймер - это мы должны бросить все, и немедленно выполнить. Очередь - это именно когда дойдет - вот тогда и...

 

t5000i в примере - это как раз указатель на текущий элемент очереди. Есть - выполняем, и ставим указатель на следующий. Нет - ничего не делаем. По времени здесь происходит установка на первый элемент - это чтобы "лишний" раз ничего НЕ выполнялось.

 

Да, если мы говорим о таймерах - повторяюсь, там обработка должна начаться сразу, как только время пришло. Если же используется очередь - оно может и прийти, и пройти, и еще раз прийти (точнее, в рассматриваемых реализациях - только пройти).

 

 

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

Ссылка на комментарий
  Dennis_Chikin писал(а):

Ну, о терминологии: "таймер" и "очередь" - вообще-то взаимоисключающие понятия.

Нет, это просто разные понятия

  Dennis_Chikin писал(а):

Да, если мы говорим о таймерах - повторяюсь, там обработка должна начаться сразу, как только время пришло. Если же используется очередь - оно может и прийти, и пройти, и еще раз прийти (точнее, в рассматриваемых реализациях - только пройти).

... о! можно попросить словарик? :) Ну какая у тебя терминология. А то постоянно ты непонят остаешься.

  Dennis_Chikin писал(а):

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

Сие к таймерам ну никак не относится.

  • Нравится 2

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий
  malandrinus писал(а):

Но периодически длинные апдейты приводили к тому, что просыпаешься на полчаса позже

 

 

Даже при использовании fastcall-а "пролетало"? %)

******************

Вообще по сну просто интересная заметка, по крайнем мере работающая в ЗП - для перемотки времени можно использовать банальный "спидхак" из какого нибудь Cheat Engine например. (или реализовать движковый аналог)

 

Он ускоряет все процессы игры в 2-100 раз, тем самым по сути несколько игровых часов пролетают за пару секунд как при перемотке, при этом происходят абсолютно все события как будто игрок эти часы просто стоял на месте и ждал. При этом те же апдейты продолжают вызываться аналогично с ускорением. Это самая что ни на есть "настоящая" реализация сна.

 

То-есть решается проблема когда игрок "засыпает" рядом с бежащим на него монстром и просыпается через 10 игровых часов рядом со всё тем же всё ещё бежащим на него монстром.

 

Правда можно столкнутся с проблемой что после долгого сна в игре может что то слететь. :D

По типу того как слетал game_time() после, кажется, игрового месяца. 

(Это как если бы стоять на одной локации несколько реальных часов без перезагрузок)

Изменено пользователем *Shoker*
  • Нравится 2
  • Полезно 1

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

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

Просто надо помнить, что точно и через него ничего не отмерить. Где-то сам же malandrinus и описывал.

 

game_time() - проблема с разрядностью. Да, так называемое "45-е мая". Ну, тут все по разному решают. Я вот, опять же, остановился на том, что 45 игровых дней на одной локации без единой перезагрузки сидеть вряд-ли кто будет.

 

 

2 xStream, к вопросу об определениях:

"Таймер - нечто, позволяющее выполнить какое-либо действие через минимальное определенное время" - в принципе, годится. Хотя, вообще-то, "гарантированно выдерживаемый интервал времени".

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Всем привет!

Вот заглянул в тему посмотреть что вы тут курите. :)

Накурили примерно на 100 милиБздэнов, не меньше.

  Для информации (Показать)
Ссылка на комментарий

По вопросу "исторического наследия" - так не то слово. Собственно, то что есть в амк-моде - в какой-то момент (и момент весьма затянулся) было практически единственным источником информации о "что вообще есть, и как это можно использовать". С работающими примерами.

 

А вот вопрос о том, что из этого следует использовать в 2015 году, и в каком виде - вопрос уже другой.

Как и вопрос о том, следовало ли вообще размножать то, что было в моде посредством простой копипасты, и скрещивая что попало с чем-нибудь еще. Причем вопрос уже не к авторам амк, естественно, а к тем, кто так делает.

Впрочем, опять же совершенно верно, что идея заставить ходить всех строем - неполезна, и в общем-то нереализуема. Просто это работает в обе стороны. "Зачем сделали, зачем выложили, зачем написали ?" - здесь ответ простой, и не очень приятный для вопрошающего.

В общем, даже странно, что именно об этом только здесь 5 страниц, не считая других тем, и не считая того, что отправилось в корзину ну вот хотя бы за пару последних месяцев.

 

Остается только еще раз повторить:

Посчитали нужным сделать - сделали. Посчитали нужным выложить - выложили. Посчитали нужным описать: что сделано, как работает, как используется - опять же, написали.

Увидели, что нечто можно/нужно поправить - опять же, выложили свой вариант.

 

Так же в принципе общеполезно может быть и "вот имеющийся вариант обладает такими вот особенностями, я их использую вот таким способом, а недостаток в моем случае ни как себя не проявляет/не мешает, поскольку вот в таких вот условиях он никогда не проявится".

 

Ну и дальше уже дело хозяйское, кто что для себя выберет.

 

P.S. А, да, остается только добавить, что "бывают и просто сны", и не всегда стоит искать какие-то намеки на неведомое в простых фразах, относящихся к самому предмету поста.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

 

 

  Dennis_Chikin писал(а):
Посчитали нужным сделать - сделали. Посчитали нужным выложить - выложили. Посчитали нужным описать: что сделано, как работает, как используется - опять же, написали. Увидели, что нечто можно/нужно поправить - опять же, выложили свой вариант. Так же в принципе общеполезно может быть и "вот имеющийся вариант обладает такими вот особенностями, я их использую вот таким способом, а недостаток в моем случае ни как себя не проявляет/не мешает, поскольку вот в таких вот условиях он никогда не проявится".

То есть обсуждать и критиковать в принципе не разрешается?

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

Что значит, "не разрешается" ? Где это написано ?

Просто обсуждать и критиковать можно так, чтобы с этого была какая-то польза, а можно - чтобы получилось лишь много букв.

 

"не умеете их готовить" - это и есть много букв.

Покажите, как вы их готовите - будет польза.

Изменено пользователем Dennis_Chikin
  • Согласен 1
Ссылка на комментарий

В общем и целом поддержу Дениса, критиковать думаю уместно разве что с предложением альтернативно-лучшего варианта выложенной разработки. Остальная критика как по мне - снобизм. Обсуждать же можно, почему нет? Если вам импонирует эта работа и вы хотите о ней узнать подробнее, спросите автора и он вам пояснит (плюсы, минусы, примеры использования и тэдэ и тэпэ), если последний не идиот разумеется. Далее опять же можете писать этому же автору при каких условиях вы получили колоссальную выгоду, или напротив какие-то баги, это создаст опять же "кучки" работающих в своих кругах, но хотя-бы обойдемся без навязывания что лучше/хуже, и не будет общения в стиле "кто ты, да кто я". Да и для большинства модов суперсистем не нужно как показывает практика (повальное количество модов-солянок на амк 1.4 по сей день создаются), для миллионов квестов нужно какое-то бездонное хранилище, оно уже есть в нормальном варианте, остальные различные прикладные элементы (таймеры, сигналы, ...) как мне думается можно использовать в любых формах и видах, опять же я сам лично колоссальных различий не замечал, хотя возможно потому, что опыта в создании глобальных модов нет практически.

Ссылка на комментарий

 

 

  Карлан писал(а):
В общем и целом поддержу Дениса, критиковать думаю уместно разве что с предложением альтернативно-лучшего варианта выложенной разработки.
, то есть, если на фоне существующих решений, решение кажется не айс, то эти существующие нельзя как вариант приводить? Обязательно очередной лисапед? :)

 

 

  Карлан писал(а):
Остальная критика как по мне - снобизм.

А я считаю, что те, кто написал такие же велосипеды, имеют право критиковать - опыт есть.

 

 

  Карлан писал(а):
Да и для большинства модов суперсистем

Это что за системы такие? Если вы про высокоуровневые, то у меня для вас плохие новости: вы повторяете путь тех, кто прошел "эволюцию" несколько лет назад, выдаете такие же решения, и при этом говорите, что костыльного типа решения (один в один как те, олдскульные и якобы непригодные) - айс, а получше и поэффективнее - фигня. Удачи, чо :)

 

 

  Карлан писал(а):
оно уже есть в нормальном варианте,

Как вы смеете это использовать?! Это же суперсистема!

 

 

  Карлан писал(а):
опять же я сам лично колоссальных различий не замечал

Тогда чего это конкретно то, что тут предлагается, нужно принимать с радостью и уважением? Про бритву Оккама слышали?

  • Согласен 1

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

Вот теперь уже я хочу пояснений. Означает ли все написанное, что в 2015-ом году все обязаны делать вот так: https://dl.dropboxusercontent.com/u/27871782/amk.script

только прикрутить еще куда-то сбоку систему ивинтов и песочницу от одного конкретного автора (указать, какого именно) ?

 

Кто не хочет делать так - отключить от интернетов и сослать на лесоповал ?

Ссылка на комментарий
  Цитата

 

только прикрутить еще куда-то сбоку систему ивинтов и песочницу от одного конкретного автора (указать, какого именно) ?

 

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

  • Нравится 1
  • Согласен 2

Отладчик и скриптер мода OGSE. Автор схемы "Компаньоны", стреляющего БТРа и многих других полезностей :wink:

Ссылка на комментарий
  Dennis_Chikin писал(а):

Означает ли все написанное, что в 2015-ом году все обязаны делать вот так:

Это означает, что выкинуть это "вот так" вообще в принципе :) И это не зависит от года. Твой лисапед не сильно от этого отличается.

  Dennis_Chikin писал(а):

только прикрутить еще куда-то сбоку систему ивинтов и песочницу от одного конкретного автора (указать, какого именно)

Системы ивентов - всего лишь один файл! О.Д.И.Н. с более менее внятными примерами. И для его работы напрочь не нужно "вот так".

  Dennis_Chikin писал(а):

Кто не хочет делать так - отключить от интернетов и сослать на лесоповал ?

Естественно. На земле дерьмокода и так тысячи :)

  • Согласен 1

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

Таки вопрос опять же: что делать с приведенным выше образцом ?

 

Указанные проблемы/возможность проблем (про "перестаравшись" и про затраты времени) - да, согласен, есть. Да, несомненно, есть спортивный элемент, в какой-то степени. Или не спортивный, а разгребая вот то, что, опять же, в приведенном примере - заодно и переписал.

 

И, отдельно, по поводу "все", "у всех" и "некрофилия" - несколько категорично. Не все и не у всех, во-первых, во-вторых - некоторым вещам тоже лет по пять-шесть.

 

 

"- Кто не хочет делать так - отключить от интернетов и сослать на лесоповал ?

- Естественно."

 

О, вот мы и дошли до сути. Благодарю, вопросов больше нет.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

@xStream, вообще тебя не понял. Про бритву-то слышал, только в противном случае ты должна меня ткнуть носом в какую-то более менее вменяемую сборку модулей, где вот все вышеперечисленное (ивенты там, таймеры и все прочее) есть в понятном виде. Что-бы вот я конкретно я это смог использовать. Лично я никакого отношения к моддингу на амк1.4 никогда не имел и иметь не буду, т.е. я олдскульного вида костыли на него не мастерил, и уж тем более никогда нигде их не выдавал, и совсем никогда не говорил, что это - айс :).

Ну и:

 

 

  xStream писал(а):
А я считаю, что те, кто написал такие же велосипеды, имеют право критиковать - опыт есть.

Обратного я и не говорил, только лишь с условием что покажи свой велосипед, тогда и критикуй. 

 

 

  xStream писал(а):
Это что за системы такие?

Сарказм как-бы. Ну это вот всякие новомодные ивенты, хранилища и тэпэ (хотя и это все далеко не вчера придумано ;)).

 

 

  xStream писал(а):
Как вы смеете это использовать?! Это же суперсистема!

Видимо ты меня не поняла...

Ссылка на комментарий
  Цитата

 

Таки вопрос опять же: что делать с приведенным выше образцом ?

 

В музей моддинга Сталкера под стекло.

 

  Цитата

 

Указанные проблемы/возможность проблем (про "перестаравшись" и про затраты времени) - да, согласен, есть. Да, несомненно, есть спортивный элемент, в какой-то степени. Или не спортивный, а разгребая вот то, что, опять же, в приведенном примере - заодно и переписал.

 

 

Вы лучше вот что сделайте. В движке игры есть специальные функции для профилирования кода. Вот эти:

 

  Цитата

 

C++ class profile_timer {

    profile_timer ();

    profile_timer (profile_timer&);

 

    operator +(const profile_timer&, profile_timer);

    function stop();

    function start();

    function time() const;

    function __tostring(profile_timer&);

    operator <(const profile_timer&, profile_timer);

};

 

 

На них очень легко себе сделать инструмент для профилирования. Например вот такой:

https://dl.dropboxusercontent.com/u/54347025/ogse/ogse_profiler.script

 

Так вот очень советую перед тем как какие-то участки кода переписывать, замерить профилировщиком время их исполнения до рефактора. Затем если время кажется ну уж очень большим - сделать рефактор и проверить снова. Обычно (если в исходном скрипте не совсем уж лютый дерьмокод) полученные результаты напрочь, полностью и навсегда отбивают желание из спортивного интереса переделывать трейд-менеджер и остальное мелкое одноразовое добро. ^_^  Lua-подсистема на самом деле очень и очень быстрая, медленней всего в ней, как ни странно, работют вызовы функций из движка, поэтому даже тотальный рефактор всего и вся способен добавить не более нескольких процентов скорости (опять же если это не дерьмокод, где на каждом апе перебираются все 65535 объектов игры).

  • Согласен 1

Отладчик и скриптер мода OGSE. Автор схемы "Компаньоны", стреляющего БТРа и многих других полезностей :wink:

Ссылка на комментарий

 

 

  Карлан писал(а):
только в противном случае ты должна меня ткнуть носом в какую-то более менее вменяемую сборку модулей

Тыкали. Неоднократно. Но видимо там слишком сложно с интрукцией и примерами.

 

 

  Карлан писал(а):
Ну это вот всякие новомодные ивенты, хранилища и тэпэ (хотя и это все далеко не вчера придумано ).

То же самое - новомодному сто лет в обед. Даже у Артоса, которого так хвалишь, благополучно затырены в мод все эти вещи.

 

 

  Карлан писал(а):
Видимо ты меня не поняла...

Поняла, но есть такая штука, как сарказм :)

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...