www.mudconnector.su

Национальный мадконнектор.
Текущее время: Чт мар 28, 2024 1:58 pm

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 1:01 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Kalevala писал(а):
KadVar писал(а):
Т.е. основные преимущества - возможность что-то быстро подкрутить в онлайне без перекомпиляции.
Я почему спрашиваю, когда я еще что-то активно дописывал, я вначале собирал, потом тестировал :),
и только потом ставил на "боевую" версию, т.е. возможность что-то быстро сломать починить
была не так уж востребована :)

Да не "что-то" подкрутить )) у нас на луа уже целый класс написан. Потом добавление умения "стандартным" способом предполагает написание его в коде (Си Си++) затем вы пересобираете мад, запускаете. Бац... хрень вылезла. Вы опять лезете в код, меняете, опять пересобираете, запускаете. Бац еще и.т.д. А тут можно не пересобирать ничего. И тестовую версию отдельно не надо запускать. Ну поставили в скрипте-умении условно говоря фильтр по имени персонажа которым тестируете, чтобы для него работало, а для других нет и ковыряете. Просто? Просто. Быстро? Быстро.

Честно - никогда не страдал от подобных проблем.
Сборка кода на С++ на современных компах почти мгновенна.
Для ДОБАВЛЕНИЯ функционала понимаю в чем небольшие преимущества, а вот для ИЗМЕНЕНИЯ ?
Подкрутил какую-нибудь формулу, ошибся слегка... Бац... и половина тех кто в онлайне сдохла :)
Как-то я "сцу".

Kalevala писал(а):
KadVar писал(а):
Большее удобство реализации чем на С++ если честно не понимаю с чем могло быть связано.

да хотя бы тем, что вам с памятью не надо заморачиваться никак. Да я понимаю, что при наличии прямых рук и на С++ не будет никаких заморочек с памятью, но это у выс они прямые, а у других?

А у кого совсем непрямые, того лучше в движок не пускать "дописывать".
Я к чему... с зонами - нет вопросов. Для движка не вижу существенных плюсов, пытаюсь
понять, может всё-таки есть они...

К слову: какой-то "аккаунтинг" по времени выполнения есть ?
Ну чтобы какой-нибудь track(написанный на луа) не сожрал весь процессор ?


Kalevala писал(а):
KadVar писал(а):
К слову: как решаете проблемы с "мобпрогсами" на lua ?
Конкретно с wait. Его нету просто, или какие-то автопроверки генерятся ?
Объясню проблему, если между действием А и Б есть некий wait и прошло
время, то до начала реализации действия Б хорошо-бы проверить его адекватность.
Чтобы не оказалось, что ситуация реально изменилась (игроки к примеру кого-нибудь
прибили) и действие Б уже будет малоправильным.


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


Т.е. в реальности у вас 99% триггеров без delay ?
Атомарные так сказать ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 1:56 pm 
Не в сети

Зарегистрирован: Пт дек 26, 2014 1:14 am
Сообщений: 20
KadVar писал(а):

Честно - никогда не страдал от подобных проблем.
Сборка кода на С++ на современных компах почти мгновенна.
Для ДОБАВЛЕНИЯ функционала понимаю в чем небольшие преимущества, а вот для ИЗМЕНЕНИЯ ?
Подкрутил какую-нибудь формулу, ошибся слегка... Бац... и половина тех кто в онлайне сдохла :)
Как-то я "сцу".

Ну это уже вопрос к пряморукости опять же. Как-то особо не страдаем от таких проблем )))
Сборка/разборка/пересборка. Вопрос ЗАЧЕМ? Если можно делать без этого. Нет ну никто не спорит, хотите пересобирайте, мне лично стало гораздо удобнее. Кроме этого есть и другие причины. Ну вот нужно умение изменить, а кодера нет. Зато есть имм с соответствующим доступом. Взял и поменял без всяких пересобираний движков. Возникла у вас необходимость вообще отключить умение. Взяли отключили. Я уж не говорю про игровые ситуации. Допустим нужно вам сделать чтобы в какой-нибудь зоне умение работало лучше, а в другой хуже бац поменяли заработало по другому. Все это можно делать оперативно.

Kalevala писал(а):
А у кого совсем непрямые, того лучше в движок не пускать "дописывать".
Я к чему... с зонами - нет вопросов. Для движка не вижу существенных плюсов, пытаюсь
понять, может всё-таки есть они...
К слову: какой-то "аккаунтинг" по времени выполнения есть ?
Ну чтобы какой-нибудь track(написанный на луа) не сожрал весь процессор ?

Ну как бы это сказать. Чем больше людей имеют доступ к коду именно движка тем больше вероятность того, что они что-нибудь когда нибудь точно сделают не так и грохнут. Разделять ядро (условно говоря) системы и функционал (заклинания, умения и прочее) идея правильная луа это позволяет сделать. Не слышал термина аккаунтинг, но если вы имеете ввиду как реализуется зависание прогсов, скриптов, то реализовано это через функцию lua_sethook. Каждому скрипту и прогсу на луа отводится время выполнения по окончанию которого, если прогс/скрипт не завершается, то его прерывает система, а в визнет вываливается сообщение о прерывании скрипта.

KadVar писал(а):
Т.е. в реальности у вас 99% триггеров без delay ?
Атомарные так сказать ?


Не совсем понял, что вы имеете в виду. У вас, что все прогсы разнесены по времени что ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 2:37 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Kalevala писал(а):
Не совсем понял, что вы имеете в виду. У вас, что все прогсы разнесены по времени что ли?


