Laser League: World Arena

Laser League: World Arena

Not enough ratings
镭射联盟自定义地图编辑指南_V1.1_CN
By Philo and 1 collaborators
关于创建,使用和发布镭射联盟自定义地图的编辑指南。
   
Award
Favorite
Favorited
Unfavorite
一.地图编辑基本信息
1.创建准备
1.1 准备Json编辑器
LL地图为Json文件,您需要准备至少一种可以对Json文件进行编辑的工具。
如:Notepad++,JSONLint,JSONCompare。

1.2 获取地图模板
● 本地游戏文件中找到我们为你提供的初始地图模板,位置如下:
Laser League\GameProject\Content\Mod\Levels
● 也可以通过创意工坊订阅获得初始模板。

2.创建地图
2.1 创建地图方法与位置
● 如你已经找到地图模板位置,或已经下载了地图模板。请确保该模板在游戏目录如下位置:Laser League\GameProject\Content\Mod\Levels
● 如果您想体验其他玩家发布的地图,也请确保您获取的地图文件放在上述位置。
● 如果你准备创建多个地图,建议将地图模板进行备份留用。
● 通过Json编辑器即可对地图模板进行编辑。

3.地图编辑语法与格式
3.1 地图基本结构


3.2 地图编辑流程概述
● LL地图模板提供了,定位点,激光节点,道具,地图信息的序列信息编辑。
info.json
比赛场馆信息文件
pattern.json
地图序列信息文件
● 在您完成2.1地图模板配置后,即可启动游戏游戏对模板进行预览:
选择模式 > 自定义关卡 > 创建本地比赛
● 当您对地图文件进行编辑并保存后,在游戏中点击左侧刷新按钮并创建本地比赛,即可预览到您的编辑结果。(此功能只对pattern.json文件生效)
● 场馆场地大小为3600*1820单位,每个单元格为120*120单位。






二.语法说明-镭射序列
1.1 语法说明-(pattern.json)
完整示例请参考我们为您提供的地图模板。
● 定位点
定位点是地图中的位置坐标,是决定“激光节点”位置与运动轨迹的关键数据。
模块内容及示例:
 "laserNodeSpawnPointList":{  "LockdownN":{             "rotation":0,             "translation":{                 "x":900,                 "y":-1000,                 "z":0             } } },

属性说明:
LockdownN
定位点默认名称,可自行定义。
rotation
表示定位点的偏转角度,0-360度是顺时针的偏转,-360-0则为逆时针的偏转。(偏转角度:在该点创建激光节点时,激光节点的默认朝向将会与定位点的偏转角度保持一致)
x
决定坐标点x轴的位置。
y
决定坐标点y轴的位置。
z
决定坐标点z轴的位置。(通常设置为0)
示例注释:
创建一个定位点 LockdownN,旋转为0,所在位置为(900,-1000,0)。


激光节点
激光节点决定了激光的造型,运动形式,以及激光尺寸等相关参数。
模块内容及示例:
 "laserNodeSpawnList":[         { "description": "1A", "spawnableClass": "1A", "nodeLifetime": -1, "laserDuration": 12, "laserScaleBase": 0.25, "autoExpandTeam": "Team_None", "nodeRemainsUntilIdx": -1, "unlockedByPowerup": "PT_Count", "affectedByExpand": false, "expandScale": 1, "laserGapSpawningEnabled": false, "laserGapPowerupsIgnored": false, "laserGapMovementLoops": false, "laserGapMovementTime": -1, "laserGapsPerBeam": -1, "laserGapSpacing": -1, "laserGapLength": -1, "movementStartsWhenSpawned": false, "movementType": "None", "movementPathPointsName": ["1A","1B"], "movementSpeed": 400, "rotationType": "None", "rotateToPathSpeed": 0, "rotateToPointName": "", "rotateToActorLengthPolicy": "Default", "rotateIntervalStartAngle": 0, "rotateIntervalEndAngle": 0, "rotationSpeedMultiplier": 1, "spawnGroup": -1, "delay": 0 } ], "laserNodeRepeatFrom": -1, "laserGapsPerBeam": 2, "laserGapSpacing": 800, "laserGapLifetime": -1, "laserGapLength": 500, "laserGapStartLocationX": 200,

