GM 9: Добавляем хищников

Долгожданное оживление игры, добавляем первый прототип полноценной фракции с основами внутренней логики.

Для тех кто не понимает что происходит ссылка на первую статью из цикла.

Про ощущения

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

Предварительная подготовка

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

Для этого в объекте Зона введу градацию состояния зоны помимо выброса и его отсутствия добавлю промежуточные этапы подготовки как раз для крыс и сигнала от ученых.

Местами остались неиспользуемые куски кода под комментариями, потом поудаляю
Местами остались неиспользуемые куски кода под комментариями, потом поудаляю

Соответственно, поправлю и Крыс для смены положения по получении этого сигнала. А чтобы они не носились по карте от места к месту во время выброса добавляю еще одно состояние ожидания конца выброса.

Долго смотрела на первую строчку, пытаясь вспомнить, что она делает, добавила комментарий
Долго смотрела на первую строчку, пытаясь вспомнить, что она делает, добавила комментарий

Проработка алгоритма для фракции песелей

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

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

Приступаем к реализации

Для начала создадим пока пустой объект отряда Собакен и объект Собачатня. В Собачатне зададим переменные отвечающие за число собак, количество мяса и пока не используемый параметр агрессии. В действиях шага зададим процесс питания по окончании таймера, а в рисовании — прорисовку спрайта для логова и вывод основных параметров на экран. Добавим Собачатню на карту и проверим на наличие ошибок.

Пока все в порядке. Теперь добавим Собачатне процесс создания отряда Собакен по достижении определенного числа голов.

Простейший код
Простейший код

А теперь самое интересное, начнем прописывать объект отряда Собакен. Я сделала его через копирование объекта Крыс, чтобы сэкономить время, общая структура будет такая же. У Собакена будет набор состояний между которыми он будет переключаться в зависимости от различных условий.

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

Запустим для проверки. Пока что Собакен не реагирует на искомый объект Крыс. Об этом нужно будет поговорить более развернуто.

Бегает красивое

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

Для этого добавим Собачатне в код в момент создания Собакена прописывание последнему «id» логова для последующих операций по передаче мяса. В свою очередь, Собакену добавим переменную для хранения id логова. И еще одну переменную — для хранения id ближайшей стаи Крыс.

Соответственно, Собакену допишем код в событии шага по проверке координат до ближайшей стайки Крыс. Если стая далеко, песели пойдут в другое место, если близко, то начнут охоту, уничтожая крыс и получая мясо в количестве 5 штук за 1 крысеныша. Также добавим состояние возвращения в логово и условия для этого.

По возвращении песели передают мясо логову
По возвращении песели передают мясо логову

Не забудем добавить Крысам самоуничтожение, если их численность станет равна 0.

Крысострофа
Крысострофа

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

Бегает охотитсо

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

6868
192 комментария

Комментарий недоступен

7
Ответить

Небольшая аудитория есть, просто до этого я под утро выкладывала, а сейчас затянула, потому и народ другой)

9
Ответить

девкам это ваще нахуй не интересно будет наверное

Тут Доброй хватит

6
Ответить

Кстате да, здесь даже с чувками некоторыми разговариваешь вобще не але. Либо это школьники которым искренне поебать че они несут.

3
Ответить

дебилов как яЧё звал, сларк?

2
Ответить

Лет 10 назад, статья была бы поактуальнее. Давненько не видел восьмой "гамак" в действии.

Но всегда восхищался как к нему приделывают 3д движки))

2
Ответить

Ахуел шо ли, я умный.

1
Ответить