igrik
Posts: 2819
|
Мои мысли по этому поводу таковы: сама игра есть библиотека необходимых функций, событий и свойств. Я поэтому и очень сильно просил Берса, чтобы он включил 3 рессивера в базу эры (HE:Z, BM:Z и расширенное UN:C). Через них можно сделать практически половину необходимого функционала для стандартных потребностей пользователя. Просто нужно показать пользователю как это научиться легко делать самому.
Поэтому я не вижу смысла в ERM библиотеке. Также я не вижу чем полезным можно дополнить тот же FUN.erm. В нем уже есть всё необходимое.
game bug fixes extended.dll || My Plugins || My GitHub
|
|
20.04.2020 11:23 |
|
Algor
Posts: 3881
|
(20.04.2020 11:23)igrik Wrote: Также я не вижу чем полезным можно дополнить тот же FUN.erm. В нем уже есть всё необходимое.
igrik, ок, вот тебе пример: хочу узнать максимум маны героя, чтобы, скажем, восстановить/забрать/и пр. 10%, не важно...
Кинешь сходу код без UN:C который легко и просто, с учетом всех нюансов вернет мне его? Не?
А если кинешь код с UN:C, я вставлю его в FUN и можно будет !!FU(FUN.GetHeroMaxMana):Ph/?m; пользовать.
(20.04.2020 11:23)igrik Wrote: Просто нужно показать пользователю как это научиться легко делать самому.
Да, можно все делать сбазовым наборос инструментов. Да хоть на асме можно все делать.
Вопрос только в том, нахрена тратить время и изобретать велосипеды, которые в общем случае будут еще и кривыми, если можно взять готовый, уже вылизанный, сесть на него и ехать дальше писать что-то действительно новое?
|
|
20.04.2020 12:25 |
|
igrik
Posts: 2819
|
(20.04.2020 12:25)Algor Wrote: igrik, ок, вот тебе пример: хочу узнать максимум маны героя, чтобы, скажем, восстановить/забрать/и пр. 10%, не важно...
Кинешь сходу код без UN:C который легко и просто, с учетом всех нюансов вернет мне его? Не?
Это частный случай. А сколько таких частных случаев в игре? Правильно -> вагон и маленькая тележка.
(20.04.2020 12:25)Algor Wrote: Да, можно все делать с базовым набором инструментов. Да хоть на асме можно все делать.
Вопрос только в том, нахрена тратить время и изобретать велосипеды, которые в общем случае будут еще и кривыми, если можно взять готовый, уже вылизанный, сесть на него и ехать дальше писать что-то действительно новое?
Т.е. сейчас ты предлагаешь написать функции на каждый вопрошаемый "бзык". И сколько таких функций у тебя в библиотеке будет. Тысяча, две....?
game bug fixes extended.dll || My Plugins || My GitHub
|
|
20.04.2020 12:41 |
|
Algor
Posts: 3881
|
igrik, я понимаю, что не подстелишь везде соломку. Это и не нужно.
Но те моменты, которые требуют использования особых хуков или UN:C не плохо бы оформить в виде функций.
Конечно, если бы были !!HE-ресиверы, возвращающие тот же максимум маны или имя фала портрета героя, было бы еще более здОрово.
Но их нет и, значит, базовым функционалом ERM оно не делается (кроме, может, совсем-через-жопных вариантов). Поэтому такая библиотека, имхо - выход.
Для себя я так решил давно. И сделал. И продолжу развивать по мере появления необходимости.
Давить и спорить не хочется. Вы с Берсом видите проблему под другим углом. Меня ваши доводы не убедили, вас мои - тоже. Пора выдохнуть и заняться делом
|
|
20.04.2020 12:55 |
|
Zur13
Posts: 223
|
Я от имени простого ЕРМ скриптера неумеющего в UN:C выскажусь.
Товарищ igrik прав, адрес менеджера героев и менеджера битвы настолько часто нужен что их действительно стоило бы добавить в базовый ЕРМ, а почему не добавить расширенный синтаксис UN:C мне вообще не ясно.
Но и товарищ Algor прав желательно всё что можно обернуть в библиотечные функции, чтобы при любых изменениях кода игры, нужно было поправить адреса только в одной библиотеке.
Как пример вот тут описана функция получения адреса Z переменной, и она оказывается, не работает или уже не работает в ЭРЕ, есть подозрение что постепенно всё больше таких кусочков кода могут устаревать с развитием ЭРЫ, а подчисткой форумов никто заниматься не будет и потом перебирать накопанные на форумах нерабочие варианты это не есть хорошо. Я про то что такая библиотека даст возможность ЭРЕ более свободно развиваться ведь если такой кусочек кода есть только в библиотеке с развитием ЭРЫ достаточно будет поправить это место только в этой в библиотеке чтобы все моды не отваливалились с новым релизом.
P.S. к библиотеке можно даже прикрутить набор юнит тестов чтобы проверять не отвалилось ли чего в новой сборке ЭРЫ
(This post was last modified: 20.04.2020 13:12 by Zur13.)
|
|
20.04.2020 13:03 |
|
XEPOMAHT
Posts: 2356
|
(20.04.2020 13:03)Zur13 Wrote: Как пример вот тут описана функция получения адреса Z переменной, и она оказывается, не работает или уже не работает в ЭРЕ, есть подозрение что постепенно всё больше таких кусочков кода могут устаревать с развитием ЭРЫ
Прямая адресация - зло. Для совместимости с данными, которые могут быть перенесены другими моддерами, лучше считывать адреса с железобетонных функций, которые их используют.
Естественно, способ получения адреса по той ссылке - старый и не рассчитан на ERA (которой тогда ещё не было).
Про устаревание: к примеру, ERA PLUS переносит кучу данных для поддержки новых игровых фракций, после чего злая половина ERM-команд просто не работают или работают с ошибками. И это совсем не повод менять сам код ERA ради поддержки изменений в ERA PLUS - тут всё всецело на совести авторов модов, а не автора платформы ERA. Т.е. только моддеры могут скооперироваться и выпустить "мод для моддеров" с набором полезных ERM-функций.
(This post was last modified: 20.04.2020 14:57 by XEPOMAHT.)
|
|
20.04.2020 14:41 |
|
Zur13
Posts: 223
|
(20.04.2020 14:41)XEPOMAHT Wrote: (20.04.2020 13:03)Zur13 Wrote: Как пример вот тут описана функция получения адреса Z переменной, и она оказывается, не работает или уже не работает в ЭРЕ, есть подозрение что постепенно всё больше таких кусочков кода могут устаревать с развитием ЭРЫ
Прямая адресация - зло. Для совместимости с данными, которые могут быть перенесены другими моддерами, лучше считывать адреса с железобетонных функций, которые их используют.
Естественно, способ получения адреса по той ссылке - старый и не рассчитан на ERA (которой тогда ещё не было).
Про устаревание: к примеру, ERA PLUS переносит кучу данных для поддержки новых игровых фракций, после чего злая половина ERM-команд просто не работают или работают с ошибками. И это совсем не повод менять сам код ERA ради поддержки изменений в ERA PLUS - тут всё всецело на совести авторов модов, а не автора платформы ERA. Т.е. только моддеры могут скооперироваться и выпустить "мод для моддеров" с набором полезных ERM-функций.
Я про ЭРА плюс мало знаю, потому мне сложно оценить эту сторону, я оцениваю предложение товарища Algor, по расширению базового функционала ЕРМ с помощью библиотеки общих ЕРМ функций, как пример та же функция получения максимальной маны героя. Я понимаю, что под каждый мод ЭРУ переписывать это зло, но ведь если посмотреть на сообщения товарища Berserker, то создается впечатление что проблемы обратной совместимости занимают довольно много времени, и вынесенная библиотека может частично помочь отвязать функционал предоставляемый ЭРА от модов, такой себе промежуточный слой. Т.е. мое предложение таково что нужно выделить одну библиотеку открытую для правок модерами, и на нее ориентироваться при обновлении ЭРА (из разряда если обновление ломает что-то, то вот такой фикс в этой библиотеке должен исправить ситуацию).
|
|
20.04.2020 15:27 |
|
XEPOMAHT
Posts: 2356
|
(20.04.2020 15:27)Zur13 Wrote: проблемы обратной совместимости занимают довольно много времени, и вынесенная библиотека может частично помочь отвязать функционал предоставляемый ЭРА от модов, такой себе промежуточный слой. Т.е. мое предложение таково что нужно выделить одну библиотеку открытую для правок модерами, и на нее ориентироваться при обновлении ЭРА (из разряда если обновление ломает что-то, то вот такой фикс в этой библиотеке должен исправить ситуацию).
Ну если Берсеркер сможет и захочет целиком выделить код, отвечающий за ERM, из era.dll, создать отдельную библиотеку, к примеру erm.dll, и отдать её вместе с исходными кодами сообществу моддеров, тогда моддеры сами смогут следить за совместимостью, что-то добавлять или убирать в ERM по своему усмотрению (после чего может расплодиться куча разных версий erm.dll, под которых делать "совместимые" со всеми версиями одной библиотеки станет ещё геморройнее ).
Делать фиксы ERM-комманд и сейчас может каждый желающий (даже с помощью UN:C можно изменить работу команды UN:C ), если не умеете, просите готовую библиотеку - вряд ли найдётся сейчас такой добряк, который сделает такую грязную работу за Вас.
Да и использование общих ЕРМ функций порождает нарокотические зависимости от них в куче модов, чего лучше не делать. Неленивые просто копируют нужный ERM-код с переименованием функции и не парятся.
|
|
20.04.2020 16:07 |
|
Zur13
Posts: 223
|
(20.04.2020 16:07)XEPOMAHT Wrote: Ну если Берсеркер сможет и захочет целиком выделить код, отвечающий за ERM, из era.dll, создать отдельную библиотеку, к примеру erm.dll, и отдать её вместе с исходными кодами сообществу моддеров, тогда моддеры сами смогут следить за совместимостью, что-то добавлять или убирать в ERM по своему усмотрению (после чего может расплодиться куча разных версий erm.dll, под которых делать "совместимые" со всеми версиями одной библиотеки станет ещё геморройнее ).
Делать фиксы ERM-комманд и сейчас может каждый желающий (даже с помощью UN:C можно изменить работу команды UN:C ), если не умеете, просите готовую библиотеку - вряд ли найдётся сейчас такой добряк, который сделает такую грязную работу за Вас.
Да и использование общих ЕРМ функций порождает нарокотические зависимости от них в куче модов, чего лучше не делать. Неленивые просто копируют нужный ERM-код с переименованием функции и не парятся.
Мы кажется говорим о разных вещах, под библиотекой ЕРМ функций я имелл ввиду имено билбиотеку ерм функций в виде, одного или нескольких ЕРМ файлов с функциями внутри которых используется в том числе UN:C команды, типа таких:
!?FU(EraGetMaxHeroMana);
!?FU(EraGetBattlefieldStackMemRef);
!?FU(EraGetZVarMemRef);
!?FU(EraSetArtNameFromErtString);
И если после обновления ЭРЫ сбивается адресация UN:C, то достаточно будет править код только в этой библиотеке, а все моды использующие функционал библиотеки смогут продолжать работать как работали без обновлений.
|
|
20.04.2020 16:20 |
|
Zur13
Posts: 223
|
(20.04.2020 16:46)XEPOMAHT Wrote: А отчего такой "библиотекой" не может быть тот же ERA Scripts? И Вы сами можете исправить неправильную адресацию UN:C и выложить обновлённый FUN.erm для включения его в обновление ERA Scripts. Поменять erm-скрипт и поделиться им в теме скриптов - разве так сложно?
Хотя бы потому что ERA Scripts содержит просто тонну расширенных игровых механик, и кода который может мешать другим мододелам, потому включать её как базовую зависимость для всех остальных модов неправильно. Но вот FUN.erm оказался прямо очень полезен и удобен, настолько, что его просто хочется увидеть отдельным базовым модом, но опять-таки если развитием этого мода смогут заниматься мододелы, то нужно чтобы и при разработке ЭРЫ его наличие учитывалось. Как я писал мне кажется что правильно было бы выделить такой мод-библиотеку как промежуточный слой между ЕРМ и базой ЭРА.
(This post was last modified: 20.04.2020 17:06 by Zur13.)
|
|
20.04.2020 16:58 |
|
Zur13
Posts: 223
|
Библиотека должна быть хоть сколько-нибудь централизованная, иначе будет бардак у того свои правки у другого свои, зачем добавлять несовместимостей? А если каждый будет себе собирать солянку из кусков скриптов разбросанных по форуму, то опять-таки возвращаемся к ситуации что при обновлении ЭРА вдруг половина модов перестает работать, половина модов уже не поддерживается, авторы второй половины бегут на форум и пытаются понять как им все исправить.
И если честно я пока не понимаю конт-аргументации, почему одна централизованная библиотека расширенных функций это плохо? Ведь наоборот это облегчает ситуацию и для модописателей и для разработчика ЭРА.
P.S.> Когда разработчики Цивилизации 6 выпустили осеннее обновление и внезапно два десятка моих модов перестали работать было не весело, пришлось 3 недели только и заниматься починкой и перезаливом всего. Не буду рассказывать что я обо всё этом думал тогда
|
|
20.04.2020 17:14 |
|
Algor
Posts: 3881
|
|
20.04.2020 17:19 |
|