The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall

User:SuperApe/OSMObjectiveManager

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

This is the main actor responsible for Objective management in OSM Adventure maps. Level designers will use this actor to control a wide variety of aspects of their OSM Adventure. It includes a standardized database of information for each objective, but it's also responsible for launching Intro cutscene Matinees, forcing specific player character profiles, name and inventory. It is also responsible for defining the DeathScene Matinee. This actor handles many hidden aspects of cutscene operation, including player pawn script execution, "bullettime" management, per Objective timelimits and resuming Adrenaline combos that were running at the time a cutscene started. It also handles score/adrenaline awards per Objective.

This actor is part of the Old Skool Monsta Toolz and designed specifically for use in the OSM Adventure gametype.

Struct

struct	ObjectiveInfo
{
	var()	name	AchieveEvent;  // The Event indicating Objective has been reached.
	var()	name	CutSceneTag;  // The Tag of the Matinee (SceneManager) to run.
	var()	bool	bBulletTime;  // Slow to "Bullet Time" during cutscene.
	var()	int 	ScoringValue;  // The score award for achieving this Objective.
	var()	int 	AdrenalineAward;  // The Adrenaline aware for achieving this Objective.
	var()	name	PlayerStartTag;  // The Tag of the TriggerPlayerStart(s) that should be turned on.
	var()	float	NextObjectiveTimelimit;  // Optional timelimit to reach next Objective.
	var()	string	AdditionalEquipment[16];  // Adds per Objective inventory. (OSMT v1.1 and later)
};

Properties

Main

array<ObjectiveInfo> Objectives 
The database of Objectives a player can reach in this OSM Adventure map. These Objectives can be reached in any order, or skipped entirely, as in a branching Objective system.
name IntroCutSceneTag 
The Tag of the Matinee (SceneManager) which should run as this adventure's intro cutscene.
float IntroCutSceneLength 
The length of time to let the intro cutscene run before starting the countdown to match start.
bool bPreventIntroInterrupt 
Allows the player to bypass the intro cutscene with a click. (fire)
name BeginPlayerStartTag 
The Tag of the TriggeredPlayerStart(s) that begin the adventure. (These should be the only TriggeredPlayerStarts bEnabled)
name DeathSceneTag 
The Tag of the Matinee (SceneManager) that is used as the DeathScene for this OSM Adventure map.
string DefaultCharacter 
The character profile to force on the player's Pawn. The player will control this character no matter when their current settings indicate.
string DefaultName 
The name to force on the player.
string DefaultEquipment[16] 
The equipment the player will always start with (each respawn). This string property expects to be formatted as <PackageName>.<InventoryName>, such as XWeapons.LinkGun.

Hidden

int CurrentObjective 
This is the value of the currently playing Objective. (-1 = introductory objective)
name CurrentPStartTag 
This is the Tag of the last TriggerPlayerStart(s) that were activated (or the BeginPlayerStarts).
int MatchTimeLimit 
This is the total time limit, as set by the player in the game config menu.
float MatchRemainingTime 
This is the total remaining time for the match.
float SaveTime 
This is a placeholder for MatchRemainingTime, used during per Objective timelimits.
bool bDeathScene 
Indicates the currently playing cutscene is a DeathScene.
AIScript NextScript 
Indentifies a ScriptedSequence that should be used to control the player Pawn.
class<Combo> LocalPlayerCombo 
Placeholder for an Adrenaline combo that was running when a cutscene started, used to restart the combo once the cutscene is done.
Pawn LocalPlayerPawn 
Placeholder for the local player's Pawn.

Operation, Rules & Tips

  • It's important to note that each of these properties the level designer can set are optional.
  • It is not necessary for Triggers that fire Objective AchieveEvents to be set to bTriggerOnceOnly. OSMObjectiveManager automatically spawns OSMObjectiveTriggers at the start of the match for each Objective for this purpose.
  • As long as the Objective cutscene is started by the OSMObjectiveManager, the player's Pawn will be controlled during the cutscene by the ScriptedSequence whose Tag matches the Matinee's (SceneManager) PlayerScriptTag property. (This corrects a small bug in the stock code that prevented this operation)
  • In order for the player's Pawn to be controlled by the appropriate ScriptedSequence identified by the Matinee (SceneManager), or for score or Adrenline to be awarded appropriately, the Objective's AchieveEvent must be Instigated by the player Pawn. For more on Trigger System Instigators, see Trigger Systems.
  • Player's who die during cutscenes are automatically revived after the cutscene is done.
  • While IntroCutScenes can be interrupted (if configured by the level designer), both intermediate Objective cutscenes and DeathScenes are not interruptable. Level designers are encouraged to keep these short and to the point for the sake of the player's patience.
  • If an IntroCutScne is interrupted the OSMGame actor fires a special Event meant to signal that the intro cutscene is over and the match is about to begin. This Event, "IntroInterrupted", is mean to help level designers clean up intro cutscene actors and move appropriate Movers to get ready for the start of the match.
  • While Match TimeLimits set by the player in the game config menu will time the entire adventure, including the time cutscenes take, Per-Objective TimeLimits as defined by the level designer in the OSMObjectiveManager do not count the time taken during cutscenes. Per-Objective TimeLimits begin after the cutscene is finished and end before the start of the next Objective's cutscene.
  • Adrenaline combos interrupted by cutscenes will be automatically continued after the cutscene ends.
  • If Adrenaline is not desired in this map, simply use a LevelGameRules actor set to the NoAdrenaline mutator.
  • DeathScenes are simply Matinees. If a DeathSceneTag matches a Matinee (SceneManager) Tag, that DeathScene will run whenever the player dies.
  • A DeathScene always centers on the player Pawn or the Pawn's last location if gibbed.
  • DeathScenes have their camera locked at a distance of about 256 UU automatically, so the DeathScene Matinee is simply used to provide camera angle motion.
  • DeathScenes are always in "BulletTime".
  • DeathScenes can utilize all Matinee features, including camera effects and camera overlays. A special bloody "You Died" texture is provided by this actor's Skins property. It is available under the OSMTex texture package for use as a stock DeathScene camera overlay.

External Links

Related Topics

Discussion