Не все, но порядка 50%.
В основном это касается "толкания длинных спичей". Т.е. во-многом косметический эффект.
Т.е. моб когда начинает что-то говорить, то это по-хорошему должно поступать "порциями".
Т.е. он говорит 1 абзац, ждет несколько секунд, затем говорит второй.
Потому как иначе это выглядит немного странно в том смысле, что "по экрану пробегает
дофига надписей мгновенно + что-то меняется".

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 2:51 pm 
Не в сети

Зарегистрирован: Пт дек 26, 2014 1:14 am
Сообщений: 20
Ну что-то такое можно реализовывать у нас через тригер delay, но честно говоря не сталкивался особо с такой проблемой. Как-то обходился.

Что касается Lua в нем есть библиотека coroutine из хелпа по Lua
Lua поддерживает подпрограммы, эту технологию часто называют общей многопоточностью.
Подпрограмма Lua представляет собой независимый поток выполнения. Несмотря на это, в отличие от потоков в традиционных многопоточных системах, подпрограмма может приостановить свое выполнение только в результате явного вызова функции yield.


Что-то такое наверное можно, но я не копал там глубоко. Пока вроде не требуется.

P.S. Тут подумал в Аладоне такое довольно легко можно реализовать через триггер рэндом и тот же Lua.
Триггер RANDOM срабатывает раз в 4 секунды. Выглядеть будет примерно так: Проверяем переменную шага и переменную времени, если время вышло и номер шага тот, то выводим текст, увеличиваем шаг переустанавливаем время и выходим. Переменная шага просто инкрементный счетчик по номеру абзаца текста, а в переменную времени запоминаем текущее время в секундах. Обе переменных объявляем глобальными на первом шаге например.
Так по идее любые куски текста можно вывести.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 3:29 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Да проблема не в реализации wait, я думаю с этим вообще не будет, если запускать саму луа в отдельном потоке.
Проблема в проверках, которые надо делать между действиями.
Я поэтому и спросил, что думал, что возможно у вас есть готовое решение этой проблемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 3:33 pm 
Не в сети

Зарегистрирован: Пт дек 26, 2014 1:14 am
Сообщений: 20
KadVar писал(а):
Да проблема не в реализации wait, я думаю с этим вообще не будет, если запускать саму луа в отдельном потоке.
Проблема в проверках, которые надо делать между действиями.
Я поэтому и спросил, что думал, что возможно у вас есть готовое решение этой проблемы.


А в чем проблема проверок? Завести переменные, да проверять.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 3:54 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Kalevala писал(а):
А в чем проблема проверок? Завести переменные, да проверять.


Надо как-то автоматизировать процесс.
Иначе не напроверяешься... т.е. в семантике мобпрограммы-на-луа проверок после каждого wait быть не должно,
они должны делаться автоматом. Беглое рассмотрение вопроса дает довольно большой объем частностей.
Это всё проходимо, проходимо вообще всё :), меня интересовало как другие решали такие проблемы. (если решали)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 4:06 pm 
Не в сети

Зарегистрирован: Пт дек 26, 2014 1:14 am
Сообщений: 20
KadVar писал(а):
Надо как-то автоматизировать процесс.
Иначе не напроверяешься... т.е. в семантике мобпрограммы-на-луа проверок после каждого wait быть не должно,
они должны делаться автоматом. Беглое рассмотрение вопроса дает довольно большой объем частностей.
Это всё проходимо, проходимо вообще всё :), меня интересовало как другие решали такие проблемы. (если решали)


Ммм видимо без примеров не обойтись. Что вы подразумеваете под проверками или их отсутствием. Приведите в пример конкретную ситуацию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 5:03 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Ну эээ.. схематично

Код:
onReceiveItem = old_sword
  say А спасибо тебе чувак, что ты принес мне мой старый меч
  say Подожди, я сейчас найду для тебя что-нибудь блаблабла
  echo Пожилой кузнец стал копаться под прилавком
  wait 3 second
  say А вот нашел я офигительную хрень
  give хрень player.name


Вот тут, после "wait 3 second" хорошоб проверить, что моб все еще
не в состоянии "дерется с player.name", к примеру :)))
И вручную делать это в том случае, если количество say, к примеру 100
(а бывает и больше, некоторые баллады поют, зарразы :)) как-то не очень хочется.

Очевидно надо проверки на старт проводить и после каждого wait, но чую этого
недостаточно будет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация итп, отделено.
СообщениеДобавлено: Пт дек 26, 2014 5:19 pm 
Не в сети

Зарегистрирован: Пт дек 26, 2014 1:14 am
Сообщений: 20
KadVar писал(а):
Ну эээ.. схематично

Код:
onReceiveItem = old_sword
  say А спасибо тебе чувак, что ты принес мне мой старый меч
  say Подожди, я сейчас найду для тебя что-нибудь блаблабла
  echo Пожилой кузнец стал копаться под прилавком
  wait 3 second
  say А вот нашел я офигительную хрень
  give хрень player.name


Вот тут, после "wait 3 second" хорошоб проверить, что моб все еще
не в состоянии "дерется с player.name", к примеру :)))
И вручную делать это в том случае, если количество say, к примеру 100
(а бывает и больше, некоторые баллады поют, зарразы :)) как-то не очень хочется.

Очевидно надо проверки на старт проводить и после каждого wait, но чую этого
недостаточно будет...


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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron