InputImageLibrary broke


Is it just me or did the InputImageLibrary break? When I try to use this LocalScript code from the tutorial:

local ModuleAsset = game:GetService('InsertService'):LoadAsset(408470686)
local InputImageLibrary = require(ModuleAsset.MainModule)

in a LocalScript, it creates this error:

exception while signaling: InsertService cannot be used to load assets from the client

And when I try to use the Server script code in a LocalScript, which is:

local InputImageLibrary = require(408470686)

It creates this error:

require(assetId) cannot be called from a client

It seems that I cannot use this library on the client at all anymore due to InsertService being server only now, but I know from playing Roblox Dodgeball with a controller that it still works. After all, you would want to load Gamepad images on the client, not the server. Is there something I’m doing wrong, or does this need to get fixed? Maybe this is only in Studio, and that’s why Roblox Dodgeball still works with a controller, not sure what’s going on. Thanks!

I believe it’s best that you have a local copy of the ImageInputLibrary ModuleScript. InsertService can be unreliable, especially if the asset you want to load is not yours.

The issue is probably because you are testing this stuff in studio using play solo, correct?

Play solo effectively merges client & server (designating itself as a client) - try testing on a local server or an actual live place instead.

It’s the opposite - works fine play solo, not in server.

That seems to have solved the issue for me, thanks! But this issue still should get fixed so the wiki tutorial works.

Edit: I also realized that the wiki code would be better if it worked because it would auto update the API, a good reason to get this fixed.

Why are the two different code examples you provided different?
And you shouldn’t be using them from the client, you should be using them from the server

Idk I might not be understanding your issue properly

One is supposed to be for the client, the other one for the server, but the client one didn’t work so I tested the server code in a LocalScript to try to get it to work in a LocalScript in case they were swapped, sorry I didn’t make that clear.

If you need to load updated versions automatically, you could load it on the server and stick it in ReplicatedStorage. Have the client wait for it.

-- server
local Module = game:GetService('InsertService'):LoadAsset(408470686).MainModule
Module.Name = "InputImageLibrary"
Module.Parent = game:GetService("ReplicatedStorage")
-- client
local InputImageLibrary = require(game:GetService("ReplicatedStorage"):WaitForChild("InputImageLibrary"))

The wiki needs to be updated.