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
  • Setting up Redis Cloud
  • Setting up your Unreal Client

Was this helpful?

  1. APIs and Tooling
  2. Template Web App

Moderation

PreviousTemplate Web AppNextPixel Streaming

Last updated 1 day ago

Was this helpful?

The admin panel gives you access to an example moderator. Users with sufficient project permissions can access message history from worlds started from your organisation.

As well as viewing message history, you are able to handle muting and banning users directly via the moderation or user page. Messages that are flagged as potentially dangerous (checked against a modifiable list of banned profanity stored in live config) are highlighted in red on the application.

You are able to mute (prevent users from sending text chat in world), or ban (disconnect a user from the world and prevent them from connecting upon re-joining) via both the moderation page and the users page.

To use the moderation site you must set up the following:

  1. Set up an external database to store sent messages

  2. Configure your Unreal Project/deployment to send messages to your template application API.

Setting up Redis Cloud

You can choose to configure your Redis KVStore however you like. To use the default method for Redis client connection provided in the template application, follow the below steps to set up Redis:

  1. Create a new database via the Redis Cloud console.

  2. Once created, grab the following variables:

    1. Redis Username: this should be default

    2. Redis Password: obtained via the Security section of your database's configuration tab

    3. Redis Host: this is the public endpoint value (e.g. redis-17071.c335.europe-west2-1.gce.redns.redis-cloud.com - you will need to remove the :[number] at the end of the endpoint) found in the General section of your database's configuration tab

    4. Redis Port: set this to match the value after redis- in the endpoint above.

  3. If you have already spun up a deployment via Vercel, you will need to configure these as environment variables via your Vercel project's settings (Settings -> Environment Variables

Once set up, all messages sent via your game client will be stored in your Redis database. The template app allows you to configure various settings (such as the max messages to store per world, the time to live for each key stored in Redis, and the key prefix for message values). You can configure these in your app's @constants/config.ts file.

Setting up your Unreal Client

You can enable the sending of messages to your moderator application by modifying your Unreal project's live config.

In your project's game.override.json (you can find this under Config/LiveConfig/Overrides ), add the following:

 {
    "Inventory": {
		"HidePlaceMode": true,
        "Quickbar": {
			"GadgetTabSlots": 8,
			"EmoteTabSlots": 8,
            "UsingEquipmentTabs": true
		}
    },
    // --- ADD EVERYTHING BELOW HERE - THE SECTION ABOVE IS ALREADY IN THE FILE --- //
    "Moderation": {
      "ModerationSiteUrl": "[your-application-base-url]/api/"
    }
}

The url should either be http://localhost:3000/api if you want to test your application locally. Otherwise, you should use your Vercel site url (appended with /api at the end) if you've already deployed your application.

You should now see any messages that have been sent come through to your Moderator app! Messages that are potentially dangerous will be flagged in the Moderator.

For this example, and in the example application, we will use , a free database that allows you to store up to 30MB of data in their Key Value store.

Create an account by following the link:

đŸ’ģ
đŸ’ĸ
Redis Cloud
https://cloud.redis.io/
The users page, listing all players who have sent a message to your moderator