属性说明:
激光节点
description
最大128字符数
描述
spawnableClass
非空
激光类型。激光类型表
nodeLifetime
建议:-1/(10 - 30)
激光节点的存在时间,-1表示永久存在。
laserDuration
建议:-1/(5 - 15)
激光激活状态持续时间,-1表示永久存在。【永久存在将导致激光无法被盗取或切换】
laserScaleBase
建议:(0.1 - 1.5)
激光缩放比例,可以调整激光的大小。参考:激光缩放比例为1,激光长度:2500uu。
autoExpandTeam
Team_None
激光节点默认展开,可设定为固定队伍或中立
nodeRemainsUntilIdx
-1/(0<=,<=激光节点序号最大值)
激光节点保留直到某一指定结点的出现。-1为否。
unlockedByPowerup
能力提升道具类型
设置激光节点是否通过指定能力提升道具解锁激活。能力提升道具表
affectedByExpand
true / false
该激光节点是否受到“能力提升道具-扩展”的影响。(扩展:影响激光长度倍数)
expandScale
建议:(1 - 8)
设置“能力提升道具-扩展”对激光长度倍数的影响。
laserGapSpawningEnabled
true / false
选择是否存在激光间隙。
laserGapPowerupsIgnored
true / false
激光间隙是否不受 能力提升道具-分离,影响。
laserGapMovementLoops
true / false
间隙移动的循环布尔参数
laserGapMovementTime
建议:(~200)
间隙移动时间参数
laserGapsPerBeam
建议:(0 - 8)
激光间隙数量,-1表示无。
laserGapSpacing
建议:(0 - 500)
激光间隙间隔,-1表示无
laserGapLength
建议:(200 - 800)
激光间隙长度,-1表示无
movementStartsWhenSpawned
true / false
节点是否在被创建后立即开始移动。
movementType
移动类型
移动类型。移动类型表
movementPathPointsName
定位点名称列表
配置结点的运动路径,激光节点将顺序向每一个定位点依次移动。#第一个定位点为激光节点的生成位置。
movementSpeed
建议:(300 - 600)
RotateToPath: 设置激光节点的移动速度。
rotationType
旋转类型
设置激光节点的旋转形式。旋转类型表
rotateToPathSpeed
建议:(0 - 30)
激光节点旋转速度。
rotateToPointName
点名称
激光节点旋转的目标朝向。
rotateToActorLengthPolicy
激光墙长度规则
目标类旋转的激光墙长度规则
rotateIntervalStartAngle
建议:(-360 - 360)
角度间隔类旋转:旋转的起始角度。
rotateIntervalEndAngle
建议:(-360 - 360)
角度间隔类旋转:旋转的结束角度。
rotationSpeedMultiplier
建议:(0 - 30)
角度间隔类旋转:速度。
spawnGroup
-1
生成组。无需修改
delay
建议:(0 - 60)
设定结点的生成延迟。该激光节点将在上一个激光节点生成之后延迟生成。
激光节点序列属性(激光节点的全局参数)
laserNodeRepeatFrom
设定在激光序列全部运行完毕后,是否需要循环,以及循环的起始点。-1表示不循环。(镭射序列编号起始为0)
laserGapsPerBeam
每一面激光墙的激光间隙数量限制。
laserGapSpacing
激光间隙之间的距离。
laserGapLifetime
激光间隙的持续时间。
laserGapLength
激光间隙的长度。
laserGapStartLocationX
激光间隙相对于激光节点的起始位置。

