LogoLogo
API Status
  • 👋Welcome
  • 🌐What is Morpheus Platform?
    • Interoperability
  • â„šī¸Help
    • 📗Glossary
    • 🆘Support
    • Firewall problems
    • EULA
  • CREATION
    • 🎮Unreal Development
      • ⚡Get Started
        • âš’ī¸Download the Editor
        • âĢUpload Content
        • 🌎Creating your own map
        • 📝Morpheus Base Project
        • ❓Differences from Unreal
          • 🧍Character Configuration
        • 📡Morpheus Networking
          • Introduction to Morpheus Networking
          • Network Levels
          • Replicated Properties
          • RPCs
          • Morpheus Render Targets
          • Morpheus Array
          • Networking FAQ
          • Replicating Sublevels
      • 📚Features & Guides
        • 📒Example Plugin
          • Nameplates
          • In-game roles
          • Resizing
        • 🏊Actor Pooling
        • 🔊Audio
        • 🎭Avatars
          • Creating an Avatar
          • Attachments
            • MML Attachments
          • Custom Animation Variables
          • Importing an NFT collection
          • Capsules and Mesh Transforms
        • 🤖Bots
        • đŸŽ™ī¸Chat
          • Unreal Text Chat
        • đŸŽ›ī¸Control Panels
          • Control Panel Configuration
          • DJ booth mission control
          • Observer Controls
        • 🔉Crowd Audio
        • đŸ¤ŧCrowd Rendering
          • Legacy Animated Crowd
            • Animated Crowd Console Commands
            • Attaching static meshes to crowd members
          • Crowd Materials
          • Performance Parameters
          • Live Config Settings
          • Crowd Animation
            • Crowd Anim Blueprint
              • User Guide - Crowd Anim Blueprint
              • Reference Guide - ABP Nodes
                • Animation Playback
                • States and State Machines
                • Variables
                • Transitions
                • Special
                • Blends
                • Additional Notes
        • 🍱Helpers & Extras
          • "Instanced Objects" in Blueprints
          • Objects with "world context"
          • Making DataAsset classes
          • Duplicate Objects
          • The Bootflow Subsystem
          • The "Wait For Condition" System
          • Advanced Graphics settings
          • Listening to inputs on UObjects
          • Morpheus UserID
          • World Services
          • M2Extras: Skins System
        • đŸ–Ĩī¸Loading Screen
        • ⚡Live Config
          • Editing for a World
          • Editing Locally
          • Default Settings
          • Accessing via Blueprint
          • Adding New Settings
          • Overriding Defaults
          • Using Arrays
        • 🧊MML
        • đŸ•ēMotion Capture
        • 📡Networking
        • đŸ“ĸNotifications
        • Raycastable Crowd
        • 🌐Singletons
        • 📱Streaming & Multiplatform
          • GFN on mobile
        • đŸ–Ĩī¸UI
          • "UI Mode"
        • đŸ—ƒī¸User Collections
          • Creating a New Object Definition
          • Accessing from Unreal
            • Creating Objects Definitions
            • Transfer Objects
            • User Collection Views
            • Receiving Updates
        • đŸ“ēVideo Players
          • Embedded Video Player
          • Millicast video streaming
            • How to Setup an In-Game Video Stream
            • Picture-in-Picture mode
          • Streaming Video Player
            • How to Setup a URL Video Player
            • Picture-in-Picture mode
        • 🐞Visual Debugging
          • Inspector
        • đŸĒŸWeb UI
        • Online Services
          • KV Store Service
        • 💠Web Requests
          • Http Requests
            • Legacy HTTP Nodes
          • JSON Handling
          • WebSockets
          • Identity Validation
          • Allowed External URLs
          • Walkthrough Example
            • Example Counter Service
        • âœˆī¸World Travel
          • World Travel in the editor
        • Avatar Physics Assets
        • Action Gameplay Helper Components
      • 🔑Workflows
        • â†—ī¸Upgrade the Editor
          • đŸ–Ĩī¸Version History
        • âš™ī¸Editing Project Settings
        • 📈Profiling
        • đŸ§ēMarketplace Importing
        • đŸ› ī¸Extra Workflows
          • Setup Play-in-Editor
          • Setup Local Asset Validation
          • Adding Gameplay Tags
          • Validating Game Assets
          • Custom Connection Modes
          • Connect Editor to a World
          • Common Issues
      • 📚Useful Reading
        • ⭐Best Practices
    • 🌎Worlds
      • 📩Invite Players
        • Setting Role Groups
      • Persistent Worlds
      • Always on Worlds
    • 📅Running events
      • ✅Large scale events - Checklist
      • 👾Anti-Cheat (EAC)
      • 🎮Player Entry
        • 📱React Native
        • Steam
        • đŸ’ģHardware Reqs
      • đŸŽĨBroadcast
        • 📹OBS Integration
      • Failover
      • 🏁Capacity And Queue Management
  • ADMINS
    • đŸ‘ĒAccess Control
      • Adding metaverse contributors
      • Creating a new project
    • 💲Pricing
      • Development Support
      • Included Usage & Overages
      • Cloud Streaming
      • Access Modes
      • War Room Support
      • Platform SLA
    • âš™ī¸Settings
      • đŸ—ƒī¸Projects
  • APIs and Tooling
    • đŸ–Ĩī¸API Reference
      • Accounts
      • Events
      • Key/Value Store
      • Organizations
      • Realtime
      • User Profile
      • World Builder
      • Worlds
    • đŸ’ģTemplate Web App
      • đŸ’ĸModeration
    • Pixel Streaming
    • 🚀Launcher
  • Integrations
    • 📊Analytics
      • Sending events from web
      • 🎮Sending Events from Unreal
    • đŸ’ŦChat
      • 🎮Integrating Pubnub with your Unreal Project
      • Adding Moderation to Chat
Powered by GitBook
On this page
  • Overview
  • Features
  • View the entites in the deployment
  • Select a player
  • Kick Player
  • Hide Actor
  • Delete Actor
  • Force Foreground
  • Network related options
  • Rendering related options
  • How to open the inspector
  • Determining who can access the inspector
  • Extending the inspector

Was this helpful?

  1. CREATION
  2. Unreal Development
  3. Features & Guides
  4. Visual Debugging

Inspector

How to use the Morpheus Admin Inspector

PreviousVisual DebuggingNextWeb UI

Last updated 1 month ago

Was this helpful?

NOTE: This page contains features that were added for release version v29. Some functionality described here won't be present in earlier versions.

Overview

The Morpheus Inspector is a tool that can be used in editor and live deployments, for debugging and moderation purposes. It has features such as being able to:

  • Hide and delete entities at runtime

  • Kick players

  • Test out/debug behaviors at scale, by viewing and modifying the network and rendering lod levels of entities at runtime

Features

View the entites in the deployment

In the top right of the UI, we have the list of entities currently in the deployment.

Actors in the actor list are optionally sorted by distance, and nearby actors will be clickable to select them in the entity list. Note the filter for different actor types in the top right.

Select a player

When you select a player, either via the list, or by clicking on them (if they are in the First Rendering LOD), it will highlight them with an orange box, and give you additional details about them, such as their network level and name. It will also give you further actions you can do to the specific player.

NOTE: If you are using Avatars, they will need to have physics assets configured (blocking the Shootable query channel), to be clickable. For more details on how to do this, see Avatar Physics Assets.

Kick Player

This will disconnect the owner of the actor you have selected.

OnKickPlayer on the MorpheusInspectorAdmin is triggered when this is done, so a project could bind to this event to e.g. add logic to ban users that are kicked in this way.

Hide Actor

