Hey!👋 ubyte.dev just recently launched. It's dedicated towards Unreal Engine 5.
Portions of the materials used are trademarks and/or copyrighted works of Epic Games, Inc. All rights reserved by Epic. This material is not official and is not endorsed by Epic.
Documentation
Unreal Engine 5.0

Unreal Engine 5.0

title placeholder

About

The Generic Activity Framework is a collection of interlinked boilerplate C++ classes that set the stage for scalable hierarchical activity processing using Gameplay Tags.

It was initially part of one bigger plugin but got split up into its own independent module in order to potentially serve many other opinionated formats that semantically agree with the same guiding principles established by GenericActivityFramework.

The goal is to be able to build 'spin-off systems' that have much more blueprint exposure while letting this framework be the underlying native foundation (if you agree with the principles it designates).

Networking

It's entirely server-side, build on the idea that clients should not (predictively) reason about anything themselves, but merely reflect the server's decisions by receiving replicated pawn− or other tangible actor information.

Naming, terms, and hierarchical activity processing

There are 3 types of activities: World-, Crowd-, and Agent Activities. By default, they could be seen as merely a 'pointer' to an action without carrying additional state.

FWorldActivity structures are performed by world activity workers. The phrase 'world activity worker' is a colloquial term for any IGenericWorldActivityWorker-inheriting class. Likewise,

FCrowdActivity structures are performed by crowd activity workers. The phrase 'crowd activity worker' is another way of saying "any class that inherits from IGenericCrowdActivityWorker".

FAgentActivity structures are performed by agent activity workers. The phrase 'agent activity worker' is another way of saying "any class that inherits from IGenericAgentActivityWorker".

Recommended

Agent activities (performed by AIControllers) represent a singular action carried out by a pawn.

Only its initiating crowd activity worker is authoritative in deciding what FAgentActivity the agent activity worker is running next. The agent is not aware of any motive behind its assigned FAgentActivity and never begins one itself.

Crowd activities represent an action carried out by multiple agents. Example: "This crowd activity spawns X members that attack hostiles around area X on the map".

Only its initiating world activity worker is authoritative in deciding what FCrowdActivity the crowd activity worker is running next. The crowd is not aware of any motive behind its assigned FCrowdActivity and never begins one itself.

World activities represent an action carried out by multiple crowds. Example: "This world activity spawns various crowds around the map at specific places".

Gameplay Concepts

GameplayConcepts were designed as a means to statically extend GenericActivityFramework in such a way that allows you to build reusable, self-contained modules that solve a specific need statically, without depriving GenericActivityFramework of its unopinionatedness.

GameplayConcepts may declare any type, or privately introduce additional dependencies themselves (and not let the rest of the engine know about it).

This keeps GenericActivityFramework very lean and unopinionated, capable of working with standalone gameplay ideas. (Whereas constantly forking GenericActivityFramework to add your own gameplay logic takes away its unopinionated stance.)

cross linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram