AlexNomad
11.04.2012, 16:45
Цитата
Поручение на автопроизводство - задача оказалась непростой с технической стороны и требует больше времени, чем ожидалось ранее.
Срок выкладки этого важного элемента геймплея откладывается на неопределенное время.
Итерационно решать эту задачу - перегружать железо
Линейным уравнением (типа Симплекс-метода) - тяжело синхронизировать производства по времени.
Самый простой вариант делать запрос на производство N шт. ресурса и и делать итерационно.
Либо решать проблему с сихронизациями времени в системе линейных уравнений увеличивая число переменных.
P.S. Это если нет циклических зависимостей. У вас их вроде не видел.
Лас Касас
20.11.2012, 12:55
Зачем всё так сложно. Задания должны выполнятся только при заходе на сайт, поэтому никаких синхронизаций не нужно. Мы ставим на очередь задание за каждый цикл (партию) производства которого отнимается по 1 поручению. При этом если нужны ресурсы, то они отнимаются сразу. Продукт же мы получаем, только при заходе на сайт. Чтобы не было длинных очередей нужно ограничить число поручений уровнем здания. По-моему реализовать такое достаточно просто и большего игроку и не нужно.
Конкретный пример.
У нас лесопилка 3 уровня и на ней работает 11 человек. Как обычно мы отдаём приказ заготовить 11 брёвен. Это ничего нам не стоит. Однако после отдачи приказа у здания вместе с кнопкой "Отменить" появляется дополнительная кнопка "Добавить", после нажатия на которую забирается 1 поручение, а в очередь ставится партия на ещё 11 брёвен. Оно отображается как 2x11, а время выполнения 21:44 (43:27). Первая партия брёвен будет готова через 21:44 минуты, но только при посещении сайта они переместятся на склад. Если я прийду скажем через час, то будут заготовлены уже обе партии и все 22 бревна окажутся на складе. Так как уровень здания 3, то я могу поставить на очередь задание только из 3 партий.
Аналогично с производством досок. Только перед тем как ставить на поток задание из 3 партий по 11 досок у меня должно быть 33 бревна на складе, которые будут использованы как сырьё. Само собой, если у меня только 30 брёвен, то я смогу поставить простое задание на 11 досок, задание из 2 партий по 11 досок или задание из 3 партий по 10 досок.
Как быть в случае отмены задания? Думаю, сырьё для первой партии должно пропасть, как пропадает сейчас, должны пропасть все поручения, а вот сырьё для второй и последующих партий должно вернуться на склад.
Очень полезно будет ставить несколько заданий на ночь или утром перед работой.
Как вам такая реализация?