Currently, the level editor opens only 1 file, which is CurrentLevel.butt, this will be in ESJ2_Data/StreamingAssets/
You can open it with any text editor, such as Notepad, Text Edit, Visual Studio, or… anything that can open a .txt file.
The level format is made up of entities, each of which have parameters. Each parameter has a name and a value.
Entities
As a best practice, entities should begin with a type
parameter, and must end with a semi-colon ;
separator. This entity has 3 parameters: type
, x
, and y
.
type:block,x:3,y:0;
Parameters
Parameters are made up of two parts: a name, and a value. Each entity can be defined by many parameters, each separated by a comma ,
. Parameter names and values are separated by a colon :
.
type:block
x:3
y:-38
Default Values
All parameters have default values, omitting them will use that default value. For example, the following entity creates a block at position (5, 0), since the y-position is set to zero by default.
type:block,x:5;
This example will create a block, at world position (3, 4) that is 3 units tall (that is to say, 3 times the height of a “normal” block.) In this scenario, xScale
and yScale
have a default value of 1, and we are overriding the value of yScale
.
type:block,x:3,y:4,yScale:3;
Prefabs
You can define your own prefabs by adding the prefab
parameter to an entity definition. As a best practice, define prefabs with the prefab parameter first.
prefab:42,type:NinjaStar,speed:3;
This prefab can now be referenced in certain places by the number 42 (such as when defining a Frog entity.)
See also Bullet Types below.
Common Parameter Definitions and Default Values
- type (string : None)
- Signifies which entity the game will create when loading the level.
For a list of possible types, see types below.
- x (float : 0.0)
- The x-position (in world space) that the entity will spawn.
- y (float : 0.0)
- The y-position (in world space) that the entity will spawn.
- [pos|position] (Vector2 : 0.0, 0.0)
- This is a shorthand for setting x and y separately
pos:1/20
will create an entity at world position (1, 20).
- zPos (float : type-dependant)
- Set the depth that the entity will be drawn. A value of 0 or less will be drawn behind the camera and invisible to the player.
- xScale (float : 1.0)
- Set the width of an entity relative to its default size.
- yScale (float : 1.0)
- Set the height of an entity relative to its default size.
- scale (Vector2 : 1.0, 1.0)
- Shorthand for setting
xScale
and yScale
. Example: scale:3/3
creates an entity 3 times its normal size.
- tilt (float : 0.0)
- Number of degrees to rotate an entity. Ignored for Block types.
- prefab (integer : -1)
- Contains the prefab’s id number (can be any number) to identify it. example: prefab:77
- speed (float : type-dependant)
- How fast something moves, if it is supposed to move.
- createLate (float : 0.0)
- A time in seconds to delay the creation of an entity after a level loads.
Types
- PlayerSpawn
-
Spawns the player.
- Block
-
A solid thing to stand on. Cannot be tilted.
- SpikeBall
-
A spiky hurty thing.
- Portal
-
Creates an end-of-level portal.
This type has custom parameters:
- destinationLevel (string : None)
- Takes you to a developer-created level, if you know the file name.
- destinationButt (string : None)
- Overrides
destinationLevel
if present.
Loads a custom .butt file with the provided name, you may omit the extension.
- noSound (bool : false)
- Determines if the portal makes that tinkling sound. Set to
true
to silence the portal.
- SetSky
-
An invisible object that configures the sky’s colour when it’s created.
This type has custom parameters:
- color1 (Color : 0, 0, 0)
- Sets the colour at the top of the screen.
color1:255/255/255
will be white.
- color2 (Color : 0, 0, 0)
- Sets the colour at the bottom of the screen
color2:0/0/0
will be black.
- skyBands (integer : 0)
- Determines the number of “bands” or “steps” that will divide the sky. A value of 0 or 1 will result in a smooth gradient between
color1
and color2
.
Many original ESJ levels use a value or 6 or 8.
- SetMusic
-
An invisible object that sets the music when it’s created.
This type has custom parameters:
- int1 (integer : 0)
- Selects which track to play.
- None
- ENV_1
- ENV_5
- ENV_8222
- ENV_AbsoluteZero
- ENV_Darkas
- ENV_FutureShock
- ENV_GenericTechno
- ENV_GreenWithMe
- ENV_Rokits
- ENV_Shakestopper
- ENV_ThisSound
- ENV_TwoStep
- ENV_WobbleWobble
- ENV_Valkyrie
- GetSix_NoInterruptions
- GetSix_Valhalla
- Reptiore_Butter
- Reptiore_GatorRaid
- Reptiore_OmegaHauzer
- Reptiore_SomeRegrettablyOffensiveShit
- Ability Shrines
-
These are likely to change in a future update
- ShrineDoubleJump
- ShrineTripleJump
- ShrineQuintupleJump
- ShrineButtSmash
- ShrineAirSword
- ShrineRemoveAbilities
- Frog
-
Creates a frog entity.
This type has custom parameters:
- ammo (integer : -1)
- The prefab id number of the ammo you wish this frog to fire see Bullet Types below.
- firingDelay (float : 2.0)
- Time in seconds between how slowly a frog fires bullets/missiles
- Laser
-
Creates a single laser
This type has custom parameters:
- speed (float : 0.0)
- Speed the laser will spin
- QuadLaser
-
Creates a 4-way laser in an X shape.
This type has custom parameters:
- speed (float : 15.0)
- Speed the laser will spin
- Coin
-
A coin you can collect!
- BounceArrow
-
An arrow you can bounce on once before it disappears.
- Firestick
-
A line of rotating spikeballs.
This type has custom parameters:
- speed (float : 200.0)
- the speed at which the firestick will rotate.
- MovingSpikePlatform
-
A block with spikes on three sides. It’s upsidedown for some reason, so if you want to stand on it, set tilt:180
.
This type has custom parameters:
- tilt (float : 0.0)
- Rotates the platform. Setting this to non-90-degree increments will probably break things.
- nodePos (Vector2 : 0.0/0.0)
- Sets the world position that the platform will move to from its starting position.
- speed
- The time in seconds it takes the platform to move from
pos
to nodePos
.
- easing
- The type of easing to apply to the platform’s movement.
0: Linear movement
1: Sine easing
- Particles
-
Creates a particle system.
This type has custom parameters:
- mesh (enumeration : None)
- Possible values:
- Cube
- Square
- Star
- FourPointStar
- Diamond
- Circle
- Triangle
- emissionPerSecond (float : 10.0)
- Number of particles per second
- speedMin (float : 5.0)
- How fast they move (minimum this amount.)
If you want all particles to move at speed 5, set both speedMin
and speedMax
to 5.
- speedMax (float : 5.0)
- how fast they move (up to this amount)
- startSizeMin (float : 5.0)
- the minimum starting size for each particle
- startSizeMax (float : 5.0)
- the maximum starting size for each particle
- lifespanMin (float : 5.0)
- the minimum time before each particle dies
- lifespanMax (float : 5.0)
- the maximum time before each particle dies
- rotationMin (float : 0.0)
- The minimum amount each particle will rotate
- rotationMax (float : 0.0)
- The maximum amount each particle will rotate
- shape (enumeration : Box)
- Shape of the emitter. Possible values:
- shapeScaleX (float : 1.0)
- how wide the shape is
- shapeScaleY (float : 1.0)
- how long the shape is
- shapeScaleZ (float : 1.0)
- how deep the shape is
- color1 (Color : 0, 0, 0)
- the first color of the particle. uses an additive material so darker colours will be transparent instead.
- color2 (Color : 0, 0, 0)
- the second color of the particle. Particles will fade towards this color.
- alpha[1-5] (float : 0.0)
- Five alphas states of the particle.
Each particle will fade between all of these alphas, valid values between 0.0-1.0.
- CameraTrigger
-
Configures the camera.
This type has custom parameters:
- cameraState (enumeration : None)
- Possible Values:
- HorPush
- VerPush
- Pos
- HorScrolling
- VerScrolling
- HorScrollingWithBumpRight
- VerScrollingWithBumpUp
- HorPushWideBox
- SlowPos
- HorPushLookAhead
- HorVerPush
- VerySlowPos
- VerPushHighBox
- InstaPos
- nodePosX
- Used for
cameraState:Pos
, moves the camera to the specified x-position.
- nodePosY
- Used for
cameraState:Pos
, moves the camera to the specified y-position.
- nodePos
- Shorthand for
nodePosX
and nodePosY
. Example: nodePos:3/-8
- track
- The x or y that the camera slides along, in Scrolling or Push modes.
- minX (float : -Infinity)
- The minimum x-position that the camera can be. Allows limiting scrolling or push cameras.
- minY (float : -Infinity)
- The minimum y-position that the camera can be. Allows limiting scrolling or push cameras.
- min (Vector2 : -Infinity, -Infinity)
- Shorthand for setting
minX
and minY
Example: min:20/0
sets minimum x-position to 20, and minimum y-position to 0.
- maxX (float : Infinity)
- The maximum x-position that the camera can be. Allows limiting scrolling or push cameras.
- maxY (float : Infinity)
- The maximum y-position that the camera can be. Allows limiting scrolling or push cameras.
- max (Vector2 : Infinity, Infinity)
- Shorthand for setting
maxX
and maxY
Example: max:100/20
sets maximum x-position to 100, and maximum y-position to 20.
Bullet Types
These types are most suitable for use as ammo for Frogs.
- NinjaStar
-
A bullet type
This type has custom parameters:
- lifespan (float : 2.0)
- Time in seconds the bullet will live before disappearing
- speed (float : 5.0)
- The bullet’s speed.
- RoundBullet
-
A bullet type you can airsword off of
This type has custom parameters:
- lifespan (float : 3.0)
- Time in seconds the bullet will live before disappearing
- speed (float : 5.0)
- The bullet’s speed
- HomingMissile
-
A bullet type. – Homing missile that turns to chase the player.
This type has custom parameters:
- lifespan (float : 8.0)
- Time in seconds the bullet will live before disappearing
- speed (float : 7.0)
- The bullet’s speed
- turningSpeed (float : 55.0)
- How fast homing missiles turn.
- SpikyHomingMissile
-
A bullet type – Homing missile you can’t kill with airsword (It’s spiky.)
BUG: The player shouldn’t be able to kill this type with double jump, but currently can.
This type has custom parameters:
- lifespan (float : 8.0)
- Time in seconds the bullet will live before disappearing
- speed (float : 7.0)
- The bullet’s speed
- turningSpeed (float : 55.0)
- How fast homing missiles turn.