function requireFiles(files)
for _, file in ipairs(files) do
local file = file:sub(1, -5)
require(file)
end
end
I have the program run through a few folders containing .lua files and it saves me from adding all the requires in main.lua.
Created .exe, when running .exe error unable to load audio file
Forum rules
Before you make a thread asking for help, read this.
Before you make a thread asking for help, read this.
Re: Created .exe, when running .exe error unable to load audio file
That can't be it, then, because it either works or doesn't work, and doesn't affect love.audio.
I'm out of ideas as to why love.audio can be nil at that point, and only when the executable is fused.
I'm out of ideas as to why love.audio can be nil at that point, and only when the executable is fused.
Re: Created .exe, when running .exe error unable to load audio file
Does the audio system exist at the point where the 'newSource' function gets called? Regarding the timeline of events, is the sound loading at least invoked from within love.load() or later?
I would be concerned with using LÖVE's systems/API at any point before love.load() is called. Later than that should be fine (after all systems were initialized).
I would be concerned with using LÖVE's systems/API at any point before love.load() is called. Later than that should be fine (after all systems were initialized).
Re: Created .exe, when running .exe error unable to load audio file
AFAIK, love.load has no technical relevance. Anything you can do in in love.load, you can do at the top level of main.lua.
The error here is almost certainly a user error, but we can't be sure unless OP posts an example that reproduces the error.
Re: Created .exe, when running .exe error unable to load audio file
The newSource is in a file named sound.lua. It names a few sources and has two play functions, just simple audio.play(). The only mention of sound.lua before love.load() is the require for the file. As far as I've read, you can do anything above love.load() and it will read it as if it's in or below love.load().RNavega wrote: ↑Mon Oct 12, 2020 9:51 pm Does the audio system exist at the point where the 'newSource' function gets called? Regarding the timeline of events, is the sound loading at least invoked from within love.load() or later?
I would be concerned with using LÖVE's systems/API at any point before love.load() is called. Later than that should be fine (after all systems were initialized).
The error traces back to my require function, which consists of
------
local conf_files = {}
recursiveEnumerate('conf', conf_files)
requireFiles(conf_files)
local object_files = {}
recursiveEnumerate('objects', object_files)
requireFiles(object_files)
local room_files = {}
recursiveEnumerate('rooms', room_files)
requireFiles(room_files)
----- from there it sends the files to...
function recursiveEnumerate(folder, file_list)
local items = love.filesystem.getDirectoryItems(folder)
for _, item in ipairs(items) do
local file = folder .. '/' .. item
if love.filesystem.getInfo(file, 'file') then
table.insert(file_list, file)
elseif love.filesystem.getInfo(file, 'directory') then
--recursiveEnumerate(file, file_list)
end
end
end
function requireFiles(files)
for _, file in ipairs(files) do
local file = file:sub(1, -5)
require(file)
end
end
I commented out the rE() for the directory because it was causing issues, I probably have something wrong but wasn't ready to dive into that issue yet. When I commented out the rE() the program ran fine. As long as I wasn't trying to run the exe.
For the person asking about sound.lua contents, I just saw your comment. Here it is.
missilefx = love.audio.newSource("sound/missile.ogg", "static")
pew = love.audio.newSource("sound/pew.ogg", "static")
splat = love.audio.newSource("sound/splat.ogg", "static")
franks = love.audio.newSource("sound/franks.ogg", "stream")
coinappear = love.audio.newSource("sound/coin.ogg", "static")
coincollect = love.audio.newSource("sound/coincollect.ogg", "static")
thunder = love.audio.newSource('sound/thunder.ogg', 'static')
pain = love.audio.newSource('sound/pain.ogg', 'stream')
pain:setLooping(true)
franks:setLooping(true)
love.audio.setVolume(.01)
function music(x)
local sound = x
if sound:isPlaying() == false then
playSound(sound)
end
end
function playSound(sound)
sound:play()
end
Re: Created .exe, when running .exe error unable to load audio file
The error message says: "attempt to index field 'audio' (a nil value)".
This says that:
It meets all three requisites that lead to that error message.
Alternatively, placing 'c.modules.audio = false' without 'love.audio = nil' inside love.conf also leads to that message.
If the 'love.audio = nil' line is taken out, without disabling the audio module, the error message is different:
That's the actual error when a file does not exist. I was confused at the beginning because I assumed that this was the error that Nine Iron was getting, because he said that the file couldn't be found. But the error message does not point to a problem with finding the file.
Something is clearing the audio table/module when the error is triggered. But I can't figure out what, with the information given so far.
@Nine Iron, do you think you can trim down your project to a point where the problem is still reproducible, but you're comfortable with sharing it? That is, removing everything after (including love.draw, love.update and so on, and maybe replacing some required modules with empty files, and the assets with dummy assets).
This says that:
- 'audio' is a field of a table (keyword: field). The only table that fits in the line given is 'love';
- The 'audio' field is nil;
- the code is attempting to access an index inside of 'audio' but 'audio' is nil instead of a table, and can't be indexed.
Code: Select all
love.audio = nil
love.audio.newSource("abc", "stream")
Alternatively, placing 'c.modules.audio = false' without 'love.audio = nil' inside love.conf also leads to that message.
If the 'love.audio = nil' line is taken out, without disabling the audio module, the error message is different:
Code: Select all
Error: Could not open file abc. Does not exist.
Something is clearing the audio table/module when the error is triggered. But I can't figure out what, with the information given so far.
@Nine Iron, do you think you can trim down your project to a point where the problem is still reproducible, but you're comfortable with sharing it? That is, removing everything after (including love.draw, love.update and so on, and maybe replacing some required modules with empty files, and the assets with dummy assets).
Re: Created .exe, when running .exe error unable to load audio file
To be honest, I'd probably share the whole thing. It's just a stupid little incomplete level I put together while learning some lua.pgimeno wrote: ↑Tue Oct 13, 2020 8:24 pm
@Nine Iron, do you think you can trim down your project to a point where the problem is still reproducible, but you're comfortable with sharing it? That is, removing everything after (including love.draw, love.update and so on, and maybe replacing some required modules with empty files, and the assets with dummy assets).
I can't recreate the error though. I've gone through this thread at least three times to check that I've undone everything I mentioned. After deleting and replacing the zip file contents and the making a new exe, it runs every time.
I've tried manual require of sound.lua from multiple folders. I've tried having it called from the require function. The only errors I've seen are syntax related, nothing stating that index field 'audio' is invalid. The commented line in the rE() function for directory was set long before I tried to make the exe.
The conf settings were never touched. I listed all the values the wiki suggested long before I tried making the exe as well. t.modules.audio was always set to true.
I haven't touched this project since I started the thread, other than the changes I've listed. I couldn't get it to run in the beginning, now I can't get it to fail. :\
Who is online
Users browsing this forum: Ahrefs [Bot], Amazon [Bot] and 8 guests