# 项目结构

# 设计与开发游戏资源:assets

开发者直接理解的游戏资源在 assets 目录下面进行开发与存放。有的资源开发者可以直接开发,比如 typescript 代码。有的可以使用可视化工具进行编辑。比如场景,预制体等内容。在使用小游戏的时候,会将这些资源快速编译成小游戏能理解的格式,比如 typescript 编成javascript,hlsl编成glsl。这些资源会存放在 miniprogramRoot 对应文件夹(比如模版项目中的minigame)下的__temp文件夹内。

# 播放态快速运行与调试:minigame/__temp

在minigame/__temp目录下,在小游戏内,可以预览编辑场景,粒子特效等,甚至可以快速运行调试,加载的资源就是__temp下面的资源。__temp下面的资源会在模拟器运行时,以及打包上传时被忽略。

# 构建打包:minigame/assets

在小游戏的打包构建流程中,为了提升真机运行效率,我们会对资源进行处理。比如压缩纹理,合并资源,自动分包等工作。最后生成在 miniprogramRoot 对应文件夹(比如模版项目中的minigame)下的 assets 文件夹内。模拟器会理解构建出来的内容来运行,并且在预览/上传的时候被发布到真机。

# 目录定义

# assets/

本地的资源文件,包括了场景,模型,代码等。 同时也有一些特殊文件夹

  • assets/openDataContext,是专门用来作为开发开放数据域代码的指定目录。
  • assets/workers,是专门用来作为多线程 Worker 代码的指定目录。
  • node_modules npm包,里面自带的小游戏框架的d.ts。会被开发者import engine的时候所使用,进行代码提示。开发者也可以添加自己希望使用的 npm 包。都会通过小程序的构建 npm 能力最后都会自动打包到发布目录下。
  • Editor,assets目录下任何名字叫做 Editor 的文件夹都是当作一种用来放置工具插件的特殊目录,里面的内容将不被构建处理。
  • isolateScript,assets目录下任何名字叫做 isolateScript 的文件夹的代码都会运行在一个隔离环境,用于开发者可以自定义构建逻辑。

# minigame/

存放构建出来的小游戏真机运行产物的目录,在项目根目录使用 project.config.json 文件中的miniprgramRoot属性来配置。

  1. minigame/__temp/ - 临时资源目录,用于存储编译后的资源,用于编辑播放态使用。开发者可以不理解,最后打包上传的时候会忽略这个文件。

  2. minigame/assets/ - 资源目录。IDEBuildIn与 IDEPack 目录中都是打包后的资源文件。IDEBuildIn将会被上传到主包中。IDEPack被开发者上传到远程服务器。register.json中写入了每个包的地址,可以手动改,也可以在构建时通过配置界面设置前缀。

  3. minigame/assets/game.js - 构建生成的启动文件js。require了这个文件以后就会启动入口场景。

  4. minigame/game.js - 开发者定义的小游戏入口文件。在这个文件里面require('assets/game.js')

  5. minigame/game.json - 小游戏根目录下的 game.json 文件用来对小游戏进行全局配置,决定相关界面渲染和属性设置等。也可以通过Project Setting窗口来配置。

# typings/

小程序官方 api 的d.ts。用于 typescript 开发。会被开发者的 ide 所使用,进行代码提示。

# project.config.json

可以在项目根目录使用 project.config.json 文件对项目进行配置。查看项目配置文件

# tsconfig.json

用于 typescript 开发,vscode等编辑器识别的配置,编译代码的配置。

# engine.ide.json

记录小游戏打开时所需要的一些配置信息。