PDA

Просмотр полной версии : Emigration 2



Peter
30.10.2010, 09:12
мод можно скачать из внутриигрового браузера модов (ищите по слову Emigration).

http://i283.photobucket.com/albums/kk312/mogendovid/emigration-1.png

первая версия мода была загружена 2000 раз
тред на ихфанатикс: http://forums.civfanatics.com/showthread.php?t=388983

DerSpinner
30.10.2010, 11:13
А это неплохо было бы добавить в стандартный функционал.
Идея просто на 5+

Milex
30.10.2010, 11:58
Просто, не не для сингла. У компа ни разу не видел счастье в минусе.

Peter
30.10.2010, 12:05
<div class='quotetop'>Цитата(Milex * 30.10.2010, 11:58) 361679</div>

Просто, не не для сингла. У компа ни разу не видел счастье в минусе.
[/b]
Я видел (уровень император). Если ИИ быстро расширяется (военным путем обычно) он вполне может попасть в такую ситуацию.

ИИ такой счастливый обычно в т.ч. благодаря тому что запрограммирован заботиться о счастье во что бы то ни стало (об этом писал Шейфер на форуме 2k). Для игрока же счастье не является чем-то очень важным, т.к. последствия несчастья довольно незначительны. Можно выиграть игру имея -100 несчастья, в таком положении есть даже некоторые плюсы (не нужно содержать дорогостоящие постройки и ограничивать экспансию).

что делает мод - в первую очередь заставляет самого игрока заботиться о счастье, т.к. ИИ и так сильно этим обеспокоен. Имхо введение такого нового механизма наказания для несчастных империй - это более лучший выход чем если бы кто-то научил ИИ не строить колизеи :)

Basss
30.10.2010, 14:06
Напоминает старенький "Цезарь-3") ох весело же было)

Rusberg
30.10.2010, 14:35
А ссылочку можно? А то там что-то не все ссылки без реги доступны

Peter
30.10.2010, 15:05
<div class='quotetop'>Цитата(Rusberg * 30.10.2010, 14:35) 361701</div>

А ссылочку можно? А то там что-то не все ссылки без реги доступны
[/b]
заходите в игру, жмете "MODS", потом "BROWSE", вводите "Emigration" слева вверху, скачиваете, инсталлируете, играете.

Rusberg
30.10.2010, 19:30
спасибо огромное ) накачал еще кучу сверху

Slave
30.10.2010, 19:42
видел его в списке модов. Надо будет как то попробовать поставить :)

BigHand
25.11.2010, 12:44
Господа,а никто не встречал мода,который показывает уровень счастья у ИИ? Этот мод ставил ещё первую версию,но на тот момент ещё не разобрался с счастьем,почти всё время в минусе был,эмиграция была нехилая:), крайне меня возмутило,что моё население постоянно куда-то мигрирует:))). Снёс его,потом пытался найти,но название не помнил,ну а сейчас заново открыл.

Peter
12.01.2011, 08:07
уровень счастья ботов иногда показывают в "новостях"

Peter
24.05.2012, 10:46
обновил до версии 4, в мод браузер пока не загружал - нужно проверить еще пару моментов
но уже можно играть!

главное отличие от предыдущих версий - народ мигрирует не только из несчастных стран в счастливые, но и из просто счастливых в еще более счастливые!
а также туда, где выше производительность труда (напр. в одном городе чел трудится на поле к-рое дает 2 еды, он может уехать в более богатый город где станет скажем инженером (3 молотка, 3 очка вл - итого 6, в три раза больше производительность труда)) или рабочим шахты на реке (4 молотка и 1 монета - в 2,5 раза больше производительность). эффекты зданий также учитываются.

таким образом имея много счастья и хорошо обустроенные города, можно переманивать население у компов-противников! я сейчас играю на уровне "король", переманил около 10 чел за средневековье и начало ренессанса. на более высоких уровнях это также возможно, наверное. главное тут сосредоточиться на счастье - сейчас я имею 30 счастья, а у компов от 5 до 20. удобнее приманивать иммигрантов в небольшую, хорошо обустроенную страну. т.о. данный мод благоприятствует маленьким странам, позволяя городам вырастать до больших размеров за счет иммигрантов гораздо быстрее чем они росли бы за счет ферм например.

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

