(vscode插件) 在岛三上与ArenaPro(TS)集成使用Python/JavaScript编程!arenapro + daopy/js [瞎折腾]
⚠ 使用前须知!
这不是一个由box3lab神岛实验室官方发布的项目
本项目未完全测试,存在不可预测的风险,不建议用于生产!!
如果使用本项目进行游戏开发,带来的后果作者不承担责任,本项目应该被视为整活项目
如果使用本项目进行游戏开发,带来的后果作者不承担责任,本项目应该被视为整活项目
如果使用本项目进行游戏开发,带来的后果作者不承担责任,本项目应该被视为整活项目
本插件支持Python或者JavaScript与ArenaPro集成开发。
忠告:还是乖乖学TypeScript吧,别的东西都不是ArenaPro官方支持的。
将Python集成到神岛ArenaPro的项目里!
(arenapro+daopy=啥?不知道,反正daopy的1m体积够神岛编辑器喝一壶的)
在ArenaPro上使用Python需要一定修改,所以这样的项目要通过本插件创建。
打开一个空的文件夹
按下Ctrl-Shift-P 打开命令面板,输入并找到:
Ap-more: 创建 AP-more 项目
选择Skulpt.js来运行Python
请等待一切执行完成,查看终端提示。
找到client/src/daopy-client/index.py 和 server/src/daopy-server/index.py,它们分别是client端和server端的入口文件
# 假设这是server端
from dao3 import * # 引入当前端的所有全局对象(api)
@world.onPlayerJoin
def onPlayerJoin(ev):
world.say(f"{ev.entity.player.name} 加入了这个游戏!")提示:
MicroPython WASM支持目前存在无法解决的bug,不想理会的话请使用Skulpt.js支持:from dao3 import *不可用,原因未知。需要精确导入,例如from dao3 import world,voxels
Python的API与js的几乎没有区别,所以直接阅读box3api文档即可。编写代码时有自动补全的。但是编写时要注意以下几点:
- 需要引入API:
from dao3 import *会引入当前端所有的API - 再也没有异步了:所有的
async函数或者返回Promise的函数会被同步执行,直接阻塞返回结果(这个是Skulpt.js的Suspension特性),例如dialog不需要await了。如果你需要写一段不断执行的脚本,那么推荐你用@world.onTick事件 - 事件使用:以下是推荐的事件使用方式:
# server端
from dao3 import *
# 1.装饰器形式,函数名随意
@world.onPlayerJoin
def onPlayerJoin(ev:GameEntityEvent):
# ev 是事件对象,冒号后面的可加可不加,加了自动补全会更方便,至于加什么嘛,看box3api文档
world.say(f"{ev.entity.player.name} 加入了这个游戏!")
# 2.普通函数形式
def onPlayerJoin(ev:GameEntityEvent):
world.say(f"{ev.entity.player.name} 加入了这个游戏!")
world.onPlayerJoin(onPlayerJoin) # 注册事件- 预构建:这个在命令面板里输入
预构建可以找到,会把daopy文件编译成_daopy_bundle.ts - 构建+上传:这个是原ArenaPro的功能了,本插件直接调用它来完成预构件以后的操作。
- 预构建+构建+上传,这个可以在命令面板找到,直接执行所有操作上传到地图。(一键三连了属于是,这个是最常用的)
- 创建AP-dpy不要使用原版的ArenaPro插件,这样创建的是纯TypeScript项目。
- 使用本插件时请使用命令面板中的预构建+构建+上传来部署
本项目与只是个人项目,作为ArenaPro的功能扩展,以下是ArenaPro官方的链接
-
Box3lab: ArenaPro插件: 告别繁琐,拥抱高效!神岛ArenaPro插件,专为游戏开发者设计,旨在通过无缝集成
VSCode与神岛Arena编辑器,为游戏开发带来前所未有的便捷与效率。本插件不仅解决了Arena编辑器功能单一、开发体验不佳的问题,还引入了TypeScript支持与精通神岛API的Chat吉PT,为游戏开发提供更丰富的功能和体验。 -
神岛实验室: 这是
ArenaPro的开发团队的官网。
-
daopy-runtime: 神岛中运行Python的运行时组件+Python版API代理,基于Skulpt。
-
daopy-npm: 发布在npm上的daopy运行时,更好地适配
ArenaPro
- Skulpt.js: Skulpt 是一个用 JavaScript 编写的 Python 解释器,可以在浏览器中运行 Python 代码。本项目运行时基于它修改,删删改改。