This makes the actor hidden for all other clients (they will be unaffected on their own machine). You can do this if they are being a niusance, and getting in the way of things!

Delete Actor

This will destroy the actor on the server. This will delete it for all clients.

Doing this for player characters could lead to strange behaviour. If you're wanting to remove players, better to use Kick

Force Foreground

A local only control, for debugging purposes.

Forces the actor into the network foreground. This can be used to demo actors switching in and out of the network foreground

Network related options

Has the following:

  • Max Entities In Foreground: Displays the current max entities in the network foreground. You can modify this text box to modify the number on your local machine

  • Max Entities In Midground: Displays the current max entities in the network midground. You can modify this text box to modify the number on your local machine

NOTE: The number in the midground includes all the number in the foreground. Therefore, Max Entities In Midground must be >= Max Entities In Foreground. If you want 3 foreground entities, and 3 explicitly midground entities, you would want Max Entities In Midground to be 6.

For more info on these, see Network Levels

Rendering related options

Has the following:

  • Total Entities in LOD0: Shows the number of entities currently in the deployment in the first rendering LOD (those with real actors)

  • Total Entities in LOD1: Shows the number of entities currently in the deployment in the second rendering LOD (those represented by the animated crowd)

  • Max Entities in LOD0: Displays the current max entities in the first rendering LOD. You can modify this text box to modify the number on your local machine.

  • Highlight crowd members: If you tick this box, animated crowd members will be highlighted with translucent boxes, to make determining who are crowd members easier. This is the same as using the AnimatedCrowd.Debug.DrawBoxes 1 console command from Animated Crowd Console Commands.

  • Randomize LODs every [X]s: If this is ticked, instead of using your camera's location to determine the rendering LODs, we randomize them every [X] seconds on your local machine. This can be used to make all the characters randomly shift their priorities, and so switch between LOD levels. You can use this to observe how characters behave when changing LOD levels (this can be useful for e.g. debugging Actor Pooling related issues)

For more info on the rendering LOD levels, see Crowd Rendering

How to open the inspector

By default, the Inspector can be only opened with the command Morpheus.Inspector.Admin.

Note that as the Inspector is only accessible via a console command, you'll only be able to access it from a non-Shipping client. This doesn't mean that hacked Shipping clients won't be able to run this command though!

Determining who can access the inspector

The server determines which players have permissions to open the Inspector. The default Inspector only allows permissions for users with the Director role (or any role/character with the Capabilities.Morpheus.InspectorEnabled capability) to open the Inspector.

Extending the inspector

To change the permissions for who can access the Inspector, or to extend its functionality, you will need to create an Inspector singleton class that extends from Morpheus Inspector Admin Singleton and set it as the Inspector Admin Singleton Class in your project's world settings.

This singleton class implements CanEnterAdmin, which determines which players can access the Inspector panel, and has the Admin Class field which determines which admin panel actor is spawned. The admin panel actor is the actor that determines the behaviour of the Inspector.

Use Inspector As Origin: By default, our own morpheus actor remains the "origin" for network prioritization. If you want to instead make the inspector fly cam be the "origin", check the box. For more details on this, see

To expose the ability to access the Inspector without a console command, in your project you can call RequestEnterAdmin and ExitAdmin from the client MorpheusInspectorAdminSingleton .

🎮
📚
🐞
singleton
Modifying the "client origin" for network prioritization
The Inspector Admin panel. Once enabled, your local user will become a fly cam, and you can observe and interact with the entities in the world.
Opening the Inspector from a client-side BP function
BPM_M2_DirectorAdminInspectorSingleton is the default class, whose CanEnterAdmin logic determines that only users with the Director role can open the admin panel.
The default Admin Class is BPM_M2_InspectorAdmin. View this class for examples for how to extend the behaviour of the admin panel. This example writes the player's user ID to the server logs and displays the user's profile name in the widget when the user is selected, and prints the user id of any player that is kicked.