Load image at relative path?

Is there any way to load an image at a path relative to the .lua file that's executing? I know standard convention is to place all images in the /images directory, but I'd like to colocate some level images with their corresponding files.

As far as I can tell, image.new always expects an absolute path, so I suppose this amounts to asking whether there's any way for a Lua script to introspect its own import path relative to the root of the project in order to construct the full path to the colocated image.

Unfortunately, even if that were possible I'm not sure it would suffice. I tried manually constructing a path in similar fashion:

local lanePath = "alleys/groovy-gutters/lanes/"
local bgImagePath = "../images/CurveLeft"
local bgImage = gfx.image.new(lanePath .. bgImagePath)

The above "works" (in the simulator), but yields the following warning:

warning: access to /Data/com.ebenliason.driftpin/alleys/groovy-gutters/lanes/../images/CurveLeft.pdi is not allowed on the device

I suspect that image.new is just treating any path with a relative component within it as illegal, even though it remains within the sandboxed directory.

All lua files are merged into one during compilation, fwiw

1 Like

Ah, that’s good to know. That probably rules out what I was attempting. For now I suppose I’ll just define an absolute path prefix once for each level, then concatenate it when loading each asset so I don’t have to update lots of occurrences if I rename things or move them around.