скачать можно тут (http://forums.civfanatics.com/showpost.php?p=11516686&postcount=207).
комментарии приветствуются!

zombie_113
24.05.2012, 11:19
комментарии приветствуются!

Реально круто. Будем тестить.

pingvin156
24.05.2012, 19:44
Вот это уже что-то серьезное - надо будет проверить. Надеюсь, в аддоне будет робить.

LeshiX
07.02.2013, 13:30
Привет всем!
Помогите чайнику, пожалуйста=) Ставлю этот мод, галочка загорается зеленым, начинаю игру, в опциях показывает, что мод установлен, но единственное в чем проявляется его работа - пропадают круглые значки справа, информирующие о событиях... И все, никакой эмиграции=(( С чем это может быть связано, где ошибку искать? Переставлял мод 3 раза, кэш чистил, результат одинаковый=((
P.S. До этого ставил несколько других модов - все работало, а Emigration не хочет никак=(
Подскажите, кто в курсе:pray:

Peter
07.02.2013, 17:12
Привет всем!
Помогите чайнику, пожалуйста=) Ставлю этот мод, галочка загорается зеленым, начинаю игру, в опциях показывает, что мод установлен, но единственное в чем проявляется его работа - пропадают круглые значки справа, информирующие о событиях... И все, никакой эмиграции=(( С чем это может быть связано, где ошибку искать? Переставлял мод 3 раза, кэш чистил, результат одинаковый=((
P.S. До этого ставил несколько других модов - все работало, а Emigration не хочет никак=(
Подскажите, кто в курсе:pray:

видно не та версия игры или мода...
какая у вас версия игры, и какую версию мода вы ставите?

LeshiX
07.02.2013, 17:15
видно не та версия игры или мода...
какая у вас версия игры, и какую версию мода вы ставите?

Версия игры 1.0.2.21, лицензия, версия мода 4

думал уже, что с какими-то другими модами конфликтует, все поудалял кроме Emigration, и опять же не помогло=((

Peter
07.02.2013, 17:41
Версия игры 1.0.2.21, лицензия, версия мода 4

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

надо будет посмотреть

LeshiX
07.02.2013, 17:58
странно.. .может дело в русификации
я играю на английском, русскую версию мода не помню пробовал запускать или нет
(но вроде от этого не должно ломаться..)

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


надо будет посмотреть

посмотрите, если не сложно, пожалуйста=)

Vorot
10.02.2013, 17:53
Привет!
Совместим ли данный мод с Unofficial Patch и Enhanced Mod от Thallassicus?

Peter
10.02.2013, 18:07
Привет!
Совместим ли данный мод с Unofficial Patch и Enhanced Mod от Thallassicus?

думаю да.

Peter
08.05.2013, 18:57
Господа! Требуется ваша помощь. Перед выкладыванием новой версии в стим, хотел бы убедиться что русская версия будет работать корректно.

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

Вот файл:
6535
в архиве файл мода, кладете его в мои документы\my games\civilization v\mods, запускаете игру, идете в моды, нажимаете "установить", ставите галочку на эмиграцию, далее, сингл плеер.. играете.

Спасибо!

m_kus
08.05.2013, 19:19
Должны быть две новые строчки в окне города ("счастье" и "процветание") слева вверху, где еда, продукция и т.д.
Строчки появились, "Процветание" и "Happiness". Кроме того в подсказке к процветанию надписи не переведены.
Скрин что-то сходу приложить не смог...
Сейчас ещё похожу...

Peter
08.05.2013, 19:53
Строчки появились, "Процветание" и "Happiness". Кроме того в подсказке к процветанию надписи не переведены.
Скрин что-то сходу приложить не смог...
Сейчас ещё похожу...
Спасибо!
хмм это очень странно, я думал или все надписи должны работать или ни одной :)
будем искать причину

Peter
14.05.2013, 13:39
кто нибудь,
попробуйте еще раз, пожалуйста
6559

:)

givinivir
14.05.2013, 14:40
кто нибудь,
попробуйте еще раз, пожалуйста
6559

:)

Надписи появились

6560

Всё нормально?

Yorick
14.05.2013, 17:31
Отличная идея, да, давно такого хотел. Жаль, что в Цив5 только сделали.

Там по-прежнему эмиграция не зависит от расстояния до городов? А новые поселения мигранты не могут создать?

И что ж получается: если взять навалу варваров на культурную страну - то те же монголо-татары должны были перебегать в Киевскую Русь, а не захватывать ее?

Peter
14.05.2013, 18:46
Отличная идея, да, давно такого хотел. Жаль, что в Цив5 только сделали.

Там по-прежнему эмиграция не зависит от расстояния до городов? А новые поселения мигранты не могут создать?

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

Peter
14.05.2013, 18:50
Надписи появились

6560

Всё нормально?

спасибо!
все отлично
возможно у m_kus конфликт версий был.. разные версии мода могут вроде мешать друг другу

m_kus
14.05.2013, 20:13
Проверю ещё раз. А приложите какой-нибудь сейв, загрузку сейва тоже проверю :p

givinivir
14.05.2013, 20:33
Проверю ещё раз. А приложите какой-нибудь сейв, загрузку сейва тоже проверю :p

Вот сейв

Vashington_0001 g. do n.e. 3960.Civ5Save (http://pbem.civfanatics.ru/sav/img/Vashington_0001 g. do n.e. 3960.Civ5Save)

m_kus
14.05.2013, 21:41
спасибо!
все отлично
возможно у m_kus конфликт версий был.. разные версии мода могут вроде мешать друг другу
Теперь всё нормально, возможно конфликт был с CivUP, он может быть не корректно выключился.

Вот сейв

Vashington_0001 g. do n.e. 3960.Civ5Save (http://pbem.civfanatics.ru/sav/img/Vashington_0001 g. do n.e. 3960.Civ5Save)
Не могу открыть, чего-то у меня нет либо не включено :p Да ладно, видимо всё нормально...

swan
14.05.2013, 22:06
статуе свободы добавлена дополнительная функция - она приманивает иммигрантов. при выборе пункта назначения они скорее выберут ваш город чем такой же (по производительности и счастью) город в другой стране, если у вас есть статуя свободы. естественно статуя не отменяет того факта что ваши города должны быть богаты и счастливы, чтобы люди хотели туда ехать.
В аддоне этот пункт потеряет свою актуальность - статуя свободы и некоторые другие чуды будут привязаны к определенным идеологиям. А во всемирном конгрессе можно будет выбрать "Мировую идеологию". Вдруг мировой идеологией станет не "Свобода", а какая-то другая идеология? Аналогично и с религиями - можно будет выбирать "Мировую религию". Вместе с миграцией населения, думаю стоит будет и миграцию религии этого населения вводить. Не станут же католики мусульманами или буддисты православными от того, что поменяли место жительства...
Кстати, в аддоне будет ещё и туризм - это тоже может сильно повлиять - в разных городах разные показатели туризма могут быть
Так-что коэффициенты там сильно править придется

Tomahawk
02.03.2016, 18:44
Peter, а вы бы не хотели выпустить следующую версию вашей модификации? :bigwink: Было бы неплохо, чтобы мигрант забирал религию родного города, в данный же момент он переселяется атеистом. Например сейчас, когда Европа подвержена потоку переселенцев с Ближнего Востока, в ней самой становится больше мусульман в процентах от общего числа граждан.

Я тут немного доработал скрипт :whistle:

1) Мигрант забирает с собой процентное соотношение религий, которые были в его родном городе (это в игре гражданин 1 штука, а в жизни это были бы представители разных конфессий, будем считать, что их переселяется равное количество в одном жителе). Если в родном городе из 5 жителей было 5 буддистов, значит мигрант будет состоять из 100% буддистов. Ещё пример, допустим в родном городе мигранта из 12 жителей было 3 православных, 3 мусульманина, 3 индуиста и 3 атеиста, значит мигрант будет состоять из 4 частей по 25%, три из них - религии. Пантеон тоже считается религией.
2) Далее мигрант приехал в новый город и растворяется среди местных обитателей, привнося новые или укрепляя уже имеющиеся религии. Причём учитывается, сколько % занимает он сам среди жителей. Это значит, что если мигрант на 100% состоял из буддистов, значит в городе сразу появится на 1 буддиста больше, если же мигрант состоял из нескольких религий, то эффекта сразу можно не увидеть, но проценты запомнятся и проявятся позже.
3) Движок игры проценты воспримет сразу, но пересчитает кол-во последователей через 1-2 хода, во всяком случае в редакторе показывало так. Дело в том, что увеличить кол-во последователей сразу невозможно, можно только конвертировать одну религию за счёт другой в процентах. Но мой алгоритм всё пересчитывает.
*Но нужно помнить, что религиозное давление извне никуда не исчезает, и соотношение религий может с течением ходов меняться, это механика игры.

Также я считаю нужно сделать минимальное кол-во жителей в городе, при которых возможен отъезд из города. Дело в том, что новые города в Современности появляются с 3 жителями, и получается сразу будут подвержены миграции, хотя в них ещё даже ничего нет. Я думаю надо дать шанс игроку немного развить город, да и граждане мгновенно не могут стать недовольными. К тому же, абсолютно все не могут уехать, так в жизни не бывает. Миграция не должна привести к тому, что все уехали и в городе нельзя ничего построить практически. Мало ли какие ситуации бывают, параметр поставить надо.

Мои настройки в EmigrationSettings.xml, М - модификатор, Д - дальность в клетках:

Древний мир: М - 5, Д - 5
Античность: М - 15, Д - 10
Средневековье: М - 20, Д - 15
Новое время: М - 25, Д - 30
Эпоха Просвещения: М - 30, Д - 45
Новейшее время: М - 50, Д - 60
Современность: М - 75, Д - 90
Эпоха Атома: М - 90, Д - 130
Информационный век: М - 100, Д -170
Будущее: М - 100, Д - 250

Хотелось бы видеть зависимость дальности от размера карты, сейчас прописано жёстко.

Есть также период, через который происходит изменение, уедет гражданин, не уедет, или просто ничего не произойдёт. Я считаю, переселение не должно быть бешеным, а мягким, поднял уставку с 12 до 18 на средней скорости.

Прежде чем поделюсь скриптом, предлагаю обсудить сообществу какие параметры вы считаете оптимальными:
1) Минимальное кол-во граждан в городе, при которых возможен отъезд. Пока поставил 4, при 3 ещё не уезжают. Думаю можно поставить и 5-6.
2) Модификаторы по эпохам и дальность миграции.
3) Период миграции в ходах на средней скорости.

Peter
04.03.2016, 08:37
1. отъезд из малых городов регулируется модификатором локального счастья. чем важнее локальное счастье, тем больший штраф к процветанию получают большие города. также влияет форма зависимости от продуктивности. там вроде логарифмическая формула, через коэффициенты можно регулировать крутизну функции. в общем имхо лучше с этими параметрами играть чем вводить новые.
2. тут я не в курсе, мало играл с модом и не на всех картах. скажу что сильно ограничивать миграцию для ранних эр я бы не стал т.к. большая часть игры проходит в них, а до поздних редко кто доигрывает и там уже все решено практически, так что какой смысл делать механику которая ни на что особо не влияет. зависимость дистанции от размера карты можно сделать, например не в тайлах задавать а в % от длины диагонали
3. тут тоже игрокам виднее. мне казалось 12 ходов вполне достаточно чтобы принять меры.

насчет религий, интересное дополнение но можно ли его сделать в lua или потребуется sdk?
эмигрируют часто представители меньшинств, возможно эмигрант должен переносить 100 очков одной из религий представленных в городе включая атеистов. хорошо бы при этом в исходном городе убавить соотв религию на эти 100 очков.

Tomahawk
04.03.2016, 09:15
зависимость дистанции от размера карты можно сделать, например не в тайлах задавать а в % от длины диагонали
Хорошая идея, доработаете?

насчет религий, интересное дополнение но можно ли его сделать в lua или потребуется sdk?
Уже сделал ) заняло в lua около 30 строк кода всего, оставил подробные комментарии. Скину вам в личку через пару часов. Отладочная информация пишется в lua.log через print. Работоспособность проверил через InGame Editor, специально сидел ситуации эмулировал, чтобы математику проверить.

эмигрируют часто представители меньшинств, возможно эмигрант должен переносить 100 очков одной из религий представленных в городе включая атеистов. хорошо бы при этом в исходном городе убавить соотв религию на эти 100 очков.
Надо определиться как должно происходить. По сути было недовольно всё население родного города мигранта, поэтому я и считаю, что уезжают "все в 1 жителе", этот 1 житель состоит из процентного соотношения всех религий в городе, из которого уезжает. Можно сделать, чтобы из жителей уехал только 1 буддист или 1 православный, но нужно ли?

Peter
04.03.2016, 10:09
интересно, я с выходом gnk смотрел какие функции доступны в lua и возможности изменять pressure там не было

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

на моддинг пока времени нет, попозже может займусь
но скрипт интересно будет посмотреть

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

Tomahawk
04.03.2016, 14:58
Скрипт скинул. Значит смотрите, Firaxis дала нам только 2 функции для работы, это int GetNumFollowers(ReligionType religion) и ConvertPercentFollowers(ReligionType arg0, ReligionType arg1, int arg2)
http://modiki.civfanatics.com/index.php?title=City_(Civ5_Type)
В первой мы смотрим сколько последователей есть в городе в штуках, как это видят игроки. Вторая функция более хитрая, в ней мы можем указать сколько процентов одной религии преобразовать в другую (обратить). Другого не дано. То есть тут всегда "одна за счёт другой".

если относительное - то можно брать все
Да, как раз так и происходит, он берёт процентное соотношение религий в одном себе. Это тоже самое как потом добавить в новом городе 0.5 последователя индуиста и 0.5 сикха, если в родном городе было 50% последователей индуизма и 50% последователей сикхизма.

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

есть еще идея добавить фракцию варваров, чтобы несчастные бежали к ним, если других подходящих направлений нет. это могло бы просто добавлять юнит рядом с лагерем или создавать варварский город. второе, кажется, интереснее. хотя может вести к эксплоитам.
Я бы не рисковал. Мало ли как это отразится на других модах с варварами, сейчас народ предпочитает использовать Barbarian Evolved, например. По мне, если некуда ехать, значит альтернатив нет, везде всё плохо, посидим тогда дома ))

P.S. ID религий посмотрите тут (http://modiki.civfanatics.com/index.php?title=ReligionType_(Civ5_Type)), понадобится чтобы разобраться в логе.

Peter
05.03.2016, 16:00
ваш скрипт конвертирует атеистов в целевом городе во все религии исходного
этот подход порождает множество проблем
во-первых он основан на том, что SetPopulation увеличивает число атеистов. Вы уверены в этом?
беглый взгляд в исходник такого механизма не выявил:
https://github.com/Gedemon/Civ5-DLL/blob/master/CvGameCoreDLL/CvCity.cpp

во-вторых, давление атеизма в произвольно взятом городе может быть любым, от 100 до нескольких тысяч.
например город размера 10 может иметь от 100 до 1000 очков атеизма.
поэтому воздействие миграции будет непредсказуемым, от ничтожного до очень сильного, если он скажем 900 очков атеизма конвертнет в какую-то другую религию. или если там было всего 100 атеизма, и чел прибыл из города 10 размера, он обратит только 10 очков. будет лучше если эффект миграции будет легко пресказуемым.

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

напр.
а) приехал буддист в город размера 9, 900 очков атеизма: обращаем 1/(1+9) в буддизм, в итоге будет 1 буддист и 9 атеистов
б) приехал буддист в город размера 9, 500 очков атеизма и 1000 индуизма (3 атеиста, 6 индуистов), конвертируем 50 из атеизма в буддизм и 100 из индуизма в буддизм, получаем 450 атеизма, 900 индуизма, 150 буддизма (3 атеиста, 6 индуистов, 1 буддист).

