How to Reset Map / Level without Travel? C++

I’m making a round-based gamemode, where there are certain target Actors placed in the Level which you have to destroy each round. My problem is that, once the Actor is destroyed, I would have to manually respawn it and place it in the level each new round. How can I force the game to “reload” the level without traveling? I want the GameState and PlayerStates and everything else to remain consistent, and players shouldn’t even notice this taking place, I just want the Level to return to how it was right when it loads, ie all placed Actors are back where they should be. I’m sure there must be some way of doing this because it’s something I’ve seen and used in other engines like Source, but I can’t seem to figure it out in Unreal. This is a multiplayer game as well, so it should be network friendly. Thanks.

Did this ever get solved? I’m curious myself to how this is done.

Well i wanted the same feature in one of my projects so i implemented it myself.

Source Engine defines game events that you can listen on:
https://wiki.alliedmods.net/Generic_Source_Events

It is all easier if you use inheritance.
Create your own base actor and inherit your items from this actor.

When the map is loaded i saved all the initial location of all the actors.

Save the actors and their locations before you destroy them. When the new round starts read these actors from an array and re-spawn them.

Decals are actors as well. Same method applies to them.

I also would implement some custom events for in all the custom actors. So your game can be modded easier.
For example:

  • On Team Select
  • On Game Start (If you use a timer before you start the round)
  • Round Start (Called when the round started)
  • Round End (Called when the round ended)
  • On Spawn (Called when the player spawned?)
  • On Death (When the player died)

etc…

For an example look at the shooter game example its in C++ has showcases many neat stuff you might want to use.