设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1263|回复: 7

[原创发布] 如何将你的rgss游戏放到网页上运行

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
发表于 2023-2-18 16:33:58 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
        首先,浏览器的运行机制和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配置资源预加载表,操作如下:

从百度网盘下载打包工具,并将其解压

安装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服务器的目录下,你的游戏就能在网页上面运行了。

游戏样例:http://124.70.196.6:8000/
由于服务器垃圾,外加游戏引擎要5m多,导致加载较慢,大家请耐心等待,后期我会优化的。

评分

参与人数 1+1 收起 理由
939034448 + 1 太强辣

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
 楼主| 发表于 2023-2-19 05:41:37 | 显示全部楼层
主要是rgss人家官方几乎都放弃了,但这个可以算是我童年的美好记忆,所以还是想着要弄一下。希望这段经典可以延续下去。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
 楼主| 发表于 2023-2-19 05:45:52 | 显示全部楼层
打包工具忘记放了,不好意思
链接:https://pan.baidu.com/s/1xQh4tXwRzItGjWC21OAl9Q
提取码:h2m6
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

发表于 2023-2-19 11:38:19 | 显示全部楼层
是 emscripten 吗?必须使用循环的话,可否考虑在死循环中使用协程?大佬来runtime群交流技术吧~
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14051
在线时间
2135 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

发表于 2023-2-19 20:00:02 | 显示全部楼层
试了下群主发的测试工程,确实每次加载时间有点过长了。
有几个问题,
1、存档问题,是存在本手机里面吗?是不是清空浏览器缓存,存档就会没有。
2、自己还得有个服务器才行吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
 楼主| 发表于 2023-2-19 22:13:01 | 显示全部楼层
miantouchi 发表于 2023-2-19 20:00
试了下群主发的测试工程,确实每次加载时间有点过长了。
有几个问题,
1、存档问题,是存在本手机里面吗? ...

关于问题一是这样的,存档保存在浏览器本地存储中,并且不像cookie那样有失效时间,原则上只要你不去清空浏览器缓存,那么存档一直在的。
关于问题二,只需要在电脑上安装一个http服务器软件就可以了,不用专门去买服务器,你可以去下载phpstudy这样的网站管理面板,让后把项目放进主目录,之后再从浏览器访问localhost就可以进入游戏了。
或者,直接双击index.html也行。
关于如何使用的问题,我会专门做个教程视频的,但不过这个论坛不知道怎么放上去。。。

点评

你可以在b站发布视频,链接发到论坛里,存档如果能云存储能好点,要不是误删软件  发表于 2023-2-20 08:48
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1117
在线时间
39 小时
注册时间
2023-2-17
帖子
66
 楼主| 发表于 2023-2-20 19:37:07 | 显示全部楼层
玻璃柿子 发表于 2023-2-19 22:13
关于问题一是这样的,存档保存在浏览器本地存储中,并且不像cookie那样有失效时间,原则上只要你不去清空 ...

好的,谢谢指导。
不过开云存储,就得开网站,还要上账号管理,数据库啥的,感觉好麻烦。
这个阶段好像没时间弄,后面看看吧、
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-28 19:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表