Tomahawk
05.03.2016, 17:49
ваш скрипт конвертирует атеистов в целевом городе во все религии исходного
этот подход порождает множество проблем
во-первых он основан на том, что SetPopulation увеличивает число атеистов. Вы уверены в этом?
Я уверен, что написанный код работает правильно. Можете проверить ситуацию с Ingame Editor (v 39), я сам проделал это несколько раз.

Что известно: 1) религия в городах хранится в процентах, а не очках, потому что после изменения процентного соотношения с помощью ConvertPercentFollowers, меняется и кол-во последователей потом. 2) Кол-во последователей изменяется самой игрой через 1-2 хода после изменения процентов. Я думаю это связано с тем, что во время хода игра пересчитывает показатели во всех городах, она смотрит на проценты и отображает последователей. Миссионеры меняют последователей мгновенно, потому что видимо вызывают эту функция немедленно. Вы упомянули религиозное давление, по нему игра узнаёт сколько процентов в этот ход ей нужно преобразовать за счёт других религий. Больше давления - быстрее обращение произойдёт. Предположу, что "очки" участвуют в этом процессе.

По вашей ссылке по исходнику в функции void CvCity::setPopulation(int iNewValue, bool bReassignPop /* = true */) нет упоминания религии вообще. Значит она меняется где-то в другом месте, правильно? Приехавший житель в этот ход пока ещё атеист. Пересчёт произойдёт позже.

Peter
05.03.2016, 18:17
Я уверен, что написанный код работает правильно. Можете проверить ситуацию с Ingame Editor (v 39), я сам проделал это несколько раз.

Что известно: 1) религия в городах хранится в процентах, а не очках, потому что после изменения процентного соотношения с помощью ConvertPercentFollowers, меняется и кол-во последователей потом. 2) Кол-во последователей изменяется самой игрой через 1-2 хода после изменения процентов. Я думаю это связано с тем, что во время хода игра пересчитывает показатели во всех городах, она смотрит на проценты и отображает последователей. Миссионеры меняют последователей мгновенно, потому что видимо вызывают эту функция немедленно. Вы упомянули религиозное давление, по нему игра узнаёт сколько процентов в этот ход ей нужно преобразовать за счёт других религий. Больше давления - быстрее обращение произойдёт. Предположу, что "очки" участвуют в этом процессе.

По вашей ссылке по исходнику в функции void CvCity::setPopulation(int iNewValue, bool bReassignPop /* = true */) нет упоминания религии вообще. Значит она меняется где-то в другом месте, правильно? Приехавший житель в этот ход пока ещё атеист. Пересчёт произойдёт позже.

вы наверное смоделировали не все ситуации
почитайте как в игре рассчитываются верующие: http://civgames.com/4435
Как видно из исходника функция SetPopulation не добавляет очков ни одной религии.
Изменение числа последователей происходит только из-за нового размера города, новый чел причисляется одной из представленных религий на основе существующего соотношения очков.

ps вообще этот исходник какой-то подозрительный, сейчас скачаю со стима посмотрю в подлиннике так сказать..

Tomahawk
05.03.2016, 18:56
Давайте определимся как в итоге делать будем, а дальше я реализую, иначе мы долго спорить будем.

Вы хотите, чтобы мигрант был полностью представителем одной из религий (1 последователь уезжает). Тогда если в городе с 10 жителями 7 православных, 2 мусульманина и 1 атеист, то шанс того, что в новый город приедет 1 православный - 70%, 1 мусульманин - 20%, и 1 атеист - 10%. Так делаем?

Peter
05.03.2016, 19:15
Давайте определимся как в итоге делать будем, а дальше я реализую, иначе мы долго спорить будем.

Вы хотите, чтобы мигрант был полностью представителем одной из религий (1 последователь уезжает). Тогда если в городе с 10 жителями 7 православных, 2 мусульманина и 1 атеист, то шанс того, что в новый город приедет 1 православный - 70%, 1 мусульманин - 20%, и 1 атеист - 10%. Так делаем?

я бы сделал равные шансы для всех религий. мне кажется это и правдоподобно (т.к. эмигрируют обычно меньшинства) и интересно - так слабые религии получат дополнительную возможность распространиться. т.е. генерируем случайное число от 1 до #Religions и берем эту религию.

дальше в целевом городе перебираем все религии и делаем ConvertPercentFollowers (1/newCitySize)*100 для каждой

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

ConvertPercentFollowers в dll:

/// Convert some percentage of followers from one religion to another
void CvCityReligions::ConvertPercentFollowers(ReligionTypes eToReligion, ReligionTypes eFromReligion, int iPercent)
{
int iPressureConverting = 0;

// Find old religion
ReligionInCityList::iterator it;
for(it = m_ReligionStatus.begin(); it != m_ReligionStatus.end(); it++)
{
if(it->m_eReligion == eFromReligion)
{
iPressureConverting = it->m_iPressure * iPercent / 100;
it->m_iPressure -= iPressureConverting;
if (it->m_iPressure < 0)
{
it->m_iPressure = 0;
}
}
}
AddReligiousPressure(FOLLOWER_CHANGE_SCRIPTED_CONVERSION, eToReligion, iPressureConverting, NO_PLAYER);
}

/// Add pressure to recruit followers to a religion
void CvCityReligions::AddReligiousPressure(CvReligiousFollowChangeReason eReason, ReligionTypes eReligion, int iPressure, PlayerTypes eResponsiblePlayer)
{
bool bFoundIt = false;

ReligionTypes eOldMajorityReligion = GetReligiousMajority();

ReligionInCityList::iterator it;
for(it = m_ReligionStatus.begin(); it != m_ReligionStatus.end(); it++)
{
if(it->m_eReligion == eReligion)
{
it->m_iPressure += iPressure;
bFoundIt = true;
}

// If this is pressure from a real religion, reduce presence of pantheon by the same amount
else if(eReligion > RELIGION_PANTHEON && it->m_eReligion == RELIGION_PANTHEON)
{
it->m_iPressure = max(0, (it->m_iPressure - iPressure));
}

else if (it->m_eReligion > RELIGION_PANTHEON && eReason == FOLLOWER_CHANGE_MISSIONARY)
{
const CvReligion *pReligion = GC.getGame().GetGameReligions()->GetReligion(eReligion, NO_PLAYER);
int iPressureErosion = pReligion->m_Beliefs.GetOtherReligionPressureErosion(); // Normally 0
if (iPressureErosion > 0)
{
int iErosionAmount = iPressureErosion * iPressure / 100;
it->m_iPressure = max(0, (it->m_iPressure - iErosionAmount));
}
}
}

// Didn't find it, add new entry
if(!bFoundIt)
{
CvReligionInCity newReligion(eReligion, false, 0, iPressure);
m_ReligionStatus.push_back(newReligion);
}

RecomputeFollowers(eReason, eOldMajorityReligion, eResponsiblePlayer);
}

ps подождите, давайте разберемся с пантеоном...

Tomahawk
05.03.2016, 19:28
Шанс могу сделать равным, если мы рассматриваем 3 религии, значит у каждой вероятность будет треть для переезда. Пойдёт? По коду так даже проще.
Пантеон это как бы язычники, будет интересно их перемещать. Всё равно это максимум для античности, а потом их другие религии задавят. Насчёт ошибки протестируем.

Peter
05.03.2016, 19:41
Шанс могу сделать равным, если мы рассматриваем 3 религии, значит у каждой вероятность будет треть для переезда. Пойдёт? По коду так даже проще.
Пантеон это как бы язычники, будет интересно их перемещать. Всё равно это максимум для античности, а потом их другие религии задавят. Насчёт ошибки протестируем.

да, хорошо.

инфа по работе религиозных функций и пантеона:

ConvertPercentFollowers
берет очки eFromReligion, умножает на iPercent/100
получается iPressureConverting
это значение вычитается из очков eFromReligion
и затем делается вызов AddReligiousPressure(eToReligion, iPressureConverting)

AddReligiousPressure
в цикле проходим религии
нашли нужную религию - добавляем ей очки
нашли пантеон - убавляем ему очки, если eReligion > 0 - не атеизм и не пантеон
если нужной религии в городе нет, добавляем - здесь может возникнуть ошибка с пантеоном

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

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

я так понял вам больше нравится второй вариант, и мне тоже.
емнип функция определения наличия пантеона должна быть у объекта Player
(в городе пантеона может не быть, но это не важно - главное чтобы у Player он был)

Tomahawk
06.03.2016, 07:02
Задумка ведь какая была, взяли из города 1 последователя и переместили в другой город, не меняя таким образом баланс последователей на карте. А единственная доступная нам функция для внешнего вмешательства ConvertPercentFollowers изменяет в конечном счёте очки, на основе которых потом пересчитываются последователи. Тогда получается такая плохая ситуация: в городе было 3 индуиста (75%) и 1 синтоист (25%), уезжает один индуист, остаётся 2 индуиста (66%) и 1 синтоист (33%), новые проценты мы добросовестно пересчитаем, чтобы игроки видели: осталось сколько нужно последователей. Но мы будем вмешиваться в изменение баланса в родном городе, изменять очки в нём, перебрасывая их с одной религии на другую. Когда родной город вырастет до 15 (считаем, что внешнего давления не идёт), мы увидим 10 индуистов и 5 синтоистов, хотя без изменения процентов последователей бы было где-то 12 и 3.

