-
Notifications
You must be signed in to change notification settings - Fork 400
WebServer
大多数游戏引擎都会内置一个控制台,方便在游戏运行时呼出,输入一些控制指令,查看引擎的内部状态。
Ant 引擎主要为移动设备设计,考虑到手机这样的设备并不适合控制台交互,所以并没有设计一个这样默认的控制台。当然,如果开发 PC 游戏的话,还是可以使用 imgui 制作一些调试界面的。
引擎给出的方案是:使用 Web 界面。为此,引擎提供了一个简单的 web server ,它支持基本的 http 协议,可以上传文件,浏览静态页面,执行动态程序(类似 CGI)。
web server 运行在一个 ltask 服务中,默认没有开启。
这是我们游戏中 web server 的启动代码:
local web = ltask.uniqueservice "ant.webserver|webserver"
ltask.call(web, "start", {
mode = "indirect", -- "direct"
port = 9000,
cgi = {
debug = "vaststars.webcgi|debug",
upload = "vaststars.webcgi|upload",
texture = "vaststars.webcgi|texture",
},
route = {
vfs = "vfs:/",
log = "log:/",
app = "app:/",
},
home = "vfs:/web",
})
mode 可以使用 indirect 和 direct 两种模式。一般在手机上使用 indirect ,所有网络连接都从 VFS 的 fileserver 转发,游戏 App 并不直接监听本地端口。对于 iOS 系统,网络连接会由开发机上的 iTunes 转发。如果使用 direct 模式,则监听本地端口。
vaststars.webcgi
是游戏代码内的一个 Package,它实现了一些供 webserver 调用的脚本,例如:http://webserver/debug
就会调用 "vaststars.webcgi|debug"
中的 get()
函数。
route 可以将 url 映射到文件系统中的路径上。目前提供三种文件系统:vfs
表示 vfs 系统下的路径,log
是本地的 log 目录,app
是 App 本地的可写目录,通常用于存放游戏存档,网络下载缓存等。此处的 vfs = "vfs:/"
可以让开发者通过 http://webserver/vfs
就能查看所有 vfs 中的文件。
home = "vfs:/web"
将网站的根指向 vfs 下的 /web 目录。