GM3: Создаем карту локации

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

Про ощущения

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

Планирование наполнения локации

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

GM3: Создаем карту локации

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

GM3: Создаем карту локации

Далее чуть сложнее. Нужно решить, как заполнять локацию аномалиями и мутантами. Есть два путя:

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

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

GM3: Создаем карту локации

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

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

Структура игры в Game Maker

Для начала нужно коротко описать, как строится любая игра на движке GM. В качестве игрового пространства выступает комната (room), на которой размещаются объекты (object), а они в свою очередь используют картинки-спрайты (sprite) для отрисовки визуала. Комната может быть как игровой локацией, так и главным меню или заставкой. Объекты могут быть видимыми и невидимыми, имеют маску — область, обозначающую физические границы объекта, она нужна для фиксирования столкновений объектов и ограничения его перемещения. Все интерактивные элементы проекта — кнопки, персонажи, снаряды реализуются через объекты.

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

Внутренняя структура проекта

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

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

Пастбища и аномальные поля будут иметь свои отдельные объекты, создаваемые объектом-локацией

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

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

2323
85 комментариев

Сталкер 2 выходит 5 сентября, а у тебя ещё карта локации не готова, ужас. Опять перенос?

4
Ответить

к сентябрю будет альфа карты, не волнуйся))

2
Ответить

Ну-с.. Ждём-с продолжения! Интересно таки.

2
Ответить

аж захотелось пощупать гамемакер

1
Ответить

Фарамира щупать будешь по сценарию

2
Ответить

так карту по метал гиру или для сталкера моды??

1
Ответить

это анонс Сталкера 3 ты че)

2
Ответить