CustomLevel Guidelines V1.0 – Laser League: World Arena

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.jsonCompetition venue information file
pattern.jsonMap 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:

LockdownNThe default name of spawn point can be defined by yourself.
rotationIndicates 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)
xDetermines the position of the coordinate point on the x-axis.
yDetermines the position of the coordinate point on the y-axis.
zDetermines 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

descriptionMaximum 128 charactersDescribe
spawnableCla*sNon emptyPlease refer to the Laser type table – [steamcommunity.com]
nodeLifetimeSUG: -1/(10 – 30)The existence time of the laser node, -1 means forever.
laserDurationSUG: -1/(5 – 15)The duration of the laser active state, -1 means forever.
laserScaleBaseSUG: (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.
unlockedByPowerupPower-up typeSet whether the laser node is activated by the specified power-up prop.Power-up type table – [steamcommunity.com]
affectedByPowerdowntrue / falseChoose whether lasers are affected by power-ups.
powerdownScale(0, qualified integer)Set the ratio of the effect of power-up props to the laser.
affectedByExpandtrue / falseWhether this laser node is affected by Power-up – Expand.(Extended: Affects laser length multiples)
expandScaleSUG: (1 – 8)Set the effect of Power-Up – Expand on the laser length multiplier.
laserGapSpawningEnabledtrue / falseSelect whether there is a default laser gap.
laserGapPowerupsIgnoredtrue / falseWhether the laser gap is not affected by Power-up-Segment
laserGapsPerBeamSUG: (0 – 8)The number of laser gaps per laser wall, -1 means none.
laserGapSpacingSUG: (0 – 500)The length of the Laser between gaps, -1 means none.
laserGapLengthSUG: (200 – 800)Laser gap length, -1 means none.
movementStartsWhenSpawnedtrue / falseChoose whether to start the movement immediately after it is spawned.
movementTypemovementTypemovementType.

Movement Type table – [steamcommunity.com]

movementPathPointsNameSpawn point nameConfigure 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.

movementSpeedSUG: (300 – 600)RotateToPath: Sets the movement speed of the laser node.
rotationTyperotation typeSets the rotation type of the laser node.Rotation Type table – [steamcommunity.com]
rotateToPathSpeedSUG: (0- 30)RotateToPath: Laser node rotation speed.
rotateToPointNamePointThe target orientation of the laser node rotation.
rotateToActorLengthPolicyLaser wall length rulesLaser wall length rules for target cla*s rotation.
rotateIntervalStartAngleSUG: (-360 – 360)Angle interval cla*s rotation: The starting angle of the rotation.
rotateIntervalEndAngleSUG: (-360 – 360)Angle interval cla*s rotation: The end angle of the rotation.
rotationSpeedMultiplierSUG: (0 – 30)Angle interval cla*s Rotation speed factor.
spawnGroup-1Spawn group ID. Leave it for -1
delaySUG: (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)

laserNodeRepeatFromSet 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)
laserGapsPerBeamThe number of laser gaps per side of the laser is limited.
laserGapSpacingThe length of the Laser between gaps, -1 means none.
laserGapLifetimeDuration of the laser gap.
laserGapLengthThe length of the laser gap.
laserGapStartLocationXThe 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

powerupTypepower-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.
randomSpawnPointListSpawn point nameMultiple 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)

powerupRepeatFromSet 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.

absolutedelaySet 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_4Power-up Spawn Point name, you can customize the name according to your needs.
rotationIndicates 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).
xDetermines the position of the power-up Spawn Pointx axis.
yDetermines the position of the power-up Spawn Pointy axis.
zDetermines 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:

pattrenNameNew map name.
descriptionAdd a description to your map.
defaultStadiumSet up the stadium.

Stadium table – [steamcommunity.com]

authorEnter the author’s name.
versionYour version number.
descriptionTextYou can give a brief description of the features of the created map.
coverimgFill 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:

steamFileIdSteam file ID
updateTimeUpdate 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

Written by philoPython-ZZ

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 XIXGO.COM for MORE!

Share This Article