基础知识

本文介绍如何使用 Mini Studio 制作一个RPG游戏。

读者需要对 Mini Studio 的有一个基础的了解,并能简单进行操作。

官方网站资料:
https://studio.mini1.cn/wiki/Tutorials/Introduce/Introduce.html

studio界面基础操作:
https://studio.mini1.cn/wiki/Tutorials/Introduce/BaseOperation/StudioMenu.html

建立项目

打开studio登陆后,新建一个空地图(Empty Map)项目,工程名自定义即可:



进入studio工作主界面后,节点列表中可以查看场景的最关键的三个要素:


WorkSpace(场景)       : 摆放地形,玩家,怪物,游戏模型等
Players(玩家容器)     : 所有进入游戏中的玩家
MainStorage(主存储区) : 作为一个仓库,存放各种节点模型,代码模块等,使用时会移动到WorkSpace中
            

搭建场景

激发想象,创造快乐。开发者可以搭建出非常华丽的场景:



下面的demo中,我们将展示如何搭建一个较为简单的游戏场景:
我们的游戏中,将包含4个距离相隔很远的地图:
g1游戏大厅   g2轮船地图    g3梦境地图    g4沙漠地图  如下图:

每个地图中,都摆放有传送门: (传送门是一个模型,玩家碰到后,会触发代码逻辑进行地图传送) 
tp0  传送到g0
tp1  传送到g1
tp2  传送到g2
tp3  传送到g3

为了实现上面的效果,我们在WorkSpace下新建一个 沙盒节点Ground ,作为各种地图的容器,里面包含4个地图节点: (尽量使用容器节点作为父节点,层次管理更清晰,查找效率也更高) g0 出生的新手大厅 位置( 0, 0, 0 ) g1 轮船地图 位置( 100000, 0, 0 ) g2 梦境地图 位置( 200000, 0, 0 ) g3 沙漠地图 位置( 300000, 0, 0 ) 每一个地图都使用Transform(变换) 作为父节点, Transform有位置信息Position,可以控制每个地图的位置。


选择大厅地图g0节点, 就可以在上面摆放各种模型物体:
首先在g0中摆放一个大的【方块Cube】作为地表,名字是base, 长宽都是100米,高50米,如下图:



在base土地上,摆放各种模型装饰:

上图摆放了下面的元素(开发者可以按自己的创意自行设置):
Actor_ship        船模型
Actor_dream       带翅膀的月亮模型
Actor_sand        骆驼模型

tp1               传送门1    传送到轮船地图  (代码逻辑:玩家触碰会进行传送)
tp2               传送门2    传送到梦境地图
tp3               传送门3    传送到沙漠地图

monster_spawn1    刷怪点1 帐篷 (代码逻辑:在这个点随机刷出怪物)
monster_spawn2    刷怪点2 帐篷
monster_spawn3    刷怪点3 帐篷 

Cube_brick        中间的红砖块模型装饰品

g0, g1, g2, g3地图的摆放和搭建,开发者可以导入自定义的模型,发挥想象空间。

下面分别是地图 g1 g2 g3 的样子:
  

配置UI元素

在StarterGui主节点下,可以自定义游戏中使用的所有ui元素,如下图:


ui_root_spell( 2DUI的父节点 )   : 是2D元素的容器

spell_bg:       施法条背景
spell_bar:      施法条进度
hp_bg:          玩家血条背景
hp_bar:         玩家血条进度
header_bg:      头像背景
header:         头像
name:           玩家名字
mp_bg:          玩家魔法条背景
mp_bar:         玩家魔法条进度

target_hp_bg:     目标血条背景
target_hp_bar:    目标血条进度
target_name:      目标名字
target_mp_bg:     目标魔法条背景
target_mp_bar:    目标魔法条进度

所有的UI元素,可以在界面中配置,也可以用代码来动态生成。

开发者可以配置多个复杂的界面,比如玩家包裹,装备,任务,商城界面等。

平时将这些界面隐藏起来,在使用的时候,通过代码来控制是否显示。



玩家登录后,都会复制一份starterGui里的所有元素。

通过代码可以控制这些元素的属性和数值。
            

模型特效资源

在整个游戏中,我们需要用到大量的模型和图片资源,这些资源的来源分为下面几个途径:

1 沙盒系统自带

这里建议新建一个项目,将所有的模型和特效都放置到新项目的WorkSpace中查看,随时选择合适的资源。



2 开发者收集的资源上传到云资源库

开发者在这里可以建立自己的目录,上传各种文件,甚至用AI来生成图片或者模型上传后来使用。
比如地形模型,人物模型,装饰品模型,贴图材质文件,声音文件,动作文件,UI图片,背景图片。

编写代码逻辑

开发者编写的脚本代码,分为客户端和服务器三大块:
1 客户端脚本(lua代码) 只运行在客户端侧(玩家手机或PC中),客户端有UI界面部分的处理。
2 服务器脚本(lua代码) 只在后台服务器的房间实例上运行,服务器不会运行UI界面部分的代码逻辑。
3 公共库脚本(lua代码) 提供给上面两种脚本引用。


如下图,服务器脚本(lua代码)运行在远程云服务器(一般都是linux服务器)上的一个地图房间里,
当玩家联网进入服务器房间后,在玩家客户端侧,运行客户端脚本(lua代码)




下图展示了他们的分类和部署情况:




在studio开发界面中具体位置如下图:

公共库脚本(lua代码) 类型为 模块代码(ModuleScript)



服务器脚本(lua代码) 类型为 可执行代码(Script)



客户端脚本(lua代码) 类型为 客户端本地代码(LocalScript)
其中 公共库模块代码(ModuleScript)比较多,需要按目录进行层级分类,
这里的目录结构由开发者自行定义,下面是一个例子:
--code:      主目录,所有代码的容器
--common:    公共代码部分
--server:    服务器库代码
--client:    客户端库代码
这些目录下, 放置具体的 lua语言的代码文件,里面也还可以再次进行目录分层。
            
-


在上面的图中MainStorage中还有一个控件: 网络模块NetworkChannel 需要添加, 也可以在代码中添加,这里手动添加效果一样。