Теперь другая проблема про разное кол-во очков в 2 городах, напрямую мы передавать без DLL их не сможем. В родном городе было например 100 очков буддизма, но он их увезти не сможет, будет только метка "буддист". Приехал мигрант в город с 15 населением, тогда 1 житель от 15 = 6,25%, на столько мы должны увеличить буддизм в городе, но если общее кол-во очков всех религий в нём 12000, то мы увеличим буддизм в городе на 750 очков (6% от 12К), обмен неравноценный получается. Правильно понимаю? Тогда из мигранта выйдет тихий миссионер, а это нам не нужно... тут дело не в коде уже, а в самом принципе.

Peter
06.03.2016, 09:45
да, если помните, я в первом же комменте написал, что функций для управления религией разрабы нам в луа почти не дали :)
кроме "очковой" неравноценности есть еще такая вещь как атеизм, в норме ни пророки ни инквизиторы его не берут, а тут мы его потихоньку конвертируем миграциями, получается непоследовательность в игровой механике. хотя юзеру это не видно, может не так уж страшно.
давайте рассмотрим предложенные ситуации.
в городе размера 4 если верующие распределены в соотношении 3:1, это может быть обусловлено например миссионером (1000) и накопленным давлением (333), при отъезде индуиста перелив составит 1/3/3=11% или 110 очков - вроде, не так уж много? При том что такая картина вообще не типична, скорее в таком маленьком городе будет 300 атеизма и скажем 100 буддизма, и при отъезде атеиста перелив в буддизм составит всего 33 очка. В старом же городе и население будет большое, например город размера 10, 400 атеизма, 600 буддизма и 1000 индуизма = 2 атеиста, 3 буддиста, 5 индуистов. При отъезде индуиста перелив в другие религии составит 1/5/9=6% или 60 очков (24а и 36б) - опять же не много. при естественном росте города добавляется по 100 очков доминирующей религии, как видим цифры вполне сопоставимые. да, при росте игра тупо добавляет 100 очков, т.е. ранняя миграция не создаст таких искажений как вы предположили.

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

ps надо будет еще добавить запрет иммиграции при включенном avoid growth (на экране города). все давно хотят такую фичу.

Peter
06.03.2016, 10:28
зацените кавер

8558

Tomahawk
06.03.2016, 11:28
зависимость дистанции от размера карты можно сделать, например не в тайлах задавать а в % от длины диагонали
Сверху в Emigration.lua в переменных -- const factors добавьте переменные

local gridWidth, gridHeight = Map.GetGridSize();
А перед строкой local destCity = GetDestinationCity(destList, n - 1, maxDist); добавьте эти строки, print потом можно удалить

if maxDist > 100 then maxDist = 100; end -- защита от кривой настройки
print("MaxDistance стоит в настройках: " .. maxDist .. "% от диагонали");
print(string.format("Размер карты: ширина = %d, высота = %d", gridWidth, gridHeight));
maxDist = math.floor((math.sqrt((gridWidth * gridWidth) + (gridHeight * gridHeight))) * (maxDist/100)); -- от длины гипотенузы берётся указанное число процентов.
print("Итого макс. дистанция для переезда: " .. maxDist .. " клеток");
Итого всего 2-3 новые строки решат вопрос :)

Теперь по настройкам в разные эпохи, я пока поставил так:
Древний мир: Д - 5%
Античность: Д - 10%
Средневековье: Д - 15%
Новое время: Д - 30%
Новейшее время: Д - 45%
Современность: Д - 80%
Эпоха Атома: Д - 100%
Информационный век: Д - 100%
Будущее: Д - 100%

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

Peter
06.03.2016, 11:50
хорошо
я сделаю 10-15-25-35-50-70-100 для более плавного изменения
35 хватит чтобы пересечь атлантику
70 уже практически везде достает

вообще расстояния лучше сразу посчитать для всех эр и сохранить в массив
чтобы уменьшить вычисления между ходами

Tomahawk
06.03.2016, 13:58
Перепишем тогда так. Сверху в Emigration.lua перед local notifications = {}; добавьте

local gridWidth, gridHeight = Map.GetGridSize();
--print(string.format("Размер карты: ширина = %d, высота = %d", gridWidth, gridHeight));
local DistanceInfo = {};

for row in GameInfo.EmigrationEraModifiers() do
local maxDist = row.MaxDistance;
if maxDist > 100 then maxDist = 100; end --защита от дурака
--if maxDist ~= nil then print("MaxDistance стоит в настройках: " .. maxDist .. "% от диагонали"); end
maxDist = math.floor((math.sqrt((gridWidth * gridWidth) + (gridHeight * gridHeight))) * (maxDist/100)); -- от длины гипотенузы берётся указанное число процентов
if maxDist ~= nil then
table.insert(DistanceInfo, maxDist);
--print("В таблицу DistanceInfo поместили макс. дистанцию для переезда: " .. maxDist);
end
end
И строку local maxDist = GameInfo.EmigrationEraModifiers("EraType = '" .. currentEraType .. "'")().MaxDistance; замените этим

local currentEraID = Game.GetCurrentEra();
local maxDist = DistanceInfo[currentEraID + 1];
--print("Макс. дистанция в клетках = " .. maxDist);
Дистанция будет зависеть от процентов по диагонали, расчёт будет происходить один раз.


я сделаю 10-15-25-35-50-70-100 для более плавного изменения
ну или 10-15-20-35-50-70-100 :) Тут они открыли Астрономию и понеслось...))

Посмотрите ещё, файл ScriptDataUtils.lua в строке 89 выдаёт ошибку синтаксиса - это в оригинале мода версии 5. Не знаю что это такое, но на вылеты вроде не влияет.
Syntax Error: C:\Users\Tomahawk\Documents\My Games\Sid Meier's Civilization 5\MODS\Emigration (v 5)\Lua\ScriptDataUtils.lua:89: chunk has too many syntax levels

Peter
06.03.2016, 15:18
ок

эта ошибка синтаксиса ни на что не влияет. особенность моего сериализатора..
с 3й версии она вроде

Tomahawk
07.03.2016, 19:33
Нашёл баг, необходимо подправить тип Эпохи атома. Вот таким образом:

<EmigrationEraModifiers>
<Row> <!-- Древний мир -->
<EraType>ERA_ANCIENT</EraType>
<EmigrationModifier>10</EmigrationModifier>
<MaxDistance>10</MaxDistance>
</Row>
<Row> <!-- Античность -->
<EraType>ERA_CLASSICAL</EraType>
<EmigrationModifier>15</EmigrationModifier>
<MaxDistance>15</MaxDistance>
</Row>
<Row> <!-- Средневековье -->
<EraType>ERA_MEDIEVAL</EraType>
<EmigrationModifier>100</EmigrationModifier>
<MaxDistance>20</MaxDistance>
</Row>
<Row> <!-- Новое время -->
<EraType>ERA_RENAISSANCE</EraType>
<EmigrationModifier>25</EmigrationModifier>
<MaxDistance>35</MaxDistance>
</Row>
<Row> <!-- Новейшее время -->
<EraType>ERA_INDUSTRIAL</EraType>
<EmigrationModifier>50</EmigrationModifier>
<MaxDistance>50</MaxDistance>
</Row>
<Row> <!-- Современность -->
<EraType>ERA_MODERN</EraType>
<EmigrationModifier>75</EmigrationModifier>
<MaxDistance>70</MaxDistance>
</Row>
<Row> <!-- Эпоха атома -->
<EraType>ERA_POSTMODERN</EraType>
<EmigrationModifier>90</EmigrationModifier>
<MaxDistance>100</MaxDistance>
</Row>
<Row> <!-- Информационный век -->
<EraType>ERA_FUTURE</EraType>
<EmigrationModifier>100</EmigrationModifier>
<MaxDistance>100</MaxDistance>
</Row>
</EmigrationEraModifiers>
Модификаторы у вас наверное лучше получится проставить... это шанс на переезд или как?) Не понял пока.

Peter
07.03.2016, 20:05
Нашёл баг, необходимо подправить тип Эпохи атома. Вот таким образом:

<EmigrationEraModifiers>
<Row> <!-- Древний мир -->
<EraType>ERA_ANCIENT</EraType>
<EmigrationModifier>10</EmigrationModifier>
<MaxDistance>10</MaxDistance>
</Row>
<Row> <!-- Античность -->
<EraType>ERA_CLASSICAL</EraType>
<EmigrationModifier>15</EmigrationModifier>
<MaxDistance>15</MaxDistance>
</Row>
<Row> <!-- Средневековье -->
<EraType>ERA_MEDIEVAL</EraType>
<EmigrationModifier>100</EmigrationModifier>
<MaxDistance>20</MaxDistance>
</Row>
<Row> <!-- Новое время -->
<EraType>ERA_RENAISSANCE</EraType>
<EmigrationModifier>25</EmigrationModifier>
<MaxDistance>35</MaxDistance>
</Row>
<Row> <!-- Новейшее время -->
<EraType>ERA_INDUSTRIAL</EraType>
<EmigrationModifier>50</EmigrationModifier>
<MaxDistance>50</MaxDistance>
</Row>
<Row> <!-- Современность -->
<EraType>ERA_MODERN</EraType>
<EmigrationModifier>75</EmigrationModifier>
<MaxDistance>70</MaxDistance>
</Row>
<Row> <!-- Эпоха атома -->
<EraType>ERA_POSTMODERN</EraType>
<EmigrationModifier>90</EmigrationModifier>
<MaxDistance>100</MaxDistance>
</Row>
<Row> <!-- Информационный век -->
<EraType>ERA_FUTURE</EraType>
<EmigrationModifier>100</EmigrationModifier>
<MaxDistance>100</MaxDistance>
</Row>
</EmigrationEraModifiers>
Модификаторы у вас наверное лучше получится проставить... это шанс на переезд или как?) Не понял пока.

