BizHawk 2.1.1:读取(“*数字”)总是 returns Lua 中的 0
BizHawk 2.1.1: read("*number") always returns 0 in Lua
我正在尝试 运行 用 Lua 编写的辉煌的 Mar I/O 人工智能(更多信息请参见 https://youtu.be/qv6UVOQ0F44)
AI 运行在 BizHawk 模拟器 (v.2.1.1) 的 Lua (v.5.1) 控制台中成功运行,但在尝试重新加载时出现错误算法的先前状态。
打开文件后,似乎file:read("*number") 总是return 0,而read("*all") 和"*line" 都读取了内容正确。我也试过 "*n" 但没有成功。
完整脚本位于:https://pastebin.com/ZZmSNaHX
function loadFile(filename)
local file = io.open(filename, "r")
pool = newPool()
pool.generation = file:read("*number")
pool.maxFitness = file:read("*number")
...
function writeFile(filename)
local file = io.open(filename, "w")
file:write(pool.generation .. "\n")
file:write(pool.maxFitness .. "\n")
...
生成的文件开头为:
18[LF]
1938[LF]
...
但是,我仍然在控制台中看到 0:
console.writeline("Gen " .. pool.generation) --> "Gen 0"
console.writeline("Max Fitness " .. pool.maxFitness) --> "Max Fitness 0"
同样令人费解的是,此脚本已在不同的论坛中进行过讨论,但似乎没有人报告相同的问题。
读取数字的格式为'n'、file:read('n')。有关 read() 格式说明符的详细信息,请参阅 https://www.lua.org/manual/5.3/manual.html#pdf-file:read。
我发现 BizHawk 模拟器使用的是 Lua 的自定义版本。
该问题出现在模拟器的 2.1.1 版本中。以前的版本运行良好。
感谢社区的帮助
大约在那个时候,BizHawk 添加了一个替代的 c# lua 实现 'kopilua' 以解决严重的崩溃问题。 kopilua 的几个缺点之一是不兼容的字符串解析和文件 IO。您必须使用 config > customize > advanced > Lua+LuaInterface 才能使用正常 lua;不会有这个问题。
我正在尝试 运行 用 Lua 编写的辉煌的 Mar I/O 人工智能(更多信息请参见 https://youtu.be/qv6UVOQ0F44)
AI 运行在 BizHawk 模拟器 (v.2.1.1) 的 Lua (v.5.1) 控制台中成功运行,但在尝试重新加载时出现错误算法的先前状态。
打开文件后,似乎file:read("*number") 总是return 0,而read("*all") 和"*line" 都读取了内容正确。我也试过 "*n" 但没有成功。
完整脚本位于:https://pastebin.com/ZZmSNaHX
function loadFile(filename)
local file = io.open(filename, "r")
pool = newPool()
pool.generation = file:read("*number")
pool.maxFitness = file:read("*number")
...
function writeFile(filename)
local file = io.open(filename, "w")
file:write(pool.generation .. "\n")
file:write(pool.maxFitness .. "\n")
...
生成的文件开头为:
18[LF]
1938[LF]
...
但是,我仍然在控制台中看到 0:
console.writeline("Gen " .. pool.generation) --> "Gen 0"
console.writeline("Max Fitness " .. pool.maxFitness) --> "Max Fitness 0"
同样令人费解的是,此脚本已在不同的论坛中进行过讨论,但似乎没有人报告相同的问题。
读取数字的格式为'n'、file:read('n')。有关 read() 格式说明符的详细信息,请参阅 https://www.lua.org/manual/5.3/manual.html#pdf-file:read。
我发现 BizHawk 模拟器使用的是 Lua 的自定义版本。 该问题出现在模拟器的 2.1.1 版本中。以前的版本运行良好。
感谢社区的帮助
大约在那个时候,BizHawk 添加了一个替代的 c# lua 实现 'kopilua' 以解决严重的崩溃问题。 kopilua 的几个缺点之一是不兼容的字符串解析和文件 IO。您必须使用 config > customize > advanced > Lua+LuaInterface 才能使用正常 lua;不会有这个问题。