Changelog#
01/12/2022 - v1#
Features#
- Fully Replicated
Conditional Replication for clients: Enemy actors are only replicated if it is visible
Cheat prevention: clients do not know about enemy actors until visible
- Dynamic
Faction change
Obstacle
Unlimited Number of Teams
- Fast C++ Implementation
Multithreaded
Fully exposed to blueprints
Fully extendable in C++ and Blueprints
Up to 64 Teams
128 Height level
Configurable Fog Resolution
- Examples included
Minimap
Full Playable demo
15/01/2023 - v1.2#
Features#
- Allow teams to share vision [#8]
- Vision sharing can be controlled in different ways (Use
AGKFogOfWarVolume::VisionSharingSetting
to configure): - UseGenericTeamSolver (Old Behavior):
we use unreal engine builtin
FGenericTeamId::GetAttitude()
If Teams are Friendly then vision is shared
- UseFogOfwarTeamSolver (new default):
we use Fog of War internal solver that will replace the default attitude solver used by
FGenericTeamId
Authority can control which team is visible by which using
AGKFogOfWarVolume::SetShareVisibility
.Teams that share vision with another become ally (i.e
FGenericTeamId::GetAttitude()
will return Friendly).Vision sharing does not have to be symmetric.
You need to call
SetShareVisibility(A, B, true)
andSetShareVisibility(B, A, true)
to make it symmetric.
- UseBoth:
Both above systems are used separately
Friendly teams do not need to share vision and enemy teams could share vision.
Calling
AGKFogOfWarVolume::SetShareVisibility
only change visibility and has no impact of the Team attitude.
- Vision sharing can be controlled in different ways (Use
Use
WITH_GENERICTEAMSOLVER=1
so force UseGenericTeamSolver at compile time
- Team Vision Caching (Authority Only)
If vision sharing is reciprocal (i.e if Team A shares its vision with B and B share its vision with A) then the vision texture are the same and TeamB vision drawing can be skipped and use TeamA texture instead
Can be disabled at runtime with
bCacheSimilarAllyVision
inside the FogOfWarVolumeCan be disabled at compile time with
WITH_TEAMCACHING=0
- OnSighted/OnOutOfSight Events (Authority Only) [#11]
Runtime Toggle:
bBroadcastSightingEvents
inside the FogOfWarVolumeCompile Time Toggle:
WITH_SIGHTING=0
- Flying units
Can be disabled at compile time with
WITH_FLYINGUNITS=0
- Without flying units:
Only the obstacles heights are taken into accounts.
Vision height is not kept after the initial vision computation.
- With flying units
the unit above sees everything below units below see nothing above
NOTE: in practice most RTS do not have true flying units, i.e ground units will see flying units.
Disabled by default
- Allow server to tick at a different speed than clients [#9]
By default dedicated server only run at 30 tick per second.
Bug Fixes#
Fix Team color [#10]
Fix replication issue were clients had characters left as visible after server paused the replication.
15/06/2023 - v1.3#
UE 5.2 update
15/10/2023 - v1.4#
UE 5.3 update