спасибо! поправлю...
модификатор эмиграции снижает вероятность эмиграции в ранние эпохи:

local emigrationProb = maxDiff * log2(city:GetPopulation()); -- no emigration from size 1 cities
emigrationProb = emigrationProb * EraModifier;

Peter
07.03.2016, 20:10
скопирую сюда из ЛС, для удобства
определение перелива при миграциях

величина перелива x определяется из отношения числа последователей после миграции:
(f-x)/(p-f+x)=(f-1)/(p-f), где f - число верующих религии мигранта до отъезда, p - размер города до отъезда
(f-x)(p-f) = (f-1)(p-f+x)
[pf-ff]-px+[fx] = [pf-ff]+[fx]-p+f-x
x-px = f-p
x = (f-p)/(1-p)
это величина в верующих.
доля перелива определяется как x' = x/f.

рассмотрим прмиер: было 300 индуизма (3п), всего население = 5 (5п); 1 индуист уехал.
f = 3, p = 5
x = (3-5) / (1-5) = -4/-2 = 0.5
x' = 0.5/3 = 17%
и действительно, если мы из идуизма (300) перельем 17% в другие религии (200), у них станет по 250 очков или по 2 верующих в городе размера 4.
т.е. в вашем примере в Рио из религии 5 нужно было переливать
x' = (f-p)/(1-p)/f = (3-8)/(1-8)/3 = -5/-7/3 = 23.8%

если религий всего две, больше ничего рассчитывать не требуется.
если больше 2 - все становится несколько сложнее.

для каждой религии, в которую мы будем делать перелив, нужно определить вес.
в Рио это 4/5 для религии (13) и 1/5 для религии (-1).
т.о. в религию (13) пойдет 80% перелива или 19% очков религии (5).
на религию (-1) остается 20% перелива или 4.76% очков религии (5).
тут нужно учесть, что религия 5 уже уменьшилась на 19% из-за перелива в (13), поэтому долю религии (-1) нужно увеличить на столько же. скорректированная доля религии (-1) составляет 4.76*1.19=5.66%, округляем до 6%.
если была бы еще одна религия, ее долю нужно было бы увеличить уже на 1.19*1.06, и т.д.
проверим наш алгоритм на Рио:
рио 8 жителей


религия

последователи

очки


5

3

300



13

4

400



-1

1

100



(очки заданы условно, может быть сколько угодно, главное пропорция)
отъезжает последователь религии 5, перелив по формуле составляет 23.8%
перелив в религию 13 = 23.8*4/5 = 19% = 57 очков. после перелива (5)=243, (13)=457
перелив в религию -1 = 23.8*1/5 = 4.76%, *1.19 = 6%, в очках 243*0.06 = 15. после перелива (5)=228, (-1)=115
результат:
рио 7 жителей


религия
последователи

очки


5

2

228



13

4

457



-1

1

115



все сходится!
т.е. вам надо было делать перелив на 19 и 6 процентов, а не на 6 и 2, поэтому у вас число верующих не менялось.

теперь верующий приезжает в копенгаген..
здесь все просто, мы берем долю новой религии равной 1/(p+1), и выполняем конвертацию из всех представленных религий.
копенгаген 2 жителя


религия

последователи

очки



13

1

100



-1

1

100








x = 1/(2+1) = 33%, выполняем конверсии. Кол-во религий роли не играет, ничего делить не надо - из всех берем по 33% и переводим в целевую
результат:
копенгаген 3 жителя


религия

последователи

очки



13

1

67



-1

1

67



5

1

66



т.е. тут все гораздо проще

НО как вы наверное заметили, я вместо пантеона (0) взял атеизм (-1)
при наличии пантеона все осложняется тем, что при распространении других религий пантеон "поедается" ими, и чтобы это учесть требуется внести поправки.
давайте подумаем какие именно, или как эту проблему можно обойти..

Tomahawk
07.03.2016, 20:13
надо будет еще добавить запрет иммиграции при включенном avoid growth (на экране города). все давно хотят такую фичу.
Для этого в начале функции function MoveCitizen(fromCity, toCity) можно было бы добавить

if city:IsForcedAvoidGrowth() then
print("Мигрант отказался ехать в " .. toCity:GetName() .. " из-за недостатка пищи в городе");
return;
end
Но это работает для игрока-человека, я пока не видел, чтобы ИИ эту галочку нажимал. Проверял в обзоре города шпионом-дипломатом. Раз ИИ не умеет галку ставить, как я думаю, то не баланс получается. Лучшим решение будет такой код:

local iFoodPerTurn = toCity:FoodDifference();
if iFoodPerTurn < 2 then
print("Мигрант отказался ехать в " .. toCity:GetName() .. ", из-за недостатка пищи в городе. Еда в ход: " .. iFoodPerTurn);
return;
end
Здесь мы просто смотрим какой прирост еды в городе, например, добыча еды 13, съедено 10, итого +3 - про эту цифру говорю. 1 новый житель потребляет 2 еды, соответственно, если новому жителю не будет хватать пищи, т.е. её прирост будет меньше 2, мигрант в город не поедет.

Peter
07.03.2016, 20:21
Для этого в начале функции function MoveCitizen(fromCity, toCity) можно было бы добавить

if city:IsForcedAvoidGrowth() then
print("Мигрант отказался ехать в " .. toCity:GetName() .. " из-за недостатка пищи в городе");
return;
end
Но это работает для игрока-человека, я пока не видел, чтобы ИИ эту галочку нажимал. Проверял в обзоре города шпионом-дипломатом. Раз ИИ не умеет галку ставить, как я думаю, то не баланс получается. Лучшим решение будет такой код:

local iFoodPerTurn = toCity:FoodDifference();
if iFoodPerTurn < 2 then
print("Мигрант отказался ехать в " .. toCity:GetName() .. ", из-за недостатка пищи в городе. Еда в ход: " .. iFoodPerTurn);
return;
end
Здесь мы просто смотрим какой прирост еды в городе, например, добыча еды 13, съедено 10, итого +3 - про эту цифру говорю. 1 новый житель потребляет 2 еды, соответственно, если новому жителю не будет хватать пищи, т.е. её прирост будет меньше 2, мигрант в город не поедет.

хорошее решение, мне нравится.
но лучше такие города просто не рассматривать как цели для иммиграции.

Tomahawk
07.03.2016, 20:31
но лучше такие города просто не рассматривать как цели для иммиграции.
Да, но этот момент вам нужно будет самому доделать, т.к. лучше картину в целом знаете :) А я пока ваш пост с математикой обмозгую.

Peter
07.03.2016, 20:51
тут такая новость, запостил я на ихфанатикс анонс шестой версии
и сегодня отписался в теме чел, в общем он уже сделал давно "для себя" то что мы тут только собираемся и ломаем мозг :blink:

вот архивчик:
http://forums.civfanatics.com/attachment.php?attachmentid=405026&d=1457304032

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

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

еще там в уведомление вставляется иконка религии, сделать это можно более простым способом
инфа о религии получается как
local religion = GameInfo.Religions[id];
и дальше можно использовать religion.IconString, будет работать с модами добавляющими новые религии.

Peter
08.03.2016, 12:54
иммиграция с учетом пантеона

общая формула конверсии в религию:
процент конверсии x = 100/p где p - население города после иммиграции, применяется ко всем представленным в городе религиям (см пример с копенгагеном выше).

алгоритм религиозной миграции:
1. если мигрирует атеизм - делаем конверсию в атеизм.
2. если мигрирует пантеон - смотрим, основал ли владелец города пантеон player:HasCreatedPantheon().
2.a. если основал - делаем конверсию в пантеон.
2.b. если не основал - делаем конверсию в атеизм.
3. если мигрирует религия - смотрим, есть ли в городе пантеон (число последователей пантеона > 0)
3.a. если пантеона нет - конвертируем в религию.
3.b. если пантеон есть, производим специальную конверсию (не пользуемся общей формулой конверсии):
- сохраняем число атеистов и язычников в городе: af, pf
- конвертируем 100*(1+1/pf)% пантеона в атеизм
- конвертируем 1 атеиста в религию, x = 100/(af+pf+1)
- конвертируем pf атеистов назад в пантеон, x = 100*pf/(af+pf)

пример:
целевой город - 3 жителя, 100 очков атеизм (1п), 200 очков пантеон (2п)
af = 1, pf = 2.
приезжает индуист.
конвертируем 100*(1+1/pf)=150% пантеона в атеизм, получаем 400 атеизма, 0 пантеона (очки давления не могут уйти в минус)
конвертируем атеиста в религию, x = 100/(1+2+1)=25% = 100 очков получает индуизм, в атеизме остается 300
конвертируем атеистов в пантеон, x = 100*2/(1+2)=67% или 201 очков
результирующее распределение:
4 жителя, 100 индуизм (1п), 100 атеизм (1п), 201 пантеон (2п)


эмиграция с учетом пантеона

если в городе есть пантеон,
1. сохраняем исходное число атеистов и язычников af, pf
2. сливаем 100% пантеона в атеизм и дальше делаем по обычному алгоритму (см пост №55); при эмиграции язычника перелив в другие религии будет делаться из атеизма.
3. по окончании конвертируем атеистов назад в пантеон:
3.a. если эмигрировал атеист, x = 100*pf/(pf+af-1)
3.b. если эмигрировал язычник, x = 100*(pf-1)/(pf-1+af)
3.c. иначе x = 100*pf/(pf+af)


ps я думаю этот алгоритм мне самому нужно будет закодировать, займусь этим послезавтра

