PulseFoundation

PulseFoundation is the free base plugin of the Pulse plugins. Every Pulse plugin depends on it, and it is the only Pulse plugin they may depend on. It holds the code all plugins share, so the plugins work together without knowing each other, and it gives every plugin the same debugging tools.

You can also use it in your own game code: the message bus, the player settings registry and the debug tools work for game code the same way they work for the plugins.

Documentation map

New to Pulse? The Learn lessons build something small in your own project, step by step.

  1. Getting started: enable the plugin, first message, first player setting
  2. Fab packages and separate plugins: the two ways Pulse Foundation comes into a project, one copy per project, the suggestion of Pulse HUB
  3. Message bus: send and receive messages between plugins and game code
  4. Message channels: every channel of the Pulse plugins with payload, origin, context and amount
  5. Player resolution: find the controller, pawn, player state and components of a player
  6. Conditions and context: condition lists with All, Any and Unknown, conditions in C++ and Blueprint, costs paid all or nothing with rounding over the whole, rewards, and the context they share with messages
  7. Results of requests: one result type for every plugin (reason tag, text, details) and the way back to the client that asked
  8. Exchanges: trades, crafting and purchases all or nothing across players and plugins, undone when one step fails
  9. Areas: boxes, spheres and spline areas with tags, priority and edge weight; which areas are at a place, players entering and leaving
  10. Teams: the team of any actor (interface, team component, the player’s team from its pawn), same team, setting teams on the authority
  11. Serialization: versioned bytes for save data, import reports
  12. Saving while the game runs: save and load status for every plugin, the load barrier, rules for consistent saves
  13. Player settings: register settings that any settings menu shows
  14. Accessibility: color vision, text size, interface size, less motion, toggle instead of hold
  15. UI themes: one look for all Pulse widgets, style roles, Pulse Style component, UI motion, key icons
  16. Sounds: one reference to a sound asset or a Pulse Sound event, played 2D, at a location or attached
  17. Clocks: game, server and real time, points in time and timers that survive pauses, loading and streaming
  18. Debugging: reports, timeline, snapshots, gameplay debugger, Pulse Debugger window, cheats
  19. Console: console commands, cheats and log categories
  20. Utilities: handles, instanced struct sets, async loading, settings base class, test helpers
  21. Editor kit: asset editors with validation and notes, graph editors with cards, comments and auto layout
  22. Pulse workflow: every plugin in the same four steps, Set Up, Create, Test, Check
  23. Project settings
  24. Config files: save Project Settings to platform files and custom configs, see a setting’s value in every file
  25. API reference
  26. Pulse helpers API reference (module PulseGameCore)
  27. Using PulseFoundation in a Pulse plugin
  28. Examples: message bus, player settings and UI theme in a small Blueprint scene
  29. Learning paths: lessons for your plugin, the checks and actions of their steps, keeping them working

At a glance

  1. Enable Pulse Foundation (other Pulse plugins enable it for you).
  2. Send a message: UPulseMessageSubsystem::Get(this)->Broadcast(Channel, Payload), receive it with the Blueprint node Listen For Pulse Message.
  3. Give your game or plugin player settings: derive from UPulsePlayerSettings, declare the properties, and every settings menu built on UMVVMPulseSettings shows them.
  4. Give widgets a look from the UI theme: add the UI component Pulse Style and pick a role (Pulse.UI.Text.Body, Pulse.UI.Panel.Popup, …); change the theme in Project Settings > Pulse > Foundation > UI.
  5. Open Tools > Debug > Pulse Debugger while playing in the editor to see an overview of problems, reports, live state (server and client side by side) and the event timeline of all Pulse plugins.

Modules

Module Type Content
PulseGameCore Runtime Helper libraries, async trace, input helpers (moved from PulseCore, names unchanged)
PulseFoundation Runtime Message bus, player resolution, serialization, player settings registry, handles, loading, reports, timeline, snapshots, cheats, test helpers
PulseFoundationMVVM Runtime View model base bound to a player, resolver, settings view models
PulseFoundationUI Runtime UI themes, style roles, Pulse Style component, theme per player, UI motion (CommonUI)
PulseFoundationDebug Runtime Gameplay debugger categories for snapshots (only in builds with gameplay debugger)
PulseFoundationEditor Editor Pulse Debugger window and the building blocks for plugin pages, editor kit for asset and graph editors

Compatibility

PulseFoundation follows semantic versioning. Minor versions only add API; removed or changed API is deprecated with UE_DEPRECATED for at least one minor version before a major version removes it. Plugins check the version with PULSE_FOUNDATION_VERSION_AT_LEAST(Major, Minor) and name their minimum version in their README.


PulseFoundation plugin documentation.

This site uses Just the Docs, a documentation theme for Jekyll.