じ☆ve冰风 发表于 2024-4-18 19:12:29

如何让你的rgss上浏览器

    首先,浏览器的运行机制和pc不一样,浏览器采用的是异步调用模式,并且是单线程的,所以不能像windows那样,通过消息循环来刷新游戏画面和处理游戏中的一些时间。
      在网页js中的循环,通常需要定义一个回调函数,将这个回调函数通过一定的途径注册到系统中去,然后让系统自动去调用,如下所示,我们定义main_update_loop为回调函数:

$prev_scene = nil
def main_update_loop
if $scene != nil
    if $scene != $prev_scene
      if $prev_scene != nil
            $prev_scene.dispose
      end
      $scene.main
      $prev_scene = $scene
    end
    # Update game screen
    Graphics.update
    # Update input information
    Input.update
    # Frame update
    $scene.update
else
    raise "END"
end
end

在rgss脚本,main模块中,移除如下代码:
while $scene != nil
    $scene.main
end

此外,每一个场景(scene)里面,都会有一个循环更新的代码模块:
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
      break
      end
    end
      我们将这段模块移除,直接用end结尾,剩余部分再定义成另一个函数,给main_update_loop调用,
其模板如下所示:
class Scene_XXX
    ...
    def main
      ...
      Graphics.transition
                # 这里的loop语句块被直接移除,并使用end结尾
    end

      # 余下代码,重新定义成dispose函数
    def dispose
      Graphics.freeze
      ...
    end

    def update
      ...
    end
end

      最后是关于存储问题,由于浏览器不能直接访问计算机的文件,我们将游戏的记录保存再浏览器的缓存中,由于上面说到,浏览器的事件处理都是异步的,所以我们还需要再存储文件的地方加一段这样的代码:
class Scene_Save < Scene_File
    ...

    def on_decision(filename)
      ...

      file = File.open(filename, "wb")
      write_save_data(file)
      file.close

                # 这是额外加出的操作
      save_file_async(filename)

      ...
    end

    def write_save_data(file)
      ...
      Marshal.dump(characters, file)
      ...
      Marshal.dump($game_player, file)
      …
                # 这是额外加出的操作
      Marshal.dump(1, file)
    end
end

完成以上操作后,还需要为rgss配置资源预加载表,操作如下:

从百度网盘下载打包工具,并将其解压
链接:https://pan.baidu.com/s/1xQh4tXwRzItGjWC21OAl9Q
提取码:h2m6

安装msys2-x86_64-latest

安装完毕后,打开msys2,并运行命令安装ruby:
pacman -S ruby

将你游戏目录下所有的文件复制到gameasync

运行游戏目录下make_mapping.sh脚本

执行以下脚本:
for f in Data/*
do
      ./dump.sh “$f”
      echo “Processed file: $f”
done

将生成的preload文件夹移动到web-rgss同一层目录下

      最后一步,将打包工具下,除msys2-x86_64-latest以外的所有其他文件和文件夹放到你http服务器的目录下,你的游戏就能在网页上面运行了。
页: [1]
查看完整版本: 如何让你的rgss上浏览器