|
•(Фича) Перепродумывание ресурсов - Artlav, 04.02.2011 15:54:47 |
|
|
Попытка описать и продумать, как распределять ресурсы в игре. Примерно описывает утерянную исходную идею текущей системы. Предлагаю всем внимательно вчитаться в предпосылки и требования, и проверить их правильность и полноту.
При наличии полноты можно будет придумывать алгоритм. Чего не хватает в постановке? Если сейчас не вспомним и не продумаем - второго шанса может уже и не быть!
Юниты на сетке, связность заранее не известна. Поиск связности идёт рекурсивно по карте присутствия (unu).
События игры: -Создан юнит, без потребления (или выключенный). Может изменить связность. Не должно влиять на распределение -Создан юнит с постоянным потреблением (всегда включен), (эквивалентно ли создать+запуск?) -Взорван юнит (без изменения связности, с изменением связности - одно событие, надо считать, что связность изменилась?) -Запущен юнит с постоянным потреблением -Изменено потребление/производство юнита (распределение, строительство. Отличается от старт-стоп тем, что целостно, т.е. если производство меняется со 100 до 99, то не остановится всё, что им питается, как при старт-стопе) -Остановлен юнит, с освобождение ресурсов -Остановлен юнит инфильтратором или по окончанию необходимого ресурса (взрыв без потери связности?) -Попытка остановки юнита (производит нужное), с полным откатом чего либо -Заменён юнит (удалён-создан без изменения связности) -Конец хода
События конца хода: -Нужно удовлетворить потребности -Нужно остановить тех, кто не получил по потребностям -Нужно положить избыток в хранилища (возможно, что произведено больше, чем влезет, но будет потрачено и влезет) -Нужно обновить потребления у производителей -Всё должно быть целостным
Шахта: -Производство фиксируется при создании и перерассчитывается при распределении -Производство не может превышать 16 единиц в сумме добываемых материалов
Вопросы: -Когда момент конца хода? Локально перед началом следующего хода?
Данные: -Для каждого ресурса хранится рабочая и рассчётная структура: --num Суммарное число --use Потребить в этом ходу --now Имеется на борту --pro Произвести за этот ход --dbt Долг за этот ход, необходим чтобы определить, а можем ли мы включить что-то
-У юнита есть (должно быть единое) состояние включенности, при котором он потребляет и производит -Хранение и долги юнит даёт всегда -Проводимость у юнита всегда
Алгоритм (набросок мыслей, не вчитываться): -Все функции должны быть запускаемы на тестовом наборе (для проверки возможности операции и её отката) или на рабочем -Функции событий обходят рекурсивно все юниты от точки события -Функция конца хода обходит все юниты
-При удовлетворении потребностей сначала откачиваются долги, потом - из хранилищ -При недостачи - остановить... ...Тут возникает моногоитерационная проблема - при остановке надо запускать все с начала...
...Надо думать...
Итак, первый такт - произвести производство и положить в хранилища Предполагается, что на этот момент состояние корректно. Второй такт - раздать потребление
-Вопрос - долги забывать, раздавая по потреблению, или обнулять долги, потом по потреблению их создать?
|
|
ответы :
-
Вторая ревизия, исправленная и додуманная - Artlav, 08.02.2011 11:50:07
-
Мысли - Burn, 09.02.2011 17:41:41
-
Отв: Мысли - Artlav, 09.02.2011 20:42:58
-
Отв: Отв: Мысли - Burn, 09.02.2011 22:21:40
-
Третий вариант - Artlav, 09.02.2011 21:08:10
-
Третий вариант. Мысли. Раздельность. - Burn, 09.02.2011 23:28:15
-
Но это требует... - Artlav, 09.02.2011 23:54:35
-
Зато это работает. - Burn, 10.02.2011 0:33:39
-
Отв: Зато это работает. - Artlav, 10.02.2011 0:45:10
-
Отв: Отв: Зато это работает. - Burn, 10.02.2011 1:20:44
-
Верю. - Artlav, 10.02.2011 1:36:33
-
Третий вариант. Вопросы. Терминология. - Burn, 10.02.2011 0:16:57
-
Отв: Третий вариант. Вопросы. Терминология. - Artlav, 10.02.2011 1:07:21
-
Терминология. - Burn, 10.02.2011 1:58:25
-
Отв: Терминология. - Artlav, 10.02.2011 8:24:26
-
Терминология & Подход - Burn, 10.02.2011 11:10:33
-
Дискретность задачи - Artlav, 10.02.2011 11:48:39
|
| |