Editorial guidelines for creating, using and publishing Laser League custom maps.
Create and edit map files
1. Create preparation
1.1 Prepare the Json editor
● The LL map is a Json file, and you need to prepare at least one tool that can edit the Json file.
Such as: Notepad++, JSONLint, JSONCompare.
1.2 Get the map template
● Find the initial map template we provide for you in the local game file, the location is as follows:\Laser League\GameProject\Content\Mod\Levels
● Initial templates are also available through a workshop subscription.
2. Create a map
2.1 Create map methods and locations
● If you have found the location of the map template, or have downloaded the map template. Please make sure that the template is in the following location in the game directory: Laser League\GameProject\Content\Mod\Levels
● If you want to experience maps published by other players, please also make sure that the map files you obtained are placed in the above location.
● If you plan to create multiple maps, it is recommended to back up the map template for use.
● The map template can be edited through the Json editor.
3. Map Editing Syntax and Formatting
3.1 Basic structure of the map
3.2 Diagram editing process overview
● The LL map template provides editing of sequence information for positioning points, laser nodes, props, and map information.
info.json | Competition venue information file |
---|---|
pattern.json | Map sequence information file |
● After you complete the 2.1 map template configuration, you can start the game to preview the template:
MODE SELECTION > CUSTOM LEVEL > CREATE LOCAL MATCH
● After you edit and save the map file, click the refresh button on the left in the game and create a local match, you can preview your edit results.
(This function is only valid for pattern.json file)
Syntax Explanation-laser sequence
1. Syntax Explanation – (pattern.json)
For a complete example, please refer to the map template we provide you.
● Spawn Point
The spawn point is the position coordinate in the map, and it is the key data to determine the position and movement path of the “laser node”.
Section sample:
"laserNodeSpawnPointList":{ "LockdownN":{ "rotation":0, "translation":{ "x":900, "y":-1000, "z":0 } } },
Property description:
LockdownN | The default name of spawn point can be defined by yourself. |
---|---|
rotation | Indicates the deflection angle of the Spawn Point, 0-360 degrees is a clockwise deflection, -360-0 is a counterclockwise deflection. (Deflection angle: When creating a laser node at this point, the default orientation of the laser node will be consistent with the deflection angle of the anchor point) |
x | Determines the position of the coordinate point on the x-axis. |
y | Determines the position of the coordinate point on the y-axis. |
z | Determines the position of the coordinate point on the z-axis. (usually set to 0) |
● Laser Node Section
The laser node determines the behavior of the laser, “movement type”, and related parameters such as laser length.
Section sample:
"laserNodeSpawnList":[ { "description": "1A", "spawnableCla*s": "1A", "nodeLifetime": -1, "laserDuration": 12, "laserScaleBase": 0.25, "nodeRemainsUntilIdx": -1, "unlockedByPowerup": "PT_Count", "affectedByExpand": false, "expandScale": 1, "laserGapSpawningEnabled": false, "laserGapPowerupsIgnored": false, "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,
Property description:
Laser Node
description | Maximum 128 characters | Describe |
---|---|---|
spawnableCla*s | Non empty | Please refer to the Laser type table – [steamcommunity.com] |
nodeLifetime | SUG: -1/(10 – 30) | The existence time of the laser node, -1 means forever. |
laserDuration | SUG: -1/(5 – 15) | The duration of the laser active state, -1 means forever. |
laserScaleBase | SUG: (0.1 – 0.8) | Laser scaling, you can adjust the length of the laser.Reference: Laser scaling is 1, laser length: 2500uu. |
nodeRemainsUntilIdx | -1/(0<=,<=Maximum laser node number) | Laser nodes remain until a specified laser node appears. -1 for none. |
unlockedByPowerup | Power-up type | Set whether the laser node is activated by the specified power-up prop.Power-up type table – [steamcommunity.com] |
affectedByPowerdown | true / false | Choose whether lasers are affected by power-ups. |
powerdownScale | (0, qualified integer) | Set the ratio of the effect of power-up props to the laser. |
affectedByExpand | true / false | Whether this laser node is affected by Power-up – Expand.(Extended: Affects laser length multiples) |
expandScale | SUG: (1 – 8) | Set the effect of Power-Up – Expand on the laser length multiplier. |
laserGapSpawningEnabled | true / false | Select whether there is a default laser gap. |
laserGapPowerupsIgnored | true / false | Whether the laser gap is not affected by Power-up-Segment |
laserGapsPerBeam | SUG: (0 – 8) | The number of laser gaps per laser wall, -1 means none. |
laserGapSpacing | SUG: (0 – 500) | The length of the Laser between gaps, -1 means none. |
laserGapLength | SUG: (200 – 800) | Laser gap length, -1 means none. |
movementStartsWhenSpawned | true / false | Choose whether to start the movement immediately after it is spawned. |
movementType | movementType | movementType. Movement Type table – [steamcommunity.com] |
movementPathPointsName | Spawn point name | Configure the movement path of the laser node, and the laser node will move to each spawn point in sequence. #The first point is the spawn location of the laser node. |
movementSpeed | SUG: (300 – 600) | RotateToPath: Sets the movement speed of the laser node. |
rotationType | rotation type | Sets the rotation type of the laser node.Rotation Type table – [steamcommunity.com] |
rotateToPathSpeed | SUG: (0- 30) | RotateToPath: Laser node rotation speed. |
rotateToPointName | Point | The target orientation of the laser node rotation. |
rotateToActorLengthPolicy | Laser wall length rules | Laser wall length rules for target cla*s rotation. |
rotateIntervalStartAngle | SUG: (-360 – 360) | Angle interval cla*s rotation: The starting angle of the rotation. |
rotateIntervalEndAngle | SUG: (-360 – 360) | Angle interval cla*s rotation: The end angle of the rotation. |
rotationSpeedMultiplier | SUG: (0 – 30) | Angle interval cla*s Rotation speed factor. |
spawnGroup | -1 | Spawn group ID. Leave it for -1 |
delay | SUG: (0-60) | Set the spawn delay for laser nodes. This laser node will spawn delayed after the previous laser node spawned. |
Laser Node sequence properties (Global Parameters for Laser Nodes)
laserNodeRepeatFrom | Set whether a loop is required after the laser sequence is all run, and the starting point of the loop. -1 means do not loop. (The laser serial number starts with 0) |
---|---|
laserGapsPerBeam | The number of laser gaps per side of the laser is limited. |
laserGapSpacing | The length of the Laser between gaps, -1 means none. |
laserGapLifetime | Duration of the laser gap. |
laserGapLength | The length of the laser gap. |
laserGapStartLocationX | The starting position of the laser gap relative to the laser node. |
Notes:
Create a laser node 1A, the laser type is 1A, the laser node is permanent, the laser activation lasts 12s, the laser scaling is 0.25, the movement path is 1A-1B, the movement speed is 400, the laser wall gap limit is 2, the laser gap interval is 800, and the laser gap is permanent , the length of the laser gap is 500, and the starting position of the laser gap is 200.
Additional Notes:
1. When using Power-up Item-Lockdown, the corresponding spawn point and laser node [LockdownN/E/S/W] must be added to generate the partition wall.
2. When using power-up props, the cor
Syntax description – power up, map and ID
● Power-up Section
For the power-up items that are refreshed randomly in the arena, you can select the type of power-up items to be added, configure the refresh time of the power-up items, and other related information.
Section sample:
"powerupSpawnList":[ { "powerupType":"PT_LockDown", "duration":0, "lifeTime":6, "randomSpawnPointList":["1A","1B"], "delay":10 } ], "powerupRepeatFrom": 0, "labsolabsolutedelaye,
Property description:
Power-up
powerupType | power-up Type table – [steamcommunity.com] | |
---|---|---|
duration | -1/(0<,<+∞) | The duration of the power-up item after activation. -1 means never ends. |
lifeTime | -1/(0<,<+∞) | The lifetime of this power-up item after it was created. -1 means permanent. |
randomSpawnPointList | Spawn point name | Multiple spawn points can be set. #If the list is none, the powerup will spawn randomly among all of the powerupspawnpoints. |
delay | (0<=,<+∞) | Set power-up spawn delay. This power-up will appear delayed after the previous power-up spawned. |
power-up sequence attribute (global parameter for power-up props)
powerupRepeatFrom | Set whether a loop is required after the power-up props sequence is all run and the starting point of the loop. -1 mea e number starts with 0. |
---|---|
absolutedelay | Set whether the power-up item spawn delay is absolute value true / false. |
Notes:
When using power-up Item-Lockdown, the corresponding spawn point and laser node [LockdownN/E/S/W] must be added to generate the partition wall.
The absolutedelay property affects the delay property of the power-up prop.
absolutedelay = true; power-up spawn delays are calculated from the start of the sequence.
absolutedelay = false; The power-up spawn delay will be calculated from the time the previous power-up item is built.
When using Power-up Item-Lockdown, the corresponding spawn point and laser node [LockdownN/E/S/W] must be added to generate the partition wall.
● Power-up Spawn Point and Additional Information
Power-up Spawn Point is an important stat for controlling where power-up props are spawned.
Section sample:
"powerupSpawnPointList":{ "PowerupSpawnPoint_4":{ "rotation":0, "translation":{ "x":-966, "y":360, "z":0 } }, }
Property description:
PowerupSpawnPoint_4 | Power-up Spawn Point name, you can customize the name according to your needs. |
---|---|
rotation | Indicates the orientation of the power-up spawn point, 0-360 degrees is a clockwise deflection, -360-0 is a counterclockwise deflection. (usually set to 0). |
x | Determines the position of the power-up Spawn Pointx axis. |
y | Determines the position of the power-up Spawn Pointy axis. |
z | Determines the position of the power-up Spawn Pointz axis. (usually set to 0) |
Notes:
Create Power-up spawn point PowerupSpawnPoint_4 with position (-996, 360, 0).
2. Syntax Explanation – (info.json)
● Map information
Module content and examples:
{ "pattrenName":"Wakame", "description":"test", "defaultStadium":"Beyond", "author":"teay_p1", "version":"1.0", "descriptionText":"", "coverimg":"Waka.png", }
Property description:
pattrenName | New map name. |
---|---|
description | Add a description to your map. |
defaultStadium | Set up the stadium. Stadium table – [steamcommunity.com] |
author | Enter the author’s name. |
version | Your version number. |
descriptionText | You can give a brief description of the features of the created map. |
coverimg | Fill in your preview image name, players will see it in the game, you need to place the preview image under the map folder. #The image format is .png. |
Notes:
PattrenName: Wakame
Description: test
Stadium: Beyond
Author: teay_p1
Version: 1.0
Preview image: Waka1.png
3. Syntax Description – (onlineinfo.json)
● Steam file ID
Module content and examples:
{ "steamFileId": "2800667806", "updateTime": "0" }
Property description:
steamFileId | Steam file ID |
---|---|
updateTime | Update time (timestamp format) |
Notes:
Steam file ID: 2800667806
Update time: 2022-04-28 21:11:11
Additional Notes:
Querying Steam File ID
Test and Iterate
1. Test modification
- ● After saving the map file, start the LL client, and you will see the created map project in: MODE SELECTION > CUSTOM LEVEL
- ● In the above interface, you can choose to start a local match to test the map.
2.Iterate the map
When you modify the map outside the game, you can refresh your map data by reloading without exiting the game.
- ● Map data information: Click the refresh button on the left in the map list to refresh the data of the corresponding map.
- ● Basic map information: Exiting the custom level page and re-entering it will refresh the basic information of the map.
Workshop process
● After confirming that the map has been created and ready to share, online items can be created and published to the workshop through in-game publishing. If you no longer need to share, you can hide or delete it through the steam workshop.
1.Status in the map list
Local level map
Local level map that has created the item on workshop
Custom levels from Subscribed
2.Create online items
Maps in local state will create online items to the Workshop the first time they are clicked to publish.
3.Release & Update
Fill in the necessary information on the game’s release page and click the button on the page to release and update. If the release is successful, it will jump to the creative workshop page of the map.
#Note: After the local map is published successfully, it will still be reserved for the next modification and update. If you subscribe to your own published maps, both the subscribed version and the local version will exist in your map list. Please modify, update and publish through the local version.
4. Get map
● You can automatically get maps published by other players by subscribing in the creative workshop.
● You can also place maps shared by others in the Content\Mod\Levels directory of the game.
5. Delete
● To delete the acquired map, please unsubscribe and delete the corresponding map folder in the game directory Content\Mod\Levels.
● If it is a local map, just delete the corresponding file directly.
Common Problem
1. Common reasons for creation failure
- ● Check the internet connection with steam
- ● Check if the account is restricted
- ● Check if Steam Cloud Quota is full
2. Common reasons for publishing failures
- ● Check the internet connection with steam
- ● Check if the fileID in the map’s onlineinfo is wrong
- ● Check if the preview image is too large, or the post contents are illegal
3. The game crashes
- ● Check the required options in the pattern.json file to see if the data is legal.
4. Contact us
- QQ :296149272
- Weibo:@中电博亚
- Bilibili:@中电博亚CE-Asia
- Discord:https://discord.gg/laserleague – [discord.gg]
This is all we can share for CustomLevel Guidelines V1.0 – Laser League: World Arena for today. I hope you enjoy the guide! If you have anything to add to this guide or we forget something please let us know via comment! We check each comment! Don’t forget to check SteamClue.com for MORE!
- All Laser League: World Arena Posts List
Leave a Reply