Message channels
Every channel the Pulse plugins broadcast on the message bus: its payload, where it is broadcast, what its context holds and what the amount means. The list comes from the channel register; Pulse.Messages.List prints the channels of the plugins enabled in your project (Console).
Reading the tables
- Origin:
Servermessages are broadcast on the server and in standalone,Clientmessages on the machine of a local player. WithBothevery machine broadcasts its own; the section says which machines. - Context: each section names the fields its plugin fills; Notes add what differs per channel. Fields that are not named stay empty.
- Amount: what
Amountof the context holds. A channel without an amount of its own carries 1, so a message trigger that adds up values counts its messages. - An actor of a player is a pawn or controller with a player state, or a player state.
Pulse Foundation
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Settings.Changed | FPulseSettingChangedMessage | Client | 1 | A player setting was written. Player: the controller of the local player; Tags: the setting. |
Pulse.Message.Save.Started | FPulseSaveStatusMessage | Both | 1 | A save started (reported by the save system through UPulseSaveStatusSubsystem). Slot in the payload. |
Pulse.Message.Save.Phase | FPulseSaveStatusMessage | Both | 1 | A save reached a phase (Collect, Write). |
Pulse.Message.Save.Finished | FPulseSaveStatusMessage | Both | 1 | A save finished; bSuccess, Seconds. |
Pulse.Message.Save.LoadStarted | FPulseSaveStatusMessage | Both | 1 | The game started loading (first hold of the load barrier). |
Pulse.Message.Save.LoadFinished | FPulseSaveStatusMessage | Both | 1 | The game finished loading (last hold ended); bSuccess, Seconds. |
Pulse.Message.Area.Entered | FPulseAreaMessage (area id, area, tags) | Both | 1 | A player entered a Pulse area with events: on the server for every player, with Events Everywhere also on the machine of a local player. Player and Instigator: the pawn; Target: the actor of the area; Source: the area; Tags: its tags. |
Pulse.Message.Area.Left | FPulseAreaMessage (area id, area, tags) | Both | 1 | A player left a Pulse area with events, or the area went (sent after it is removed). Context as Entered. |
Pulse.Message.Request.Failed | FPulseRequestFailedMessage | Client | 1 | A request of a local player failed on the server or got no answer. Player: the controller of the local player; Tags: the reason. |
Pulse.Message.Loading.HoldChanged | FPulseLoadingHoldMessage (change, hold, hold count, overall progress, text) | Both | 1 | A loading hold of this machine was added, changed its progress (steps of 1 %) or text, or was removed. No actors in the context. |
Pulse.Message.Clock.Jumped | FPulseClockMessage | Both | Seconds jumped | The time of a clock jumped: the game time was set or loaded, or the server time of a client caught up. Every machine broadcasts its own. |
Pulse.Message.Clock.Paused | FPulseClockMessage | Both | 1 | The game clock stopped, on every machine. |
Pulse.Message.Clock.Resumed | FPulseClockMessage | Both | 1 | The game clock runs again, on every machine. |
Pulse.Message.Clock.RateChanged | FPulseClockMessage | Both | The new rate | The rate of the game clock changed, on every machine. |
Pulse Core
Interaction
Sent wherever the interaction ability runs: on the local player, and on the server as well for replicated interaction. Context: the interactor (the avatar of the ability, usually the pawn) is Player and Instigator, the actor interacted with is Target, the interactable component (else the actor) is Source, the tags of the interactable (GetInteractableTags, InteractableTags on the interactable components) are the Tags.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Interact.Started | FPulseInteractMessage | Both | 1 | An interaction started. |
Pulse.Message.Interact.Completed | FPulseInteractMessage | Both | 1 | An interaction took effect. |
Pulse.Message.Interact.Ended | FPulseInteractMessage | Both | 1 | An interaction ended, completed or cancelled. |
Combat
Sent on the server, and on every machine while the combat component has bReplicateDamageEvents (default). Context: the combatant is Target, the attacker, healer or killer Instigator; Player is the instigator when it is an actor of a player, else the target when it is one.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Combat.Damaged | FPulseCombatMessage | Both | Damage | Tags: the damage type. |
Pulse.Message.Combat.Healed | FPulseCombatMessage | Both | Healing | |
Pulse.Message.Combat.Died | FPulseCombatMessage | Both | 1 | Instigator: the killer. |
Pulse.Message.Combat.Revived | FPulseCombatMessage | Both | 1 | No instigator. |
Crafting
Context: the owner of the crafting component is Player and Instigator, the owner of the station Target (none without a station), the recipe Source.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Crafting.Queued | FPulseCraftingMessage | Server | Rounds queued | |
Pulse.Message.Crafting.Crafted | FPulseCraftingMessage | Server | 1 | One round crafted and handed out. |
Pulse.Message.Crafting.Completed | FPulseCraftingMessage | Server | Rounds of the job | The job finished all its rounds. |
Pulse.Message.Crafting.Cancelled | FPulseCraftingMessage | Server | Rounds left | |
Pulse.Message.Crafting.RecipeUnlocked | FPulseCraftingMessage | Server | 1 | No target. |
Gathering
Context: the harvester is Player and Instigator, the resource node Target, its definition Source, the resource tags of the definition (Pulse.Gathering.Resource.*) the Tags.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Gathering.Harvested | FPulseHarvestMessage | Server | Items given | Source in the payload: interaction, hit or other. |
Respawn
Context: the player’s controller is Player; the target is the pawn (respawned) or the death bag (dropped).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Respawn.Respawned | FPulseRespawnedMessage | Server | 1 | Point id, place, and whether the player chose the point or the rule picked it. |
Pulse.Message.Respawn.BagDropped | FPulseDeathBagMessage | Server | Stacks in the bag | The bag, its owner (player id), team rights and expiry. |
Inventory, equipment and item use
Inventory and equipment messages are sent on the authority and on clients that replicate the component. Context: the owner of the inventory is Target (and Player when it is an actor of a player), the item definition Source, its tags the Tags.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Inventory.ItemAdded | FPulseInventoryItemMessage | Both | How many | A new stack counts its stack (also on clients); items added to a stack count only on the authority. |
Pulse.Message.Inventory.ItemRemoved | FPulseInventoryItemMessage | Both | How many | A whole stack counts its stack (also on clients); a part of a stack only on the authority. |
Pulse.Message.Inventory.ItemChanged | FPulseInventoryItemMessage | Both | Stack count | Count, place or traits of a stack changed. |
Pulse.Message.Inventory.ItemDropped | FPulseInventoryItemMessage | Server | Items dropped | The pickup is in the payload. |
Pulse.Message.Inventory.Equipment.Equipped | FPulseEquipmentMessage | Both | Stack count | Context of the equipped item. |
Pulse.Message.Inventory.Equipment.Unequipped | FPulseEquipmentMessage | Both | Stack count | |
Pulse.Message.Inventory.Equipment.ActiveSlotChanged | FPulseEquipmentMessage | Both | Stack count | Context of the new active item; an empty slot has no source and no tags (amount 1). |
Pulse.Message.Inventory.ItemUsed | FPulseItemUsedMessage | Server | 1 | A use completed. Player and Instigator: the owner of the item user component. |
Frontend
Context: the controller of the first local player is Player. Both channels are sent on the machine of the player (module PulseFrontend, only with the frontend turned on).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Frontend.PhaseChanged | FPulseFrontendPhaseMessage | Client | 1 | From and to: boot, splash, title, menu, loading, in game. |
Pulse.Message.Frontend.EntrySelected | FPulseFrontendEntryMessage | Client | 1 | Entry id and menu (main or pause), before the action of the entry runs. |
Map
Context: the controller of the local player is Player, the map Source. Sent on the machine of the player (module PulseMapUI).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Map.Opened | FPulseMapMessage | Client | 1 | The world map opened. Map in the payload. |
Pulse.Message.Map.Closed | FPulseMapMessage | Client | 1 | The world map closed. |
Ping
Context: the sender’s controller is Player, the pinged actor the Target, the ping type in Tags (module PulsePing).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Ping.Sent | FPulsePing | Server | Receivers | Sender id and name, team, type, place and end on the server clock; sent after the rate limit and the team filter. |
Locks
Context: who did it is Player and Instigator (empty for a script or a door that closed by itself), the door’s actor the Target, the door component the Source, the action in Tags (Pulse.Locks.Action.*; module PulseLocks).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Locks.DoorChanged | FPulseDoorMessage | Server | 1 | A door was opened, closed, locked, unlocked or picked; door, instigator, action and the state afterwards. |
Pulse Quest
Sent on the authority and on the owning client of the quest manager. Context: the quest is Source and its tag in Tags; Player is the player of the host when it has exactly one (a player’s quest manager, a shared quest host with one player).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Quest.Started | FPulseQuestMessage | Both | 1 | Also when a quest is restored from a save game. |
Pulse.Message.Quest.Finished | FPulseQuestMessage | Both | 1 | Succeeded, failed or stopped (Result). |
Pulse.Message.Quest.ObjectiveFinished | FPulseQuestObjectiveMessage | Both | 1 | bSucceeded in the payload. |
Pulse Dialog
Context: the controller of the initiator is Player, its pawn (else the controller) Instigator, the main speaker Target, the dialog Source with its tag in Tags, and FPulseDialogContextExtra (session, dialog) the Extra.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Dialog.Started | FPulseDialogMessage | Server | 1 | A dialog or cutscene started. |
Pulse.Message.Dialog.Finished | FPulseDialogMessage | Server | 1 | Result in the payload. |
Pulse.Message.Dialog.ChoiceSelected | FPulseDialogMessage | Server | 1 | Tags also hold the choice. |
Pulse Skill
Sent on the authority and on clients that replicate the skill component. Context: the owner of the skill component is Player.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Skill.RankChanged | FPulseSkillRankChangedMessage | Both | New rank | Source: the skill, Tags: its tag. Unlocked, refunded, reset, set or loaded. |
Pulse.Message.Skill.PointsChanged | FPulseSkillPointsChangedMessage | Both | Available points | Tags: the point pool. |
Pulse.Message.Skill.LevelChanged | FPulseSkillLevelChangedMessage | Both | New level | Source: the progression, Tags: its tag. |
Pulse.Message.Skill.ExperienceGained | FPulseSkillExperienceGainedMessage | Both | Experience gained | Only added experience (not loaded or set); on the authority and the owning client. Source: the progression, Tags: its tag and the source of the experience. |
Pulse Achievement
Sent on the authority and on clients that replicate the achievement component. Context: the owner of the component is Target (a player state, or the world actor of world achievements); Player is that player state, else the player state of the instigator; Instigator is the pawn of the instigator, else its player state (not on clients).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Achievement.Unlocked | FPulseAchievementUnlockedMessage | Both | 1 | Source: the achievement, Tags: its tag. |
Pulse.Message.Achievement.StatChanged | FPulseAchievementStatChangedMessage | Both | Change of the stat | Tags: the stat. 0 on clients. |
Pulse Online
Context: Player is the player the message is about: the controller of a local user, else the player state with the net id while that player is in the world.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Online.RequestCompleted | FPulseOnlineRequestMessage | Both | 1 | Where the request ran. Player: the controller it acts for (may be empty); Source: the request. |
Pulse.Message.Online.User.LoginStateChanged | FPulseOnlineUserLoginMessage | Client | 1 | Source: the user. |
Pulse.Message.Online.PlayerPartyChanged | FPulseOnlinePlayerPartyMessage | Both | 1 | Party id or leader flag of a player in a game session. On the server for every player, on a client for its own player. Player: the player state. |
Pulse.Message.Online.Chat.Received | FPulseOnlineChatReceivedMessage | Client | 1 | Player: the first local controller; Instigator: the sender while it is in the world. |
Pulse.Message.Online.Commerce.EntitlementsChanged | FPulseOnlineCommerceMessage | Client | Entitlements | |
Pulse.Message.Online.Commerce.Purchased | FPulseOnlineCommerceMessage | Client | Items bought | Only successful purchases. Source: the purchase request. |
Pulse.Message.Online.RatingChanged | FPulseOnlineRatingChangedMessage | Server | Change of the ordinal | Source: the queue, Tags: its tag. |
Pulse.Message.Online.Matchmaking.StateChanged | FPulseOnlineMatchmakingMessage | Client | 1 | Source: the ticket, Tags: the queue. |
Pulse.Message.Online.Safety.BlockListChanged | none | Client | 1 | Player: the first local controller. |
Pulse.Message.Online.Safety.PlayerReported | FPulseOnlinePlayerReportMessage | Client | 1 | Target: the reported player while it is in the world. |
Pulse.Message.Online.Server.Message | FPulseOnlineServerMessagePayload | Client | 1 | Message of the day, admin message, command result, kick notice. Player: the first local controller. |
Pulse.Message.Online.Connection.Changed | FPulseOnlineConnectionMessage | Client | 1 | Only when the state changes. Player: the first local controller. |
Pulse.Message.Online.Stats.Updated | FPulseOnlineStatsMessage | Both | Stats in the update | Where the stats were read or written (bWritten). |
Pulse Water
Sent on the authority. Context: the actor the message is about is Target (and Player when it is an actor of a player), the liquid at it is Source with its tags in Tags, its location the Location.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Water.EnteredWater | FPulseWaterContactMessage | Server | Speed in cm/s | A floating object came into the water. |
Pulse.Message.Water.LeftWater | FPulseWaterContactMessage | Server | Speed in cm/s | No liquid. |
Pulse.Message.Water.Submerged | FPulseWaterContactMessage | Server | Speed in cm/s | Completely under the surface. |
Pulse.Message.Water.Surfaced | FPulseWaterContactMessage | Server | Speed in cm/s | Back up. |
Pulse.Message.Water.BoatWrecked | FPulseWaterBoatMessage | Server | 1 | Instigator: who caused the last damage; Player: the instigator when it is an actor of a player, else the boat when a player possesses it. No liquid. |
Pulse.Message.Water.BoatSunk | FPulseWaterBoatMessage | Server | 1 | Like BoatWrecked. |
Pulse.Message.Water.WaveEvent | FPulseWaterWaveMessage | Server | Height of the crests in cm | Only Location: the origin of the ring. |
Pulse.Message.Water.StartedSwimming | FPulseWaterSwimMessage | Server | 1 | |
Pulse.Message.Water.StoppedSwimming | FPulseWaterSwimMessage | Server | 1 | |
Pulse.Message.Water.HeadUnderWater | FPulseWaterSwimMessage | Server | 1 | |
Pulse.Message.Water.HeadAboveWater | FPulseWaterSwimMessage | Server | Seconds under water |
Pulse AI
Sent while bBroadcastMessages is on (Project Settings > Pulse > AI, default on). Context: the pawn of the agent is Instigator, the actor it reacts to Target (and Player when it is an actor of a player), its profile Source, its team in Tags, its location the Location.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.AI.AwarenessChanged | FPulseAIAwarenessMessage | Server | New level | 0 unaware, 1 suspicious, 2 alert, 3 combat. Target: the strongest perceived actor. |
Pulse.Message.AI.Alarm | FPulseAIAlarmMessage | Server | Allies that heard it | Target: the target of the alarm; Location: where it was raised. |
The encounters of the bridge Pulse AI Combat Bridge (PulseAICombatBridge): the encounter is Target with its EncounterId in Tags, its location the Location; no player, instigator or source. The amount is the number of waves started.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.AI.Encounter.Started | FPulseAIEncounterMessage | Server | 0 | Sent after wave 0 spawned (a player came close, or Start Encounter). |
Pulse.Message.AI.Encounter.Wave | FPulseAIEncounterMessage | Server | Number of the wave | Sent after the wave spawned; counted from 1. |
Pulse.Message.AI.Encounter.Cleared | FPulseAIEncounterMessage | Server | Waves started | Sent when every agent of the last wave is dead or gone. |
Pulse.Message.AI.Encounter.Reset | FPulseAIEncounterMessage | Server | 0 | Sent when all players went far away, the respawn time after clearing ran out, Reset Encounter was called, or a load ended a running fight. |
Pulse Build
Context: the actor that did it is Instigator (and Player when it is an actor of a player), the piece definition Source, the tags of the definition, of its tier and its category Tags, the location of the piece Location, the actor of the piece (else its cluster) Target.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Build.Placed | FPulseBuildMessage | Server | 1 | Instigator: the builder. |
Pulse.Message.Build.Changed | FPulseBuildMessage | Server | 1 | Moved, upgraded, damaged, repaired or finished; comes before those messages. |
Pulse.Message.Build.Completed | FPulseBuildMessage | Server | 1 | A construction site or an upgrade was finished. |
Pulse.Message.Build.Upgraded | FPulseBuildMessage | Server | New tier | Only when the tier rises. |
Pulse.Message.Build.Damaged | FPulseBuildMessage | Server | Damage | Not for the hit that destroys the piece. |
Pulse.Message.Build.Repaired | FPulseBuildMessage | Server | Health restored | |
Pulse.Message.Build.Destroyed | FPulseBuildMessage | Server | 1 | By damage or decay; comes after Removed. Target: as for Removed. |
Pulse.Message.Build.Removed | FPulseBuildMessage | Server | 1 | Target: the cluster that held the piece (none for actor pieces). |
Pulse.Message.Build.Collapsed | FPulseBuildCollapseMessage | Server | Pieces collapsed | Module PulseBuildIntegrity. Source: the definition all pieces share (else none), Tags: those of all pieces, Location: their middle, no target. |
Pulse Time
Sent on every machine: each computes the same clock. No player in the context.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Time.HourChanged | FPulseTimeHourChangedMessage | Both | The hour, 0 to 23 | Also once after the clock was set, skipped or loaded. |
Pulse.Message.Time.DayChanged | FPulseTimeDayChangedMessage | Both | Days since the first day, 1 for the first | |
Pulse.Message.Time.SeasonChanged | FPulseTimeSeasonChangedMessage | Both | 1 | Tags: the new season. |
Pulse.Message.Time.WeatherChanged | FPulseTimeWeatherChangedMessage | Both | 1 | Source: the weather state, Tags: its tag. |
Pulse.Message.Time.Scheduled | FPulseTimeScheduledMessage | Both | 1 | Tags: the event. Daily events on every machine (bServerOnly: server), events of ScheduleAt on the server. |
Pulse Faction
Player: the actor with the faction component when it is a player (else it is the target), Source: the faction definition, Tags: the faction tag.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Faction.ReputationChanged | FPulseFactionReputationChangedMessage | Server | The change | Only within the limits; a reward passes its context on. |
Pulse.Message.Faction.RankChanged | FPulseFactionRankChangedMessage | Server | The new rank index | After ReputationChanged; bUp for a higher rank. |
Pulse.Message.Faction.Joined | FPulseFactionMembershipMessage | Server | 1 | Players and NPCs (Start Factions too). |
Pulse.Message.Faction.Left | FPulseFactionMembershipMessage | Server | 1 | Also when loading drops a membership. |
Pulse.Message.Faction.RelationChanged | FPulseFactionRelationChangedMessage | Server | 1 | Tags: both factions. No player. |
Pulse Codex
Player: the player state with the codex component, Source: the entry asset, Tags: the entry tag and its category.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Codex.Unlocked | FPulseCodexEntryMessage | Server | 1 | Through the API, a trigger, a discovery volume or a cheat; a trigger passes the context of its message on. Not for entries unlocked from the start. |
Pulse.Message.Codex.Read | FPulseCodexEntryMessage | Server | 1 | The first time the player opens the entry. |
Pulse Sound
Player: the pawn of the first local player (its controller without a pawn), Target: the zone, Source: the profile, Tags: the bed.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Sound.AmbienceChanged | FPulseSoundAmbienceMessage | Client | 1 | The listener of the first local player is in another zone, or its zone plays another bed. Zone and bed empty outside every zone. |
Pulse.Sound.Example.Event.ButtonPressed | none | Server | 1 | Only the example map: a player stepped on the bell button. Player and Instigator: the pawn, Target: the button. |
Pulse World
Sent on the machine where the chunk changed: every machine loads its own chunks. Target: the chunk actor (empty for backends without actors), Source: the world definition, Location: the center of the chunk on the ground. No player in the context.
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.World.ChunkLoaded | FPulseWorldChunkMessage | Both | 1 | A chunk became active, also when it woke from sleep. Off with bSendChunkMessages. |
Pulse.Message.World.ChunkUnloaded | FPulseWorldChunkMessage | Both | 1 | A chunk fell asleep or was removed. |
Pulse Survival
Add-on of Pulse Core. Player and Target: the pawn with the survival component, Tags: the stat (Pulse.Survival.Stat.*) and the new band (Pulse.Survival.Threshold.*).
| Channel | Payload | Origin | Amount | Notes |
|---|---|---|---|---|
Pulse.Message.Survival.ThresholdChanged | FPulseSurvivalThresholdMessage | Server | Value of the stat | A stat (hunger, thirst) entered another band or left every band (new band empty). The payload has the old band and the maximum. |
Your own channels
Register your channels the same way (Pulse::Messages::RegisterChannel, see Channel register), fill the context with what you know and give single events the amount 1. Two senders of Pulse Foundation send any channel: the cheat PulseMessageSend <Channel> (empty payload and context) and the relay component, which passes on what it is given.