meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
reference:gameworld [2023/03/15 19:11] – 创建 - 外部编辑 127.0.0.1 | reference:gameworld [2025/07/17 15:42] (当前版本) – 移除 bibiboxs | ||
---|---|---|---|
行 1: | 行 1: | ||
- | < | ||
- | # 游戏世界及地图 | ||
- | **游戏世界及地图**表示在`世界场景(World.Scene)`下加载的《沙盘引擎》地图`.semap文件`,在两者加载集合对的基础上呈现的沙盘世界。 | ||
- | |||
- | > 无论是针对模组开发者还是想要更多了解的玩家,根据自身需要查阅本文档会提升对引擎的了解。 | ||
- | |||
- | |||
- | ## 世界场景关系 | ||
- | |||
- | **游戏世界**可以理解为是一个虚拟世界的载体,是由**世界框架机制+游戏地图两者**组成的最终内容。 | ||
- | |||
- | 其中**世界框架**更多表示这个“世界”的玩法、逻辑、展示效果等,例如角色、载具、世界天气时间这些的控制,都属于**世界框架内容**。 | ||
- | |||
- | 除此之外,**游戏地图**更多表示游戏世界内的具体展示,比如某处放置着建筑、角色、载具等是固定的,**任何不同的地图都可以被世界框架加载**。 | ||
- | |||
- | > 简单来讲,**世界框架**相当于“上帝”,**游戏地图**相当于我们生存的“星球(地球)”,“上帝”控制着世界的变化和规则,地球主要负责展示这个星球应有的场景(树木、建筑等)。 | ||
- | |||
- | |||
- | |||
- | ## 世界实例 | ||
- | |||
- | 在沙盘引擎世界中,通常可以被用到“世界实例”的地方只有**主菜单界面(VirtualWorld虚世界)**与**游戏场景世界(World)**。 | ||
- | |||
- | | 世界 | ||
- | | -------------- | ------------------------------------------------------------ | | ||
- | | 主菜单界面世界 | 只在主菜单生效的一个世界,通常是为了让主菜单更有生机< | ||
- | | 游戏场景世界 | ||
- | |||
- | *目前沙盘引擎版本之下,除了以上所列举的两种情况外,几乎不会再有其他和“世界”有关的内容。* | ||
- | |||
- | |||
- | |||
- | ### 虚世界实例 | ||
- | |||
- | 在沙盘引擎开发流程中,控制脚本逻辑的只有Client.js和World.js主要入口(详情参考[模组和脚本开发](scripting " | ||
- | |||
- | 但是在某些情况下,模组开发者可能希望主菜单界面世界也需要相对复杂的效果。 | ||
- | |||
- | > 比如:开发者可能想在主菜单时,实现点击【商店】按钮后不仅会弹出商店的GUI界面,而且会将游戏内的视角转移到【商店区域】,同时商店视角内会有一个角色在做动作等。 | ||
- | |||
- | 这就无疑除了Client.js控制镜头外,还需要对World.js内的某个Character进行`SetAnim()`等函数的处理(或更多复杂的效果),但是World.js只负责处理【游戏场景世界】(参考[引擎场景空间](Developer/ | ||
- | |||
- | 虚世界其实和游戏场景世界没有任何区别,但是它不会遵循World.js的脚本来执行,而是处于一个“没有脚本控制”的状态,这就需要开发者通过API为虚世界指定一个VirtualWorld.js脚本(脚本名随意,这里只是举例),此脚本与World.js可实现的功能完全一致,作用只是强制虚世界执行**这个世界脚本**的世界代码,而不是World.js*(因为**World.js**只负责游戏场景世界的逻辑,应该只把游戏内真正的玩法放在这里)*。 | ||
- | |||
- | |||
- | |||
- | ## 游戏地图(.semap) | ||
- | |||
- | 在沙盘引擎的设计概念中,**游戏地图**是一个搭配**世界实例**共同使用的重要资源。 | ||
- | |||
- | 游戏地图资源`.semap`可以被几乎任何模组所加载和使用, | ||
- | |||
- | |||
- | </ |