Tomahawk
09.03.2016, 07:15
Подождите, для родного города я уже переделал скрипт на основе поста 55 и учёта пантеона, останется для целевого и проверить. Сегодня вечером думаю заняться. К послезавтра скину вам, даже если будут ошибки, то всё равно проще доработать, чем с нуля начинать.

А открытые границы повышают шанс для выбора города? Есть функция bool Player:IsPlayerHasOpenBorders(PlayerID major)

Peter
09.03.2016, 08:03
Подождите, для родного города я уже переделал скрипт на основе поста 55 и учёта пантеона, останется для целевого и проверить. Сегодня вечером думаю заняться. К послезавтра скину вам, даже если будут ошибки, то всё равно проще доработать, чем с нуля начинать.

А открытые границы повышают шанс для выбора города? Есть функция bool Player:IsPlayerHasOpenBorders(PlayerID major)

спасибо!

открытые границы не влияют на выбор города. Я специально не стал их учитывать, т.к. ИИ не знает, как это использовать, зачем давать человеку лишнее преимущество.. Ну и открытые границы это скорее касается военных юнитов (мне больше нравилось, как это называлось в цив3 - "право прохода"), караваны то ходят и без этого соглашения. Значит и мигранты пройдут :)

кстати насчет ИИ, не знаете есть ли какие-то может функции чтобы менять его настроение? В случае сильной эмиграции он мог бы обижаться на "виновника".

еще я думаю насчет эр, сейчас есть популярные моды вроде Enlightment Era или доисторических, к-рые добавляют новые эры в игру. Наверное нужно отвязаться от эр раз их число не известно, и определять прогресс как % изученных технологий, или текущий ход/год. Или вообще не отслеживать прогресс, но увеличить зависимость вероятности эмиграции от размера города (это будет примерно соответствовать модификаторам эры и уменьшит отток из маленьких городов). Можно добавить также условие эмиграции не более 1 гражданина в ход, чтобы в поздние эры не было слишком много миграций.

Tomahawk
09.03.2016, 10:54
В своём сборнике я переработал Enlightment Era, по сути нормальная версия сейчас только у меня :) А текущая оригинальная версия мода кишит ошибками и неработающим функционалом. Так вот мне кажется достаточным просто добавить новую запись в EmigrationSettings.xml для поддержки новой эры. На самом деле я их в любом случае буду совмещать и расскажу вам потом о результатах.

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

открытые границы не влияют на выбор города. Я специально не стал их учитывать, т.к. ИИ не знает, как это использовать
С другой стороны есть механика туризма, ИИ по идее тоже не знает о том, какие преимущества сулит ему соглашение о границах, но бонус туризма при этом даётся. Плюс при хороших отношениях ИИ сам стремится заключить соглашние об открытых границах. Здесь на ваше усмотрение, рассматривать этот договор нужно с точки зрения "достаточно ли сейчас бонусов за хорошие отношения между цивилизациями при расчёте шанса переезда".

Peter
09.03.2016, 11:54
В своём сборнике я переработал Enlightment Era, по сути нормальная версия сейчас только у меня :) А текущая оригинальная версия мода кишит ошибками и неработающим функционалом. Так вот мне кажется достаточным просто добавить новую запись в EmigrationSettings.xml для поддержки новой эры. На самом деле я их в любом случае буду совмещать и расскажу вам потом о результатах.

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

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

интересно, а "наемников" вы не поправили? у меня они дико глючат :)
вообще вы могли бы написать авторам, если вы нашли ошибки в их модах...

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

Я думаю вообще переработать эмиграцию, заменить вероятности на заполняющиеся "копилки". И уменьшить число правил, чтобы для игрока тут все было прозрачно.

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

Peter
09.03.2016, 13:33
придумал такую систему:
процветание и список городов составляются так же, как сейчас.
но для каждого города выбирается один из превосходящих его, с максимальным отношением процветания к расстоянию.
каждый ход разница в процветании (напр. 7-5=2) падает в копилку. когда копилка заполняется, чел эмигрирует.
Если разница падает ниже 1 прежде, чем копилка заполнилась, выбирается другой лучший город и копилка начинает наполняться заново.
Также смена целевого города происходит (или не происходит) когда в него мигрируют откуда-то еще, когда он захвачен и т.п.

Статуя свободы - уполовинивает расстояние до городов игрока при выборе целевого города городами других цив
Автократия - уполовинивает скорость эмиграции (заполнения копилок)

В интерфейсе города в тултипе процветания указывается целевой город (если есть) и число ходов до эмиграции
Также указываются города, для которых данный город является целевым и число ходов до иммиграци.

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

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

kindofbear
09.03.2016, 17:16
Влияние открытых границ полюбому должно быть. Я только сейчас вклинился, поэтому некоторые ньюансы могу не знать: въезд граждан в процветающий город у вас бесконечный, или чем больше людей, тем меньше народу захочет туда ехать при той же добыче золота/еды?

Peter
09.03.2016, 17:24
Влияние открытых границ полюбому должно быть. Я только сейчас вклинился, поэтому некоторые ньюансы могу не знать: въезд граждан в процветающий город у вас бесконечный, или чем больше людей, тем меньше народу захочет туда ехать при той же добыче золота/еды?

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

kindofbear
09.03.2016, 17:28
Не знаю, как считается локальное счастье/несчастье, но уровень жизни граждан можно посчитать довольно просто. можно отталкиваться от одной из характеристик или сразу от обеих: добыча еды и добыча золота. соответственно, вычисляем, сколько это на душу населения, пища символизирует обилие товаров потребления, золото — ввп. можно еще припилить модификатор-множитель зависящий от населения. тогда, по идее, привлекательность не может расти бесконечно и переселение замрёт на неком уровне. однако, с цивовскими процентными модификаторами такое может не прокатить. надо пробовать

Peter
09.03.2016, 19:00
Не знаю, как считается локальное счастье/несчастье, но уровень жизни граждан можно посчитать довольно просто. можно отталкиваться от одной из характеристик или сразу от обеих: добыча еды и добыча золота. соответственно, вычисляем, сколько это на душу населения, пища символизирует обилие товаров потребления, золото — ввп. можно еще припилить модификатор-множитель зависящий от населения. тогда, по идее, привлекательность не может расти бесконечно и переселение замрёт на неком уровне. однако, с цивовскими процентными модификаторами такое может не прокатить. надо пробовать

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

Peter
11.03.2016, 09:23
добавил модификаторы - при голоде процветание снижается на 100% (в 2 раза), также за религиозную вражду по -10% за каждую религию после первой. Религиозная вражда убирается политикой Religious Tolerance из ветки Piety.

также в планах эмиграция при захвате города (половина населения сейчас просто пропадает, а будет убегать в соседние города).
совместимость с EUI (популярный мод на интерфейс)
и возможно с Health and Plague
также думаю связать мод c Cultutal Diffusion, чтобы мигранты переносили и национальность и был модификатор за национальные конфликты.

Tomahawk
12.03.2016, 12:53
Текущий скрипт скинул вам в личку, в каких-то случаях работает, в каких-то нет. Код разрастается и разрастается... сотня строк уже ) Предлагаю вам это проаналазировать, ибо требуется доработка.

В данный момент активно разрабатывается JFD's Cities in Development (http://forums.civfanatics.com/showthread.php?t=557897). В этом моде будет реализована идея революций и интегрирован мод Health and Plague в некоем виде. Я считаю он вскоре быстро наберёт популярность, я сам планирую использовать его в своём сборнике, потому что революции и колонии хотят видеть все. Загвоздка в том, что он тоже вводит понятие "городское счастье", проблем совместимости здесь не возникнет?

Peter
12.03.2016, 17:41
Текущий скрипт скинул вам в личку, в каких-то случаях работает, в каких-то нет. Код разрастается и разрастается... сотня строк уже ) Предлагаю вам это проаналазировать, ибо требуется доработка.

В данный момент активно разрабатывается JFD's Cities in Development (http://forums.civfanatics.com/showthread.php?t=557897). В этом моде будет реализована идея революций и интегрирован мод Health and Plague в некоем виде. Я считаю он вскоре быстро наберёт популярность, я сам планирую использовать его в своём сборнике, потому что революции и колонии хотят видеть все. Загвоздка в том, что он тоже вводит понятие "городское счастье", проблем совместимости здесь не возникнет?

сейчас посмотрю скрипт..

моды JFD сильно перегружены и забагованы, не сбалансированы, не понятны для ИИ, используют dll и сильно меняют игру.
я не думаю что стоит под них подстраиваться.
они вроде и не слишком популярны - на стиме у cities всего 4000 скачиваний, Revolutions от Gedemon имеют в 5 раз больше, а эмиграция - в 10 раз. Если я и буду кооперироваться то с Gedemon, хотя в мои планы не входит создание большого мода.
я пробовал запускать Community Balance Patch, увиденное мне не понравилось, а cities вроде работает поверх него?

