iDesperado, спасибо за замечания!
<div class='quotetop'>Цитата(iDesperado * 10.11.2008, 22:36) [snapback]267709[/snapback]</div>Да почему. Можно предположить, что Гильдия сохраняет нейтралитет и не осуществляет поставки в зоне военных действий.> Будем считать, что перевозка осуществляется мгновенно, в начале хода (ну типа берешь ресурсы взаймы у Гильдии караванщиков).
> Враждебные армии и флоты делают непроходимыми клетки в своей "зоне действия"
как-то странно сочитаются. [/b]
<div class='quotetop'>Цитата</div>Ну да, согласен, может быть такая проблема. Если игрок ход рулит, то он конечно такую ситуацию заметит, а вот если всё будет на автомате...меня в такой концепции смущает вариант когда постоянно производящий к примеру щиты строение из-за кого-то влезжего с более высоким приоритетом на склад (или чужой армии), было вынуждено заказывать ресурс с другого континента, сжирает весь транспортный бюджет стопоря все другие перевозки.[/b]
Ну тогда получается нужно позволять для каждого ресурса задавать верхнюю планку стоимости перевозки (Pk).
И типа если Cijk>Pk, то Cijk=-1 (перевозка не осуществляется).
<div class='quotetop'>Цитата</div>Нет, приоритеты - не транспортировки, а производства (или строительства). Если игрок задает, что производство бронзовых пушек приоритетнее, чем производство бронзовых лопат, то оно и снабжаться будет в первую очередь - примерно как в жизни. Но не в том смысле, что туда первым отправляется ресурс (локальные оптимумы не сложатся в глобальный!) - а в том, что если ресурса на всех не хватает, то в жертву будет принесено производство лопат, а не пушек.а второе - порядок транспортировки будет решающим в плане эфективности расходования бюджета, победит тот кто будет часами расставлять приоритеты транспортировки, а тот кто хочет тупо поиграть шансы на победу будет иметь сильно меньшие.
[/b]
Изменение приоритетов каждый ход - вряд ли позволит что-то сэкономить. Хотя мега-хардкорным игрокам конечно не запретишь :)
>Да почему. Можно предположить, что Гильдия сохраняет нейтралитет и не осуществляет поставки в зоне военных действий.
ну так тропинка от гильдии может быть и с другой стороны от заблокированой злобным противником
>Изменение приоритетов каждый ход - вряд ли позволит что-то сэкономить. Хотя мега-хардкорным игрокам конечно не запретишь
позволит, позволит. если ресурса не хватает у меня совсем мозг ломается, а если хватает то предположим город с ресурсом находится между двумя городами которые делаю щит и мечь. я например сходу не знаю, что пририоритетней, т.к. нуна оба, выставил одинаковые приоритеты. в результате тот, что делал щиты забрал весь ресурс с ближайшего, центрального города, а тот что делал мечи был вынужден заказывать ресурс из города который находится по другую сторону от города с щитами. а если выставить приоритет и сначала штамповать мечи из ресурсов центрального города, то ресурс будет доступен ближе на расстояние равное длине дороги между нашими городами. т.е. игроки в какой-то раил тайкон скорее играть будут.
<div class='quotetop'>Цитата(iDesperado * 11.11.2008, 3:06) [snapback]267722[/snapback]</div>Ну так и есть - поэтому я и говорю, что маршрут перевозки считается в обход блокируемой территории. Ну а уж если сам город попал в зону блокады - тогда совсем никак.>Да почему. Можно предположить, что Гильдия сохраняет нейтралитет и не осуществляет поставки в зоне военных действий.
ну так тропинка от гильдии может быть и с другой стороны от заблокированой злобным противником :)[/b]
>Изменение приоритетов каждый ход - вряд ли позволит что-то сэкономить. Хотя мега-хардкорным игрокам конечно не запретишь :)
<div class='quotetop'>Цитата</div>Приоритеты не показывают последовательность снабжения. Если ресурсов хватает, то приоритеты фактически вообще не нужны - задача будет решаться просто исходя из минимизации общих транспортных расходов. Если не хватает, то потребители начинают исключаться из задачи в порядке, обратном их приоритетности (т.е. начиная с низкого), пока не начнет хватать ресурсов оставшимся (это один из возможных алгоритмов), а затем задача сводится к предыдущей.позволит, позволит. если ресурса не хватает у меня совсем мозг ломается, а если хватает то предположим город с ресурсом находится между двумя городами которые делаю щит и мечь. я например сходу не знаю, что пририоритетней, т.к. нуна оба, выставил одинаковые приоритеты. в результате тот, что делал щиты забрал весь ресурс с ближайшего, центрального города, а тот что делал мечи был вынужден заказывать ресурс из города который находится по другую сторону от города с щитами. а если выставить приоритет и сначала штамповать мечи из ресурсов центрального города, то ресурс будет доступен ближе на расстояние равное длине дороги между нашими городами. т.е. игроки в какой-то раил тайкон скорее играть будут.
[/b]
<div class='quotetop'>Цитата(maxis81 * 11.11.2008, 9:40) [snapback]267737[/snapback]</div>Приоритеты не показывают последовательность снабжения. Если ресурсов хватает, то приоритеты фактически вообще не нужны - задача будет решаться просто исходя из минимизации общих транспортных расходов. Если не хватает, то потребители начинают исключаться из задачи в порядке, обратном их приоритетности (т.е. начиная с низкого), пока не начнет хватать ресурсов оставшимся (это один из возможных алгоритмов), а затем задача сводится к предыдущей.
[/b]![]()
я разве не достаточно разжувал пример ? или с чего вы решили, что сможете решить задачу минимизации транспортных расходов ? и вообще как определите, что ее нужно решать в моем примере, а не выгодней подождать с мечами пока в среднем городе будет достаточно ресурсов, чем заказывать их издалека ?
> я разве не достаточно разжувал пример ?
Дык вроде бы я на пример и ответил? Или что-то неправильно в нем понял? По моему мнению, при таком расположении городов, оптимальным решением задачи не сможет быть такое, как в примере. Ресурсы будут взяты из ближайших городов и для мечей, и для щитов.
> или с чего вы решили, что сможете решить задачу минимизации транспортных расходов ?
А почему не сможем? Приближенные алгоритмы для таких задач, насколько мне известно, имеют время решения, пропорциональное N*M - или я ошибаюсь?
> и вообще как определите, что ее нужно решать в моем примере, а не выгодней подождать с мечами пока в среднем городе будет достаточно ресурсов, чем заказывать их издалека ?
Вот это уже более сложный вопрос...
Если игрок рулит ход, то проблем нету - он сможет решить, везти или ждать.
А если это отдано на усмотрение ИО, то придется давать возможность устанавливать какие-то параметры. В простейшем случае - задание игроком максимальной стоимости перевозки единицы ресурса, при которой она осуществляется вообще (я про это уже говорил). В более сложном - эта максимальная стоимость должна зависеть от приоритета потребителя (но тогда алгоритм решения задачи, как я понимаю, будет более сложным).
Ну и наконец мое главное соображение... вообще-то имелось в виду сделать стоимости перевозок достаточно невысокими по отношению к прочим затратам и доходам в игре, чтобы у игроков были лучшие возможности потратить свое время в е-цив2, нежели добиваться экономии в пару процентах на перевозках.
<div class='quotetop'>Цитата(maxis81 * 11.11.2008, 12:26) [snapback]267746[/snapback]</div>ок, попробую графически. задача упрощена до предела:Дык вроде бы я на пример и ответил? Или что-то неправильно в нем понял? По моему мнению, при таком расположении городов, оптимальным решением задачи не сможет быть такое, как в примере. Ресурсы будут взяты из ближайших городов и для мечей, и для щитов.
[/b]
R1__________________G1__________R2__________G2
R1 и R2 города с ресурсами, G1 город строит мечи, G2 строит щиты, ресурсов R2 хватит или на постройку щитов или на мечей.
надеюсь графически видно, что если G1 заберет ресурсы с ближайшего R2, то для G2 ближайшим городом с ресурсами R1 и мы получим самый не оптимальный вариант доставки.
<div class='quotetop'>Цитата(maxis81 * 11.11.2008, 12:26) [snapback]267746[/snapback]</div>практически наверника найти оптимум можно только тупым перебором. если учесть, что ресурса в одном городе будет не хватать на всю постройку и на одну постройку будут заказ из нескольких городов, а постройка требует несколько ресурсов то кол-во комбинаций без учета иностранных поставок будут зашкаливать уже с конницей. а теперь представте как этот перебор осуществлять на клиенте в реалтайме когда игрок тыркается в городе выбирая, что бы построить.А почему не сможем? Приближенные алгоритмы для таких задач, насколько мне известно, имеют время решения, пропорциональное N*M - или я ошибаюсь?
[/b]
<div class='quotetop'>Цитата(maxis81 * 11.11.2008, 12:26) [snapback]267746[/snapback]</div>если на первых шагах будет пара процентов то доставка трех и более ресурсов через всю страну с десятка городов к середине игры может стать решающим фактором ...Ну и наконец мое главное соображение... вообще-то имелось в виду сделать стоимости перевозок достаточно невысокими по отношению к прочим затратам и доходам в игре, чтобы у игроков были лучшие возможности потратить свое время в е-цив2, нежели добиваться экономии в пару процентах на перевозках.
[/b]
<div class='quotetop'>Цитата(iDesperado * 11.11.2008, 15:54) [snapback]267750[/snapback]</div>... который будет отвергнут алгоритмом, продолжающим свою работу до поиска оптимального решения (или приближенного решения, отличающегося от оптимального на n%).ок, попробую графически. задача упрощена до предела:
R1__________________G1__________R2__________G2
R1 и R2 города с ресурсами, G1 город строит мечи, G2 строит щиты, ресурсов R2 хватит или на постройку щитов или на мечей.
надеюсь графически видно, что если G1 заберет ресурсы с ближайшего R2, то для G2 ближайшим городом с ресурсами R1 и мы получим самый не оптимальный вариант доставки.[/b]
<div class='quotetop'>Цитата</div>Я стесняюсь спросить, вы знакомы примерно с транспортными задачами и алгоритмами их решения? Можно прочитать например тут: http://ru.wikipedia.org/wiki/Транспортная_задачапрактически наверника найти оптимум можно только тупым перебором. [/b]
"И, наконец, в 1997г. Голдберг и Рао предложили алгоритм, присваивающий дугам неединичную длину. Это самый современный из всех известных мне алгоритмов. Асимптотическая оценка его быстродействия превзошла O(nm), о такой скорости многие годы можно было только мечтать. Уверен, что за прошедшие годы алгоритм Голдберга и Рао тщательно изучался и улучшался."
<div class='quotetop'>Цитата</div>Насчет заказа из нескольких городов - да, это верно замечено, задача таким образом усложняется. Однако у нас количество городов (поставщиков) будет существенно меньше количества зданий (потребителей), поэтому только незначительное количество потребителей будут получать снабжение из разных городов.если учесть, что ресурса в одном городе будет не хватать на всю постройку и на одну постройку будут заказ из нескольких городов, а постройка требует несколько ресурсов то кол-во комбинаций без учета иностранных поставок будут зашкаливать уже с конницей. а теперь представте как этот перебор осуществлять на клиенте в реалтайме когда игрок тыркается в городе выбирая, что бы построить.[/b]
Впрочем, это надо моделировать. Когда будет свободное время, постараюсь что-нибудь такое прикинуть в Экселе, там есть модуль Поиск Решения.
<div class='quotetop'>Цитата(maxis81 * 11.11.2008, 12:26) [snapback]267746[/snapback]</div><div class='quotetop'>Цитатаесли на первых шагах будет пара процентов то доставка трех и более ресурсов через всю страну с десятка городов к середине игры может стать решающим фактором ...Ну и наконец мое главное соображение... вообще-то имелось в виду сделать стоимости перевозок достаточно невысокими по отношению к прочим затратам и доходам в игре, чтобы у игроков были лучшие возможности потратить свое время в е-цив2, нежели добиваться экономии в пару процентах на перевозках.
[/b]
[/b][/quote]
К середине игры вырастут не только транспортные расходы, но и прочие расходы и доходы. И в целом неочевидно, что рост первых обгонит рост остальных.
<div class='quotetop'>Цитата</div>В итоге мы получим выполняющийся цикл возрастающий в геометрической прогрессии в зависимости от увеличения числа городов в империи (или даже мире). А решение подобного вопролса для империи, полностью управляемой искуственным болваном вообще будет стремиться к бесконечности. Поэтому надо либо упрощать алгоритмизацию вместе с концепцией, либо упрощать самого болвана, против чего так громко кричит бедный Ёрик... который будет отвергнут алгоритмом, продолжающим свою работу до поиска оптимального решения (или приближенного решения, отличающегося от оптимального на n%).[/b]
<div class='quotetop'>Цитата(maxis81 * 11.11.2008, 13:27) [snapback]267752[/snapback]</div>нет, этот момент я прощелкал. но мне все равно не нравится:Я стесняюсь спросить, вы знакомы примерно с транспортными задачами и алгоритмами их решения?
[/b]
1. как это выглядит для игрока ? заказал щиты, стоимость постройки 20 монет, идем заказывать мечи, стоимость 5 ... обана! а щиты то теперь не 20, а 50 стоят, алгоритм соптимизировал доставку. (если это копейки не влияющие на ход игры смысл тогда вообще вычислять стоимость доставки?)
2. алгоритм не решает задачу, а не выгодней ли ход ничего не производить, дождавшись когда ресурсы появятся в близлежащих городах.
3. на каждый тырк мышой в постройку/юнит клиент будет перерасчитывать ВСЕ маршруты всех ресурсов из которых постройка/юнит состоит. не факт, что клиенту от таких перерасчетов не поплохеет.
имхо доставку вполне можно оценить нулем, таким образом сохраняется опасность неожиданно потерять город в котором много ресурса, а ограбить можно и окрестные постройки, сам город.
<div class='quotetop'>Цитата(swan * 11.11.2008, 18:02) [snapback]267767[/snapback]</div>Не понял эту мысль, можно пояснить?А решение подобного вопролса для империи, полностью управляемой искуственным болваном вообще будет стремиться к бесконечности.[/b]
<div class='quotetop'>Цитата(iDesperado * 11.11.2008, 18:03) [snapback]267768[/snapback]</div>1. Стоимость производства единицы продукции постоянна, а транспортные расходы игрок может видеть в отдельном экране (например, список всех перевозок k-го ресурса в стране) - назовем его окном министерства транспорта.нет, этот момент я прощелкал. но мне все равно не нравится:
1. как это выглядит для игрока ? заказал щиты, стоимость постройки 20 монет, идем заказывать мечи, стоимость 5 ... обана! а щиты то теперь не 20, а 50 стоят, алгоритм соптимизировал доставку. (если это копейки не влияющие на ход игры смысл тогда вообще вычислять стоимость доставки?)
2. алгоритм не решает задачу, а не выгодней ли ход ничего не производить, дождавшись когда ресурсы появятся в близлежащих городах.
3. на каждый тырк мышой в постройку/юнит клиент будет перерасчитывать ВСЕ маршруты всех ресурсов из которых постройка/юнит состоит. не факт, что клиенту от таких перерасчетов не поплохеет.
[/b]
2. Не решает конечно, такое решение принимать осмысленно может либо человек, либо ИИ. Для алгоритма я предложил возможность сравнивать стоимость перевозки единицы ресурса с некоторым максимально допустимым значением.
3. От таких - безусловно поплохеет. Подразумевалось, что расчет задачи производится в конце хода (по запросу игрока в окне министерства транспорта), когда все приказы на производство, строительство, потребление еды и т.п. уже отданы.
<div class='quotetop'>Цитата</div>Совсем нулем не хотелось бы, конечно..имхо доставку вполне можно оценить нулем, таким образом сохраняется опасность неожиданно потерять город в котором много ресурса, а ограбить можно и окрестные постройки, сам город.
[/b]
Вообще, при возможности мгновенных и относительно недорогих (или бесплатных) перевозок, ресурсы можно потерять ну только если совсем неожиданно враг город захватит. Иначе всегда можно при приближении вражины заранее и мгновенно вывезти - это нехорошо :(
<div class='quotetop'>Цитата(maxis81 * 11.11.2008, 15:16) [snapback]267769[/snapback]</div>получится, что игрок или совсем в слепую назначает производство (со 100% шансом удивится в конце хода) или после каждого назначения проверят расходы у начальника транспортного цеха. лимит это кончено хорошо, но это просто костыль, уже не первый и наверника не последний. чтоб моментально вывести ресурс с осажденного города прийдется где-то рядом строить из этого ресурса что-то не особо нужное (и не факт что других компанентов хватит), при больших запасах все равно будет проще поднять караван и уводить караванами. кажется скорость в е-цив у караванов была сравнима с лошадками. пусть это будет задача шпионов препядствовать моментальному вывозу ресурсов, например.1. Стоимость производства единицы продукции постоянна, а транспортные расходы игрок может видеть в отдельном экране (например, список всех перевозок k-го ресурса в стране) - назовем его окном министерства транспорта.
2. Не решает конечно, такое решение принимать осмысленно может либо человек, либо ИИ. Для алгоритма я предложил возможность сравнивать стоимость перевозки единицы ресурса с некоторым максимально допустимым значением.
3. От таких - безусловно поплохеет. Подразумевалось, что расчет задачи производится в конце хода (по запросу игрока в окне министерства транспорта), когда все приказы на производство, строительство, потребление еды и т.п. уже отданы.
[/b]
<div class='quotetop'>Цитата</div>реализация болванчика, который бы обрабатывал все события в империи с сотней городов и несколькими десятками товаров, а судя по всему вы замахнулись не на несколько десятков а на немерянное количество, ибо щиты и мечи - это в рамках цивообразности игры слишком жирный наворот, посольку надо обеспечить подобными ресурсами весь временной диапазон, что приведет только к паре десяткам ресурсов типа щитов, мечей, мушкетов и т.п., не считая нормальных ресурсов типа руды, зерна и т.п. Если делать так, как вы тут уже "распланировали" - то пока болван просчитает все приоритеты и прочее - ждать междуходья придется по долгуНе понял эту мысль, можно пояснить?[/b]
Можно рассчитывать параметр "транспортная несвязность страны", например, как сумму произведений размера каждого города страны на среднее арифметическое расстояний от него до всех остальных городов страны.
То есть строительство и улучшение дорог повышает связность (расчетный параметр уменьшается). Основание города у черта на куличках связность понижает. Захват чужой страны связность понижает весьма неслабо - так что это будет ограничение против неограниченных захватов других стран (выгоднее будет потенциальную жертву превратить в вассала и собирать дань ресурсами).
Затем суммарные затраты на перевозки считать как объем покрываемого дефицита ресурсов (т.е. когда в одном городе ресурса не хватает, а в другом - достаточный избыток) умножить на транспортную несвязность. Можно еще умножать на стоимость перевозки единицы ресурса (или попросту на вес ресурса).
Пример:
Пусть в стране 2 города, размером в 1000 и в 100 жителей, расстояние между ними равно 10.
Транспортная несвязность равна: 1000*10+100*10=11000.
Пусть в городе1 не хватает 500 еды (вес = 1), причем в городе2 ее избыток; а в городе2 не хватает 50 леса (вес = 3), избыток которого есть в городе1.
Тогда суммарные затраты на перевозку будут пропорциональны:
(500*1+50*3)*11000=7150000
Пускай например 1000000 этого показателя равен одной монете.
Тогда общие затраты в ход на транспортировку составят:
7150000/1000000=7,15 монет
Прим.: по идее, игроку нужно давать возможность ставить в городе галочку "не включен в транспортную сеть". Это может привести к тому, что хардкорные игроки поотключают все города и будут пытаться перевозить ресурсы ручками - возможность перевозки караванами или трейд-рутами, как сейчас, надо оставить. Впрочем, ручные караваны тоже можно сделать платными.
так гораздо лучше. только включить в транспортную сеть нужно с большим временным пенальти (ходов 10) и за нормальные деньги. тогда нельзя будет читить отключая города на ход увиливая от налога. в результате получится, что в новые города будет выгодней тянуть обычные караваны, чтоб побыстрей начать строительство, но с развитием транспортной системы ручные караваны будут неинтересны и не будет этого снежного кома. а на длинных участках дрог/в морских колониях можно сделать какие-нибудь постройки которые будут удешевлять параметр, тогда и вложения в инфраструктуру в нужных местах будут удешевлять перевозки. т.е. игрок думает не откуда пакость деревяшку в этот раз тащить станет (и за какие деньги), а на каком участке дороги построить улучшение, чтоб снизить расходы на доставку.
<div class='quotetop'>Цитата(iDesperado * 12.11.2008, 16:17) [snapback]267888[/snapback]</div>Угу.. осталось однако придумать, в каком порядке будут расходоваться из городов запасы ресурсов (если потребность в данный ход меньше, чем запасы). Начинать брать сначала из городов, максимально удаленных от столицы, а из самой столицы - в последнюю очередь?так гораздо лучше.[/b]
Или можно это делать пропорционально...
1) Составляем для каждого города, включенного в торговую сеть, баланс ресурса (местные запасы минус местные потребности).
2) Суммируем все избытки и все недостатки. Предположим, что получаем значения +1000 и -700, т.е. расход составит 70% (игрок заплатит за перевозку 700 единиц).
3) У всех городов, где есть избыток ресурса, вычитаем 70%.
<div class='quotetop'>Цитата</div>Это верно, идея хорошая!только включить в транспортную сеть нужно с большим временным пенальти (ходов 10) и за нормальные деньги. тогда нельзя будет читить отключая города на ход увиливая от налога.[/b]
можно переключатель сделать, т.к. при росте империи переферийные ресурсы понадобятся на новые города, а во время войны на всякий лучше их копить их в центре.
к стате сейчас играю в spaceciv - ход раз в час нопоминает томагочи. в первую ночь столица подохла с голоду
не знаю потянет ли народ не из ИТ такой скриптинг (правительство/адмиралы по ихнему), но в принципе мне нравится, если на пару дней нада свалить, в принципе наверно спасет. по сути игроки через какое-то время могут насоздовать основные блоки для самостоятельного АИ и можно будет устраивать бои таких скриптов между собой на радость Йорику.
<div class='quotetop'>Цитата</div>Ага, я вот как раз раздумывал над предпочтительной частотой ходов в е-цив2. Получается, нужно исходить из того, чтобы на ночь попадало 0-1 ходов... Значит, ход раз часов в 6-8?к стате сейчас играю в spaceciv - ход раз в час нопоминает томагочи. в первую ночь столица подохла с голоду :)
[/b]
<div class='quotetop'>Цитата(maxis81 * 12.11.2008, 15:37) [snapback]267910[/snapback]</div>в нормальной ситуации должно быть десятки одновременных игр, от блица по 5 часов на выходных по 10 минут на ход (в spaceciv такая игра вроде была), до 3 хода в неделю, тут имхо на опыт galaxy нужно смотреть. с быстрым стартом и без. мне бы пару ходов в рабочие дни было бы идеально.как раз раздумывал над предпочтительной частотой ходов в е-цив2. Получается, нужно исходить из того, чтобы на ночь попадало 0-1 ходов... Значит, ход раз часов в 6-8?
[/b]
<div class='quotetop'>Цитата(iDesperado * 13.11.2008, 0:03) [snapback]267949[/snapback]</div><div class='quotetop'>Цитата(maxis81 * 12.11.2008, 15:37) [snapback]267910[/snapback]в нормальной ситуации должно быть десятки одновременных игр, от блица по 5 часов на выходных по 10 минут на ход (в spaceciv такая игра вроде была), до 3 хода в неделю, тут имхо на опыт galaxy нужно смотреть. с быстрым стартом и без. мне бы пару ходов в рабочие дни было бы идеально.как раз раздумывал над предпочтительной частотой ходов в е-цив2. Получается, нужно исходить из того, чтобы на ночь попадало 0-1 ходов... Значит, ход раз часов в 6-8?
[/b]
[/b][/quote]
Ну, с одной стороны правильно бы было увеличивать продолжительность хода по мере движения партии. Типа в начале игры - раз в час (но до начала партии давать пару-тройку дней паузы, чтобы игроки могли разобраться, выбрать стратегию развития и отдать приказы), а потом - два-три раза в сутки. Или запутаются игроки и проще всегда иметь постоянный режим ходов, кто как считает?