Skip to content
Engine

Help

Troubleshooting

Fixes for the messages Engine and the Engine plugin print, and for common problems with loading, configuration, data and the client.

Loading

The published engine could not be loaded

Engine: the published engine (asset ...) could not be loaded - Engine did not start
  AssetService:LoadAssetAsync failed 3x in ...: ...
    needs Game Settings > Security > Allow Loading Third Party Assets, unless the game's creator owns the asset
  ...

An automatically updating shell could not load the engine from Roblox. The report lists every method it tried and what each needs.

  1. Open Game Settings > Security and turn on Allow Loading Third Party Assets. Publish, then test again.
  2. In Studio, make sure you are logged in and online.
  3. If it still fails, open the Engine plugin and click Disable Auto-update. Manual updates carry the engine inside your place and never download it.

If the message says it is booting the local MainModule copy instead, Engine started from the copy inside the shell; the game works, but it is not on the newest version.

If it keeps failing, report it and paste the whole message.

Still loading the published engine after 10s

Roblox's asset delivery is slow. The shell keeps trying; nothing is wrong unless the failure report above follows.

This shell was inserted sandboxed

The shell is sandboxed and cannot load the engine. Select Engine under ServerScriptService, paste the command from the message into the Command Bar and press Enter. It turns sandboxing off for the shell, its descendants and its parents.

The shell only loads on the server

A LocalScript required ServerScriptService.Engine. On the client, require ReplicatedStorage.Engine.

The shell belongs in ServerScriptService

The Engine module is somewhere else, such as ReplicatedStorage or Workspace. That would replicate the whole engine, including server code, to every client. Move it back to ServerScriptService.

This shell is outdated

The engine needs a newer shell. In the plugin, switch update models or reinstall Engine. Your configuration is kept.

ReplicatedStorage.Engine never appears

The client copy is created when the server boots Engine. Check that:

  • ServerScriptService.Engine.Loader exists and is enabled.
  • The server Output shows no Engine error at start-up (see the messages above).
  • Your LocalScript uses WaitForChild("Engine").

Getting modules

Errors about Api after an update

Attempt to get DataService::Api (not a valid member)
attempt to call missing method 'Api' of table

The script was written for Engine 1.0.0, where GetService, GetSystem and GetPackage returned a handle and :Api() loaded the module. Since 1.1.0 they return the module itself, so the :Api() step no longer exists. Remove it: Engine:GetService("DataService"):Api() becomes Engine:GetService("DataService"). See Updating from 1.0.0.

Errors about a callback member

ShouldDeliverCallback is a callback member of TextChannel; you can only set the callback value, get is not available
OnServerInvoke is a callback member of RemoteFunction; you can only set the callback value, get is not available

Engine 1.1.0 and older read callbacks that Roblox only lets scripts set. The first message comes from Engine:GetSystem("ModerationSystem") in a game that uses TextChatService, the second from reading NetworkService.OnServerInvoke or NetworkService.OnClientInvoke. Both are fixed in Engine 1.1.1. With automatic updates, every server started since that release runs the fix. With manual updates, click Update to v1.1.1 in the plugin.

No service named "X" exists

The name is misspelled or wrong in case (DataService, not Dataservice). Check the sidebar of these docs for the exact names. Remember to use the right getter: GetService, GetSystem or GetPackage.

"X" is a client service / no client service named "X"

The module does not exist on this side. See Server and Client.

Attempt to get X::Y (not a valid member)

You read or assigned a member that the module does not have, usually a typo. Check the module's page for the right name.

Configuration

My settings have no effect

  • The configuration module must be named exactly after the module, and be inside ServerScriptService.Engine.Configuration (directly, or one folder deep).
  • General must be directly inside Configuration.
  • Settings are read once when the module loads. Stop and start the test after changing them.
  • A setting that is a table replaces the whole default table. See Configuration.

Configuration/X must return a table

The configuration module must end with return { ... }.

X override is disabled (AllowXOverride = false in Configuration)

Your configuration forbids passing that parameter in calls. Remove the argument from the call, or remove the Allow...Override setting.

Data

Data does not save in Studio

Turn on Game Settings > Security > Enable Studio Access to API Services. Without it, DataService uses a temporary in-memory store that is cleared after each test.

"The profile does not exist"

StartSessionAsync only creates new profiles with Create = true. See DataService.

Does not exist / is not a table

Engine: DataService Profile:Set - Stats does not exist
Engine: DataService Profile:Update - Coins is not a table
Engine: Patch - Stats does not exist

Since Engine 1.2.0, profile:Set and profile:Update on DataService profiles, and Patch.Set, no longer create missing tables on a path, and no longer replace a value on the path that is not a table. The message names the part of the path that is the problem, and nothing was changed. Create the table first, for example with profile:Set("Stats", {}), or add it to your profile store's template so profile:Reconcile() adds it to existing profiles. The last key of a path may still be new. See Updating from 1.1.1.

When the message names the ProfilePath of EconomySystem or InventorySystem, such as Economy is not a table, your own data holds a value where that system keeps its record. Move your value, or give the system another ProfilePath.

With automatic updates, every server started since the 1.2.0 release has this rule. With manual updates, it applies once you click Update to v1.2.0 in the plugin.

Granting receipts without a profile store

Engine: MonetizationService - granting receipts without a profile store; bind one (:BindProfileStore or ProfileStoreName) so a purchase can never be granted twice across servers

MonetizationService granted a developer product without a profile store, so it only remembers that purchase on this server. Since Engine 1.2.0 it no longer picks the first profile store a player session starts in. Call MonetizationService:BindProfileStore(PlayerData) with your player profile store before players join, or set ProfileStoreName in its configuration. Records already saved in that store are used again as soon as it is bound. See Where purchases are stored.

Plugin

MessageFix
Engine can only be installed or changed while editing, not during a playtest.Stop the playtest first.
Studio is recording another change right now.Wait a moment and try again.
Engine is already installed at ...Use the existing install, or uninstall it first.
Found N Engine installs in ServerScriptServiceRemove the extra copies. The plugin manages the first one listed.
Could not download Engine (asset ...)Roblox could not deliver the engine to Studio. Check your connection and try again later.

Still stuck?

Report the problem. Include the full Output message, whether you use automatic or manual updates, and the result of Engine:GetBootInfo() if Engine starts. For questions that are not about a problem, contact Arthonier through arthonier.com/contact.