Найти тему
Invariant World

Миграции

Оглавление

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

Параметры:

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

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

Объекты участвующие в миграции:

Кто же и как может у меня мигрировать?

Герой:

  • Герой может быть Создан или Закончиться, делает он это в каком-либо окружении.
  • Может Переместиться из одного окружения в другое. Он обязан находиться в одном каком-либо окружении.
  • Может Войти и Выйти в сообщество. Он может не находиться в сообществах или находиться сразу в нескольких.

Сообщество:

  • Также как и герой, оно может быть Создано или Закончиться в каком-либо окружении.
  • Может Переместиться из одного окружения в другое.

Окружение:

Окружение может быть только Создано или Закончиться.

Поколение:

Да, именно поколение, а не популяция, является объектом миграции. Популяция же выступает в качестве количественного параметра поколения.

  • Может быть Создано в окружении. Начинать же с чего-то надо, будь то хоть Адам с Евой, но с кого-то должно все начаться.
  • Может быть Закончено. Как не прискорбно, но всякие войны, эпидемии и катастрофы - случаются, и население уменьшается не только за счет старения.
  • Может Переместиться из одного окружения в другое. В этом случае на входе мы имеем одно поколение, на выходе - другое, каждое со своим количественным параметром в виде популяции. Также поколение может мигрировать в рамках одного окружения, Преобразуется, то есть популяция просто превращается в новое. Это позволяет делать преобразование населения, например Людей в Вампиров или Зомби.
  • Может Войти и Выйти в сообщество. Для сообществ поколения входят только из существующего населения окружения, в котором находится сообщество.
  • Также может перемещаться между сообществами, либо в рамках одного с Преобразованием.

Использование:

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

При Создании, Входе, Переходе в состояние Окружения или Сообщества вписывается\добавляется объект со своими параметрами (например добавляется популяция). В случае с Переходом добавление происходит, если Окружение или Сообщество является входящим объектом миграции.

При Окончании, Выходе или Переходе (для объектов являющихся исходящими) убираются объекты миграции.

Герой же меняет свое состояние в случае, если он является объектом миграции. В его чекпоинте прописывается в каком он окружении или сообществе.

Итого:

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

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

P.P.S. для лучшего понимания статьи рекомендую прочитать предыдущие: Идея первого проекта
Карта Хронологии
Теория поколений

P.P.P.S и Обязательно поучаствуйте в выборе Названия Игры