示例注释:
创建一个激光节点1A,激光类型为1A,激光节点永久存在,激光激活持续12s,激光缩放为0.25,无道具解锁,移动路径为 1A-1B,移动速度400,激光墙间隙上限2,激光间隙间隔800,激光间隙永久存在,激光间隙长度500,激光间隙起始位置200。
额外说明:
1.当使用Lockdown场景道具时,必须添加相应的定位点和激光节点【LockdownN/E/S/W】,用于生成隔离墙。
2.当使用能力提升道具时,也必须添加对应的激光节点。

● 能力提升道具
赛场中随机刷新的能力提升道具,可以选择需要添加的能力提升道具类型,配置能力提升道具刷新时间等相关信息。
模块内容及示例:
 "powerupSpawnList":[         {             "powerupType":"PT_LockDown",             "duration":0,             "lifeTime":6,             "randomSpawnPointList":["1A","1B"],             "delay":10         } ], "powerupRepeatFrom": 0,  "labsolabsolutedelaye,
属性说明:
能力提升道具
powerupType
能力提升道具类型。能力提升道具表
duration
-1/(0<,<+∞)
能力提升道具激活后的持续时间。-1代表不会结束。
lifeTime
-1/(0<,<+∞)
该能力提升道具被创建后的存在时间。-1表示永久存在。
randomSpawnPointList
定位点名称
可以设置多个定位点,能力提升道具将会在多个定位点之中随机选择一个位置出现。
delay
(0<=,<+∞)
设置能力提升道具生成延迟。该能力提升道具将在上一个能力提升道具生成后延迟出现。
能力提升道具序列属性(能力提升道具的全局参数)
powerupRepeatFrom
设定在能力提升道具序列全部运行完毕后,是否需要循环,以及循环的起始点。-1表示不循环。(道具序列编号起始为0)
absolutedelay
设置能力提升道具生成延迟是否为绝对值 true / false。

示例注释:
创建能力提升道具:PT_LockDown,生效时间0,存在时间6,随机刷新范围1A-1B,生成延迟10。
额外说明:
absolutedelay属性影响能力提升道具的delay属性。
absolutedelay = true;能力提升道具生成延迟将从序列开始执行即开始计算。
absolutedelay = false;能力提升道具生成延迟将从前一个能力提升道具建造后开始计算。
使用Lockdown场景道具时,必须添加相应的定位点和激光节点【LockdownN/E/S/W】,用于生成隔离墙。


● 能力提升道具定位点及额外信息
道具定位点是控制能力提升道具生成位置的重要数据。
模块内容及示例:
     "powerupSpawnPointList":{         "PowerupSpawnPoint_4":{             "rotation":0,             "translation":{                 "x":-966,                 "y":360,                 "z":0             }         }, }

属性说明:
PowerupSpawnPoint_4
道具定位点名称,可根据需要自定名称。
rotation
表示定位点的偏转角度,0-360度是顺时针的偏转,-360-0则为逆时针的偏转。(偏转角度:在该点创建激光节点时,激光节点的默认朝向将会与定位点的偏转角度保持一致)
x
决定坐标点x轴的位置。
y
决定坐标点y轴的位置。
z
决定坐标点z轴的位置。(通常设置为0)

示例注释:
创建道具定位节点PowerupSpawnPoint_4,位置为(-966,360,0)。

语法说明-地图及ID
1.2 语法说明-(info.json)
地图信息
模块内容及示例:
{     "pattrenName":"Wakame",     "description":"test",     "defaultStadium":"Beyond",     "author":"teay_p1",     "version":"1.0",     "descriptionText":"",     "coverimg":"Waka.png", }

属性说明:
pattrenName
新地图名称
description
为你的地图添加描述。
defaultStadium
设定比赛场馆。比赛场馆表
author
输入作者的名字。
version
你的版本号。
descriptionText
你可以对所创建的地图特色进行简短说明。
coverimg
填写你的预览图名称,玩家将在游戏中看到它,需要将预览图放置于地图文件夹下。图片格式为.png格式。

