BizHawk 2.1.1:read(“* number”)总是在Lua中返回0

时间:2017-07-26 11:46:25

标签: lua emulation

我正在尝试运行用Lua编写的精彩Mar I / O人工智能(更多内容见https://youtu.be/qv6UVOQ0F44

AI在BizHawk仿真器(v.2.1.1)的Lua(v.5.1)控制台中成功运行,但在尝试重新加载算法的先前状态时出现错误。

打开文件后,似乎文件:read(“* number”)将始终返回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"

令人费解的是,这个脚本已经在不同的论坛中讨论过,似乎没有人报告同样的问题。

3 个答案:

答案 0 :(得分:2)

我发现BizHawk模拟器正在使用Lua的自定义版本。 此问题出现在模拟器的2.1.1版中。以前的版本工作正常。

感谢您的帮助社区

答案 1 :(得分:0)

读取数字的格式为' n',file:read(' n')。有关read()格式说明符的详细信息,请参阅https://www.lua.org/manual/5.3/manual.html#pdf-file:read

答案 2 :(得分:0)

大约在那个时候,BizHawk添加了另一个c#lua实现'kopilua',以解决深层崩溃问题。 kopilua的一个缺点是不符合要求的字符串解析和文件IO。你必须使用config>自定义>高级> Lua + LuaInterface为了使用正常的lua;它不会有这个问题。