Процедурная генерация DEV BLOG
![](https://habrastorage.org/getpro/habr/upload_files/230/fe3/efd/230fe3efde522b3eca4b18f3aefdab9b.gif)
Dobrý Den, сейчас я Вам покажу пример процедурной генерации карты, на Unreal Engine 4.
Функция расчета рандомных точек на игровом поле:
![Функция расчета рандомных точек Функция расчета рандомных точек](https://habrastorage.org/getpro/habr/upload_files/1cc/dee/010/1ccdee010909cb051cfc97dace20454e.jpeg)
Давайте подробнее разберем функцию For Loop.
![Цикл Цикл](https://habrastorage.org/getpro/habr/upload_files/8f2/360/a43/8f2360a439bc10d1b6f37073b795cd5d.jpeg)
Firs Index — отвечает за начальную точку отсчета цикла. For Loop — цикл, который будет выполниться от First Index до Last Index каждый кадр. Last Index — Грубо говоря сколько раз надо выполнить цикл.
![](https://habrastorage.org/getpro/habr/upload_files/1b6/19c/2f3/1b619c2f3d1aa612ed328d6b2a86b756.jpeg)
Loop Body — Логика, которая будет циклична (в нашем случае 150 раз). Index — Сколько шагов выполнено из 150 раз.
Теперь Нам надо занести в цикл логику. Начнем с рандомных чисел.
![Рандомайзер Рандомайзер](https://habrastorage.org/getpro/habr/upload_files/027/764/66b/02776466b05cc6996706207ad6d742f2.jpeg)
Random Float in Range — Все просто рандомайзер на максималках. Min — Минимальное число Max — Максимальное число Return Value — Рандомное число в диапазоне который мы задали
![Нулевая точка координат Нулевая точка координат](https://habrastorage.org/getpro/habr/upload_files/795/0c4/a1e/7950c4a1e19bb4adaaff02529fe3b64a.jpeg)
Break Transform — В моем случае это исходная точка координат спавна объектов.
Объяснять что такое Rotation, Scale. Нет смысла.
Начнем с математической части нам надо добавить к нулевой точке координат рандомное число.
![Математика Математика](https://habrastorage.org/getpro/habr/upload_files/293/f8a/f37/293f8af371e7713e4c789cd87e39a75f.jpeg)
Make Vector — объединяет обычные числа в тип Location.
![Make Vector Make Vector](https://habrastorage.org/getpro/habr/upload_files/9f0/bf7/183/9f0bf7183e267b96f84fedb1b78277a2.jpeg)
Далее по списку вывод данных из функции:
![Вывод данных Вывод данных](https://habrastorage.org/getpro/habr/upload_files/6aa/c70/6c7/6aac706c78ac7888422b068789f2b25a.jpeg)
![](https://habrastorage.org/getpro/habr/upload_files/75f/c1d/e49/75fc1de49532c5c7b504d0e527eee170.jpeg)
На выходе у нас стоит:
True — Цикл в нашем случае мы спавним Actor Tree 2 (Дерево).
Return Value — Рандомная координата для дерева в цикле.
Completed — Выход из цикла.
Теперь можно вместо одно дерева, сразу три вида объекта сгенерировать на карте.
Итог:
![](https://habrastorage.org/getpro/habr/upload_files/481/3bb/994/4813bb99464049ecbcdfaa5f16b33316.gif)
![](https://habrastorage.org/getpro/habr/upload_files/2cc/517/204/2cc517204dbab02ccbf4214a1feed0d2.gif)
Готовлю информацию для статьи про Dedicated server(Удаленный сервер), Мультиплеер, Создание сессий и подключение к ним, система стрельбы и сам процесс разработки игры.