일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- rpc
- stride
- 게임개발
- CTF
- local prediction
- 보안
- nanite
- UI
- 게임 개발
- Replication
- 유니티
- ability task
- Multiplay
- gas
- Aegis
- network object pooling
- gameplay effect
- MAC
- 언리얼엔진
- os
- unity
- listen server
- photon fusion2
- map design
- gameplay ability system
- attribute
- 언리얼 엔진
- gameplay tag
- animation
- Unreal Engine
- Today
- Total
목록2025/04/16 (2)
Replicated
생각해보니 이전 네트워크 오브젝트 풀링은 결함이 있다AActor* UDDNetworkObjectPoolingSubsystem::GetPooledObject(TSubclassOf ActorClass, const FVector& SpawnLocation, const FRotator& SpawnRotation){ if (!PooledActorsMap.Contains(ActorClass)) { UE_LOG(LogTemp, Warning, TEXT("No Actor Pool : %s"), *ActorClass->GetName()); return nullptr; } FActorArrayWrapper& ActorPool = PooledActorsMap[ActorClass..

생각나는 구현 방법은 세가지- 액터 기반- 게임인스턴스 서브시스템 기반- 월드 서브시스템 기반 액터 기반 -> 전역 풀 매니저인데 액터보단 서브시스템 기반이 더 적절. 레벨마다 액터 가져다 놓기도 좀 별로다게임인스턴스 서브시스템 기반 -> 게임 내내 유지되어서 메모리 낭비가 있을 듯 함월드 서브시스템 기반 -> 월드마다 원하는 풀링 오브젝트 초기화 시킬 수 있으니 메모리 낭비도 없고 좋은듯?=> WorldSubsystem 기반으로 결정 최대한 확장성을 고려했고, 데이터 기반으로 개발하고자 했다DataAsset 기반의 PooledObjectData의 BP를 GameMode가 읽어서 풀링 초기화그 이후 다른 오브젝트들이 알아서 서브시스템에서 Get, Return하도록 한다 게임 모드도 BP라서 그냥 Pool..