Duration

Duration stuff is mostly done in FActiveGameplayEffectsContainer::ApplyGameplayEffectSpec. The container will register a delegate to UAbilitySystemComponent::CheckDurationExpired for the calculated duration (this only calls FActiveGameplayEffectsContainer::CheckDuration in 5.6).

Execution

See FActiveGameplayEffectsContainer::ExecuteActiveEffectsFrom.

Periodic execution

See UAbilitySystemComponent::ExecutePeriodicEffect and FActiveGameplayEffectsContainer::ExecutePeriodicGameplayEffect.

Miscs

See UGameplayEffectCreationMenu to add custom menu entries in the Content Browser for your gameplay effects.