Tomahawk
12.03.2016, 18:07
я пробовал запускать Community Balance Patch, увиденное мне не понравилось, а cities вроде работает поверх него?
Сам Cities не содержит dll, но ему нужен Community Patch (CP) - это DLL, который собран на базе "DLL - Various Mod Components" + плюс в него интегрированы все наработки по изменению ИИ от сообщества.com, эдакое ядро. А про Community Balance Patch (CBP) почитал (это немного другая штука, ставится поверх CP), мне там тоже не весь функционал нравится. Насчёт скачек, Революциям несколько лет, а Городам несколько месяцев )) Я почему их решил посмотреть, потому что на Революции многие жалуются из-за вылетов, а я хотел бы, чтобы появился работающий функционал...(

Peter
12.03.2016, 18:16
судя по описанию cities там тоже что-то перемудрили.
ну посмотрим. думаю в любом случае они там сделают свою эмиграцию, нет смысла под них подстраиваться.

у меня Revolutions стабильно работают, без вылетов.

Tomahawk
12.03.2016, 19:13
также в планах эмиграция при захвате города (половина населения сейчас просто пропадает, а будет убегать в соседние города).
Есть мод Population (v. 7) (http://www.picknmixmods.com/mods/CivV/Units/Population.html) - из разрушенных городов появляются беженцы(юниты), которых можно отвести в другой город или основать новый. Поэтому, возможно, есть смысл сделать эту функцию опцией в настройках, чтобы можно было отключить этот функционал.

Peter
12.03.2016, 21:07
Есть мод Population (v. 7) (http://www.picknmixmods.com/mods/CivV/Units/Population.html) - из разрушенных городов появляются беженцы(юниты), которых можно отвести в другой город или основать новый. Поэтому, возможно, есть смысл сделать эту функцию опцией в настройках, чтобы можно было отключить этот функционал.

точно! а я думал, где-то такое уже было, но в стиме не нашел.
спасибо.


Загвоздка в том, что он тоже вводит понятие "городское счастье", проблем совместимости здесь не возникнет?
local happiness это понятие игры, счастье делится на local и global. global дают чудеса, local - здания. policies и beliefs - и то и другое.

Peter
13.03.2016, 09:37
тестирую перенос религии, в вашей реализации были ошибки
также не все было предусмотрено в самом алгоритме но это небольшие изменения
в общем все уже работает, сейчас вычищаю мелкие баги с пантеоном будь он неладен :)

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

пока не очень ясно, как балансировать - т.к. миграции только усиливают т.н. snowballing effect: более развитый игрок имеет больше счастья и продуктивности и может высасывать население из менее развитых, еще больше усиливаясь. также научные здания дают слишком большой вклад в процветание. возможно нужно понерфить науку, чтобы скомпенсировать миграционный эффект, но т.к. уже есть моды, нерфящие науку, может возникнуть несовместимость. можно сделать отдельный мод делающий это и рекомендовать его к использованию с эмиграцией. проще всего будет вообще науку не учитывать в prosperity.

также эмиграцию можно контрить экспансией, т.к. маленькие города имеют меньше штрафа к процветанию за население. ИИ обычно любят экспансию, возможно это им поможет. Бывают однако такие, которые пытаются видимо всех бросить на фермы, и т.о. город ни вырасти не может из-за эмиграции, ни построить что-то увеличивающее процветание. Можно в принципе увеличить минимальный период между эмиграциями из одного города. Или как-то связать его со скоростью роста?

еще можно дать всем зданиям увеличивающим процветание growth flavour..

Tomahawk
13.03.2016, 10:09
производство пищи имеет меньший приоритет, т.к. без продуктивности и счастья эти дополнительные люди скорее уедут. и наоборот, если строить рынки и цирки, рост процветания привлечет мигрантов.
Прямо как в реале, производят много пищи в Латинской Америке, ну и что? Все едут в США, где много денег и развлечений :)

Можно в принципе увеличить минимальный период между эмиграциями из одного города. Или как-то связать его со скоростью роста?
Поэтому я предлагал увеличить кулдаун период, можно и специальный период ввести. Я руководствовался следующей логикой (цифры просто для ориентировки). Например, небольшой город прибавляет жителя каждые 5-7 ходов, а минимальный период для отъезда стоит 15 ходов. Тогда на начальном этапе роста города он сможет набрать 3-4 населения даже при постоянной эмиграции из него. При достижении населения 6, новый житель появится через 12-15 ходов, и если город будет и дальше оставаться неудачником, то в теории должен застыть на этих 6 населения, потому что каждый новый житель будет уезжать. Опускания до 5 населения наверное не стоит бояться, т.к. пищевая инфраструктура, фермы и амбар, останутся, поэтому снова до 6 жителей город быстрее доберётся. В каком-то виде этот механизм будет оказывать влияние, на полагаться только на него конечно не стоит... Эффект снежного кома ключевой для баланса, как бы придумать ограничение только )

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

Peter
13.03.2016, 12:40
Рост основан на еде но включает и социальные отношения (модификаторы традиции), медицину/санитарию (акведук, госпиталь) и т.п.
Можно в принципе давать минус к процветанию в городах с бурным ростом (эффект youth bulge (https://en.wikipedia.org/wiki/Population_pyramid#Youth_bulge) - "злокачественное преобладание молодежи") но ИИ может это не осилить...


Поэтому я предлагал увеличить кулдаун период, можно и специальный период ввести. Я руководствовался следующей логикой (цифры просто для ориентировки). Например, небольшой город прибавляет жителя каждые 5-7 ходов, а минимальный период для отъезда стоит 15 ходов. Тогда на начальном этапе роста города он сможет набрать 3-4 населения даже при постоянной эмиграции из него. При достижении населения 6, новый житель появится через 12-15 ходов, и если город будет и дальше оставаться неудачником, то в теории должен застыть на этих 6 населения, потому что каждый новый житель будет уезжать. Опускания до 5 населения наверное не стоит бояться, т.к. пищевая инфраструктура, фермы и амбар, останутся, поэтому снова до 6 жителей город быстрее доберётся. В каком-то виде этот механизм будет оказывать влияние, на полагаться только на него конечно не стоит... Эффект снежного кома ключевой для баланса, как бы придумать ограничение только )

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

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

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

Можно также добавить различные эффекты в пользу отстающих - на счастье и рост (национализм), поселенцев бесплатных... Надо подумать над этим.

Tomahawk
13.03.2016, 13:58
Можно ввести "инвестиции" - бонусы к производству при экономическом отставании. Т.е. народ должен двигаться в богатые страны, а капитал - в бедные. Вопрос как конкретно это будет выглядеть. То ли это будет модификатор к пр-ву, то ли здания будут появляться - второе наверное предпочтительнее, т.к. пр-во можно и на юнитов направить, что не увеличит процветание. Также вопрос как это будет рассчитываться, тут следует учесть возможные эксплоиты.
Критично отношусь ко всем этим модам, которые вводят дополнительные здания, производящие молотки, науку, культуру или золото, потому что все они вносят дисбаланс в оригинальный баланс игры. Увеличение производства или науки приводит к ускорению игры на последних этапах, в средневековье будете играть с обычной скоростью, а последние эпохи пролетят махом. Я знатно попарился с эпохой Просвещения, чтобы учесть все изменения из-за зданий, которые она вносит. Поэтому считаю любые модификаторы должны быть скрыты для игрока и участвовать только в вероятности выбора города для переезда. Иначе вы пойдёте в сторону глобального мода, который некоторым может не понравиться :) потребуют потом старую версию вернуть с одной лишь Эмиграцией.

Peter
13.03.2016, 21:07
Критично отношусь ко всем этим модам, которые вводят дополнительные здания, производящие молотки, науку, культуру или золото, потому что все они вносят дисбаланс в оригинальный баланс игры. Увеличение производства или науки приводит к ускорению игры на последних этапах, в средневековье будете играть с обычной скоростью, а последние эпохи пролетят махом. Я знатно попарился с эпохой Просвещения, чтобы учесть все изменения из-за зданий, которые она вносит. Поэтому считаю любые модификаторы должны быть скрыты для игрока и участвовать только в вероятности выбора города для переезда. Иначе вы пойдёте в сторону глобального мода, который некоторым может не понравиться :) потребуют потом старую версию вернуть с одной лишь Эмиграцией.

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

я думаю дать небольшим городам еще дополнительную защиту от эмиграции но не придумал пока механизм
наверное буду смотреть относительные размеры

Tomahawk
15.03.2016, 17:17
Надо ещё рассмотреть момент с голодом, будет ли он мешать. Когда житель умирает от голода, игра ведь просто вычитает 1 жителя? Тогда проценты религий останутся прежними, и на следующий ход можем не увидеть кого-то из последователей... Поэтому может выйти ситуация, когда все хотят приехать в один крупный город, и чуть ли не каждый ход по 1 жителю в него приезжает, а пищи в нём не увеличивается. Жители будут дохнуть, игра будет как-то пересчитывать наши проценты... кол-во последователей будет уменьшаться. Отсюда вывод, в конечном итоге надо мод сбалансировать так, чтобы не было массового перемещения мигрантов в один и тот же город. Иначе изменения станут заметны. Я бы даже согласился на то, чтобы миграции не были постоянными, если нет целей для переезда, люди просто сидят дома.

BlackSun_rus
20.03.2016, 12:00
А v6 уже выпущена или допиливается?
На стиме только v5 нашел - это так и есть или я слепой?

Peter
20.03.2016, 15:32
А v6 уже выпущена или допиливается?
На стиме только v5 нашел - это так и есть или я слепой?

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

Pencel
21.03.2016, 00:11
Я в теме, могу по тестировать. И сразу вопросик - на 1800 ходу когда очередь хода доходит до Атилы, игра зависает - как узнать в чем проблема и что исправить (удалил атилу и игра играется нормально)

Peter
21.03.2016, 07:13
Я в теме, могу по тестировать. И сразу вопросик - на 1800 ходу когда очередь хода доходит до Атилы, игра зависает - как узнать в чем проблема и что исправить (удалил атилу и игра играется нормально)

спасибо за предложение, мы с вами свяжемся ;)
насчет аттилы написал в личку

Pencel
21.03.2016, 10:45
В личку не пришло сообщение, проблему вылета решил с помощью Ingame Editor - у Атилы очистил всех юнитов (было порядка сотни) и игра пошла без зависаний.