示例注释:
名称:Wakame
描述:test
场馆:Beyond
作者:teay_p1
版本:1.0
预览图片:Waka1.png

1.3 语法说明-(onlineinfo.json)
Steam文件ID
模块内容及示例:
{ "steamFileId": "2800667806", "updateTime": "0" }

属性说明:
steamFileId
Steam文件ID
updateTime
更新时间(时间戳格式)

示例注释:
Steam文件ID:2800667806
文件更新时间:2022-04-28 21:11:11
额外说明:
查询Steam文件ID
1.4额外说明
  • 将相邻的节点delay值设置为0,可令它们同时生成。
  • 设置形成圆形的若干节点坐标,并让激光节点按路径移动,可形成一个绕中心移动的镭射节点,同时设置旋转类型为RotateToPoint,可使激光始终朝向中心。
  • 缺省的条目会自动应用默认值。
  • 参数条目的顺序位置不影响实际作用。
  • 当移动类型为LoopPath以及ReversePath,movementStartsWhenSpawned设置为false时,会导致节点激活位置瞬移。
  • 当移动类型为LoopPath以及ReversePath,movementStartsWhenSpawned为true时,且delay不为0时,节点位置会与生成位置偏移,由移动速度和延迟时间决定。
  • 需要注意的Json数据格式,每一个值后面需要用逗号“,”结束,但最后一个值不需要

三.测试与迭代
1.测试地图
  • 保存地图文件后,启动LL客户端,您将在选择模式 > 自定义关卡,看到创建的地图工程。
  • 在以上界面,您可以选择开始一场本地比赛,对地图进行测试。
2.迭代地图
当您在游戏外修改地图后,可通过重载刷新来更新您的地图数据而不需要退出游戏。
  • 地图数据信息:点击地图列表中左边的刷新按钮即可刷新对应地图的数据。在游戏中暂停按钮的重新开始比赛可以快速载入新数据并进入游戏。
  • 地图基础信息:退出自定义地图页面并重新进入,会刷新地图的基础信息。
四.创意工坊流程
在确认地图已经完成创作准备分享时,可通过游戏中的发布来创建在线物品并发布至创意工坊。若您不再需要分享,可以通过steam的创意工坊来隐藏或删除。
1.地图列表中的状态
本地地图

已创建物品的本地地图

订阅下载的地图
2.创建在线物品
本地状态的地图在首次点击发布时将会向创意工坊创建在线物品。
3.发布&更新
在游戏的发布页面中填写必要信息并点击页面上的按钮进行发布及更新,若发布成功,将跳转至该地图的创意工坊页面。
#注意:本地地图发布成功后会仍旧保留,以备下次修改和更新使用。如果订阅了您自己发布的地图,在你的地图列表中将会同时存在订阅版本和本地版本。请通过本地版本进行修改更新和发布。
4.获取地图
● 你可以在创意工坊通过订阅,自动获取其他玩家发布的地图。
● 也可以将其他人分享的地图放置在游戏的\Content\Mod\Levels目录下。
5.删除
● 如需删除已获取的地图,请取消订阅并在游戏目录\Content\Mod\Levels下删除对应地图文件夹即可。
● 若为本地地图,直接删除对应文件即可。
五.常见问题
1.常见创建失败原因
  • 检查steam的网络连接状况
  • 检查账号是否处于限制
  • 检查Steam云配额是否已满
2.常见发布失败原因
  • 检查steam的网络连接状况
  • 检查地图的onlineinfo中的fileID是否有误
  • 检查预览图片是否太大,或者发布内容字段不合法

3.数据加载错误
当地图数据有致命错误时,会显示错误的提示在原有的地图描述文本框中。
  • Json format error: Json格式错误导致的加载失败
  • Unable to Parse-laserNodeSpawnPointList: 激光节点对象参数设置错误
  • Unable to Parse-powerupSpawnList:能力道具对象参数设置错误

4.游戏闪退
  • 检查pattern.json文件中的必填选项,数据是否合法。
5.联系我们