一个大前提是,剧情模式和一般的战役关卡一样,底层都是 .SC2Map ,星际2的地图文件。于是每一次打开或关闭这些地图时,都会有一些战役通用的触发器被运行,用以读取或保存当前的数据到一个数据存档 .SC2Bank 上,从而通过 Bank 在不同的地图间实现数据同步。
在剧情模式地图上,也就是那些 *story*.SC2Map 中,尽管未开启地形,但依旧可以在其上放置单位。而可见于剧情模式中的一切可互动的、不可互动的实体,角色、物件、场景,几乎都是单位,将这些单位按预设的位置放置后,再应用特定的镜头把它们囊括其中,就可基本搭建出所见的整个情景。
根据上文提到的数据存档获得当前的游戏数据后,就可以判断出关卡进度、升级购买情况等等信息。数据模块中的对话可以利用进度与一些其他条件进行判断,决定某些对话可用或不可用,触发器与其交互,了解到情况,就可以开启一些可点击的项,并在点击后运行这些对话。每一个特殊界面是通过 UI 模块量身定做的,无论是直接调还是手动拼,但是框架中的数据是通过一些动作进行填充的,而后依照暴雪所写的复杂逻辑处理玩家使用这些界面的操作。
开启新的关卡也是一样的,在获取到 UI 中玩家点击的星球或关卡后,将游戏数据保存供关卡调用,然后设置下一张游戏地图,结束当前的剧情模式地图待系统自动跳转。
具体的实现还有很多细节,暂且就不细说了。