P.S.
Столкнулся с такой проблемой в игре с Иммигрантами..все хорошо продолжалось до ограничения обработки города рабочими (3 клетки)..нужен тандем к иммигрантам (увеличение до 5 клеток это 90 рабочих) подобному моду (ссылка (http://steamcommunity.com/sharedfiles/filedetails/?id=270365314)) только в том моде нужно корректировать CvGameCore_Expansion2.dll..может кто умеет, помогите!!!

Peter
25.03.2016, 20:54
прошу проверить интерфейс и работу мода
также буду рад услышать замечания по балансу!

настройки можно крутить в файле EmigrationSettings.xml: EmigrationBar определяет размер копилки, DeltaExponent отвечает за преобразование разницы в процветании в побуждение к эмиграции (разница возводится в эту степень, например 0.5 означает квадратный корень из разницы). Также там много других настроек, по названию можно догадаться что они делают. Если не понятно - спрашивайте. В общем-то в интерфейсе достаточно подробно расписано как что получается. Тут также прошу высказываться, если будут предложения по интерфейсу.

Pencel
26.03.2016, 00:33
На экране города - Счастье отсутствует - это так задумано - почему убрано...вместо него ничего не должно появится?

Peter
26.03.2016, 06:05
На экране города - Счастье отсутствует - это так задумано - почему убрано...вместо него ничего не должно появится?

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

Pencel
26.03.2016, 10:11
EMIGRATION MOD: offset from the bottom - за что это модуль отвечает - пустое смещение в низ?!

Peter
26.03.2016, 10:18
EMIGRATION MOD: offset from the bottom - за что это модуль отвечает - пустое смещение в низ?!

да, но как-то криво работает
не могли бы вы сделать скриншот интерфейса? как у вас он выглядит

Pencel
26.03.2016, 10:54
Я немного подкорректировал интерфейс, иконку добавил с 5 версии...не нашел где находятся иконки, теперь выглядит получше:

http://savepic.ru/9124913.jpg


<!-- Tourism Info -->
<Box Offset="0,0" Anchor="L,T" Size="240,32" Color="255,255,255,0" ID="TourismBox">
<Label Anchor="L,C" Offset="6,0" String="[ICON_TOURISM]"/>
<Label Anchor="L,C" Offset="32,0" String="TXT_KEY_CITYVIEW_TOURISM_TEXT" Font="TwCenMT20" FontStyle="Shadow"/>
<Label ID="TourismPerTurnLabel" Anchor="R,C" String="" Font="TwCenMT20" FontStyle="Shadow"/>
<Box Anchor="L,B" Color="27.53.64.255" Offset="4,0" Size="240,1"/>
</Box>
<!-- EMIGRATION MOD: Prosperity Info -->
<Box Offset="0,0" Anchor="L,T" Size="240,32" Color="255,255,255,0" ID="ProsperityBox">
<Label Anchor="L,C" Offset="6,0" String="[ICON_FLOWER]"/>
<Label Anchor="L,C" Offset="32,0" String="TXT_KEY_CITYVIEW_PROSPERITY_TEXT" Color0="196.196.196.255" Color1="0.0.0.128" Color2="255.255.200.255" Font="TwCenMT20" FontStyle="Shadow"/>
<Label ID="ProsperityLabel" Anchor="R,C" String="" Color0="196.196.196.255" Font="TwCenMT20" FontStyle="Shadow"/>
<Box Anchor="L,B" Color="27.53.64.255" Offset="4,0" Size="240,1"/>
</Box>
<!-- EMIGRATION MOD: Migration Info -->
<Box Offset="0,0" Anchor="L,T" Size="240,32" Color="255,255,255,0" ID="MigrationBox">
<Label Anchor="L,C" Offset="6,0" String="[ICON_HAPPINESS_1]"/>
<Label ID="MigrationLabel" Anchor="R,C" String="" Font="TwCenMT18" FontStyle="Shadow"/>
<Box Anchor="L,B" Color="27.53.64.255" Offset="4,0" Size="240,1"/>
</Box>
<!-- EMIGRATION MOD: offset from the bottom
<Box Offset="0,0" Anchor="L,T" Size="240,32" Color="255,255,255,0" ID="OffsetBox">
<Label Anchor="L,C" Offset="6,0" String=" " Font="TwCenMT14" FontStyle="Shadow"/>
<Box Anchor="L,B" Color="27.53.64.255" Offset="4,0" Size="240,1"/>
</Box>-->
<!-- Culture Info NotificationTileFrame -->
<Container Size="240,100" ID="CultureBox">

Peter
26.03.2016, 11:18
странно, культура висит в воздухе
может кто еще выложить?

процветание должно быть под культурой

Tomahawk
26.03.2016, 11:34
У меня было нормальное оформление, под культурой. Запускал мод без других. Предлагаю ничего не менять, выглядит симпатично. Разве что шрифт у +8 поменять, чтобы в стиле других цифр было.

Pencel
26.03.2016, 14:38
Подкорректировал:

http://savepic.ru/9141357.jpg

Peter
26.03.2016, 20:06
добавил иконку цивилизации

https://i.gyazo.com/41d8dc362d075f740ae012a9337f6e91.png

добавил cooldown период и эффекты идеологий

прошу еще раз проверить:
8597

как отображается иконка и русский текст

Tomahawk
27.03.2016, 06:31
Отображается как на картинке и по-русски.

Pencel
27.03.2016, 07:29
http://savepic.ru/9169891.jpg http://savepic.ru/9168867.jpg

Peter
27.03.2016, 07:43
Отображается как на картинке и по-русски.




Спасибо!
Сегодня заливаю в стим.

Peter
27.03.2016, 07:45
http://savepic.ru/9169891.jpg http://savepic.ru/9168867.jpg

Я вижу у вас показывается здоровье, вы разобрались как управлять последовательностью загрузки модов, или просто объединили два мода?

Tomahawk
27.03.2016, 08:53
Спасибо!
Сегодня заливаю в стим.
Описание на родном русском языке тоже будет? :) Хотя бы под спойлером где-нибудь ))

Peter
27.03.2016, 09:01
Описание на родном русском языке тоже будет? :) Хотя бы под спойлером где-нибудь ))

сделаю :)

Pencel
27.03.2016, 12:51
Я вижу у вас показывается здоровье, вы разобрались как управлять последовательностью загрузки модов, или просто объединили два мода?


Как я поступил - на базе файлов Realism Mod я добавил Emigration и так же на базе Realism Mod я добавил Health & Plague for BNW - подключил DDL Realism Mod (мод Реала с моих документов удалил) - не изменяя структуру самого Realism Mod все моды правильно подключаются и работают.

P.S.
Но для тандема этих модов нужно расширить город хотя бы до 5 клеток..наплыв иммигрантов + здоровое население = не хватает места людям.

Pencel
27.03.2016, 17:54
Проблемы в отображении цивилопедии (сбились все)....



добавил cooldown период и эффекты идеологий
с этим так же проблемы, в древнейшем мире исчезли здания, появились знаки вопроса:

http://savepic.ru/9154427.jpg

http://savepic.ru/9117563.jpg

Peter
28.03.2016, 05:20
спасибо поправлю
еще пару багов нашел..

Peter
28.03.2016, 10:42
с цивилопедией был глюк из-за псевдозданий. нужно им было еще указать TechPrereq=NULL чтобы скрыть из цивилопедии

последняя версия:
8598

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

добавлю еще беженцев
и инвестиции, если придумаю как

Pencel
28.03.2016, 11:36
Спасибо за исправление, оперативно - все работает..тестирую далее в связке с Пандемий...

http://savepic.ru/9133776.jpg

Какая задача скрытых зданий dummy?

Peter
28.03.2016, 12:06
Спасибо за исправление, оперативно - все работает..тестирую далее в связке с Пандемий...

http://savepic.ru/9133776.jpg

Какая задача скрытых зданий dummy?

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

Pencel
28.03.2016, 12:29
В цивилопедии теперь порядок..только в редакторе отображается....сейчас смотреть буду...

Tomahawk
29.03.2016, 05:38
у вас какой-то нестандартный интерфейс
Это In-Game Editor, а здания типа Сената от других модов добавились в список.

Peter
29.03.2016, 16:12
Последняя версия: 8600
седня залью ее если не найду багов
добавлены беженцы



Это In-Game Editor, а здания типа Сената от других модов добавились в список.
а, понятно
слышал про него

Peter
30.03.2016, 09:44
залил в стим
описание на русском:


Счастье и продуктивность вашей империи привлекают иммигрантов из городов других цивилизаций.
Идеологии по-разному влияют на миграцию.

Что нового в 6й версии:
* мигранты переносят религию
* при захвате города часть населения превращается в беженцев
* система эмиграции переработана: теперь вместо вероятности эмиграции накапливаются очки эмиграции. Процесс отображается в интерфейсе города.

Tomahawk
30.03.2016, 12:41
Поздравляю! =)

при захвате города часть населения превращается в беженцев
Это стоит понимать как интегрирование внутрь мода "Units - Population (v 8)"? Он в чистом виде работает или беженцы ещё с собой религию уносят?)

Peter
30.03.2016, 12:47
Поздравляю! =)

Это стоит понимать как интегрирование внутрь мода "Units - Population (v 8)"? Он в чистом виде работает или беженцы ещё с собой религию уносят?)

спасибо!

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

Tomahawk
30.03.2016, 15:03
в моде половина из этой половины добавляется в близлежащие города, с кем у бывшего владельца нет войны. механика та же что с эмиграцией, т.е. религия переносится.
То есть теперь население не впустую исчезает, а разбегается кто куда, понятно )

Peter
30.03.2016, 15:33
То есть теперь население не впустую исчезает, а разбегается кто куда, понятно )

да, именно так.
причем при прочих равных предпочитают "родные" города.

Peter
05.06.2016, 19:10
8662
исправлен баг с беженцами

BlackSun_rus
06.06.2016, 15:07
У меня возникла проблема - не хочет работать совместно с EUI (Enhanced User Interface), не дает возможность выбора постройки в городе (не раскрывает список).

Было ли у кого-то подобное?

Pencel
06.06.2016, 17:30
Не совместимы.