Blueprint class instances, that are not spawned in the world but still fully functional?

For my game I want to store events in an array. With events I mean something like a player has died, a player has joined a server or a player has leveled up, each event storing different data like for example the “{PlayerA} has killed {PlayerB}” event needs to store the killer and the victim, but the “{PlayerA} has leveled up” needs to store PlayerA and his new level. I want to be able to create new events on the fly, so I thought the best approach was to make an “event” blueprint class and have all events be children of the “event” master class. But with this approach, as far as I know, all the events that have happened need to be present in the world. Obviously, I don’t want that. Is there a way to have fully functional class instances, that are not present in the world? If this is not possible, what would be the best alternative?

Would it work to make them variables within your GameState class?

Only Actors are attached to the world, so if you make object class blueprint those can exist outside of the world.

But i think best option for you is to use strictures to hold event data. Think about it, there practicly only 3 elements that are needed to describe the event you put examples of: event type, causing player and target player. So all you need to do is create enum with EventType and structure with EventType and 2 player (PlayerController?) pointers, i don’t know other types of event you have in a head so you can add more varables if needed. Tehn you store strucutre varables in array.

Structures are better for the job, not because they are deattached from the world, but because you don’t need to create UObjects which are a lot heavier, instead structure would only hold 3 varables beside eachother and thats it. Recently i made video describing how structures work and how they are stored in memory in C++ (bleuprints store them the same way):