Добавлен , опубликован
Вот и очередная отсечка в разработке своей игры. Проблема которую решал на этой неделе является поиск пути. Все мы знаем как он важен в RTS.
Поиск пути из коробке в плагине xgm.guru/p/ue/Nemnogo-pro-sozdanie-rts-v-UE-5-f3E никакой) Поэтому я переключил для начала его на detour crowd.
В blueprint это можно сделать просто выбрав нужный AI controller
В C++ это можно так:
.cpp файл вашего ai controller:
#include "AIModulePrivate.h"
#include "DetourCrowdAIController.h"
#include "Navigation/CrowdFollowingComponent.h"

ADetourCrowdAIController::ADetourCrowdAIController(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer.SetDefaultSubobjectClass<UCrowdFollowingComponent>(TEXT("PathFollowingComponent")))
{

}
.h файл вашего ai controller:
#pragma once

#include "AIController.h"
#include "DetourCrowdAIController.generated.h"

UCLASS()
class ADetourCrowdAIController : public AAIController
{
	GENERATED_BODY()
public:
	ADetourCrowdAIController(const FObjectInitializer& ObjectInitializer);
};
(Примеры взял отсюда forums.unrealengine.com/t/how-to-enable-detourcrowds/27356/6, но я когда делал сделал так же и все заработало)
В detour crowd есть несколько ограничений:
  • Максимальное число агентов (его можно увеличить, но нагрузка на систему возрастает)
  • Толпы плохо ходят (управление группой юнитов совсем не очень, ниже покажу)
  • Он из коробки не предназначен для RTS
Поэтому я пошел по третьему пути и сделал свой поиск пути. Это грубо конечно, свой поиск я не делал, я просто взял идею вот из этих вот статей howtorts.github.io (очень полезный цикл статей)
Поиск имеет название Flowfield, такой но с большими доработками используется в starcraft. В целом вот так выглядит результат:
2k на карте юнитов
200 юнитов
Можно сравнить за одно как работают оба варианта
Из особенностей нет проблем в передвижении больших групп
Проблемы поиска пути которые еще есть:
  • Ходим только на 45 градусов
  • Если встречаем юнита то надо чуть заранее его обьезжать
  • Когда пришли в конечную точку не понятно как встать если другой юнит там стоит (если знаете что сделать расскажите плиз)
`
ОЖИДАНИЕ РЕКЛАМЫ...
38
Когда пришли в конечную точку не понятно как встать если другой юнит там стоит
Искать пересечение 2 окружностей и останавливать

А лучше сфер, чтоб можно было под и над мостом одновременно ходить

Но искать именно когда рядом, а то производительность упадет
8
В варкрафте такое можно реализовать?
ох, я тут не подскажу, в редакторе варика очень давно не бывал

> Когда пришли в конечную точку не понятно как встать если другой юнит там стоит
Искать пересечение 2 окружностей и останавливать

А лучше сфер, чтоб можно было под и над мостом одновременно ходить

Но искать именно когда рядом, а то производительность упадет
да я примерно так и сделал, что если челик в допустимом рендже то можно его останавливать, но вот например в допустимом рендже здание, и много других юнитов, то мои не будут знать куда встать и не остановятся(

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