Download

Pretty complicated level streaming stuff. Can any of you help me with this?

Here’s what I’m trying to accomplish:

  1. A persistent level that has no actual gameplay elements. Holds a bunch of Kismet console events for switching menus. Some of the menus are hosted in other streamed levels. The appropriate Kismet console events and remote events stream the other levels in and out and load the appropriate menus.
    HS_Menus.jpg
  2. An arbitrary gameplay level that can be streamed into the persistent level at runtime. I need to leave this level out of of my persistent level’s Kismet because I’ll want the player to be able to create and load new campaigns.
  3. Arbitrary gameplay level has access to all of the console events and streaming levels from the persistent level.
  4. I don’t want to just load a whole new map with all of the functionality built-in because I don’t want to give my players the ability to create a whole standalone game. I just want them to make levels that they can load from my level, and my level will have a lot of the functionality their campaigns will need.

I am having a heck of a time accomplishing that. Here’s what happens:

  1. If I stream the level in through Kismet (which I don’t want to do, because it means the game is forever limited to the levels I include from the start), everything works.
  2. If I stream the level in through code, passing a string in to the function that streams the level (as in https://forums.epicgames.com/threads/731954-How-to-Stream-Levels-in-Script), I seem to lose access to the levels I originally had streamed in through the persistent level, and I can no longer access the squad level and game over level. For example, trying to access my squad menu from a streamed gameplay level gives me this error:

This is the code I am using to stream in levels arbitrarily:

RPGTacPlayerController.uc



exec function StreamLevel(string LevelName)
{
	// This works for any arbitrary level
	ClientPrepareMapChange(Name(LevelName), false, true);
	ClientCommitMapChange();

	// This works only for levels that I've already loaded into the persistent level
	/*ClientUpdateLevelStreamingStatus(Name(LevelName), true, true, true);
	ClientFlushLevelStreaming();*/
}


Has anyone had success with streaming levels like this? Can you tell me the correct way to stream a level into the persistent level without messing with what’s in the persistent level? Thanks very much for taking a look.

Not sure I fully understand what you are trying to achieve but if you are saying it works in kismet but some functionality is not available then why not see if there’s a way to add what’s missing. If script hold the required values can you not access the script to pass back to kismet via some seqact and seqevents? Wouldn’t the console commands you are firing through kismet be the same execs you fire through script?