Skip to content
K4thos edited this page Jan 29, 2025 · 49 revisions

Some stage parameters are carried over from MUGEN, but with their functionality altered.

zoomdelta = dzoom_x, dzoom_y (float, float)
Specifies the amount that the camera zoom affects the scale of the element. Defaults to 1,1.

The second item of zoomdelta is not read in MUGEN 1.1, but here it is processed as Y direction zoomdelta. If omitted, the same value as the first item is entered and the same processing as MUGEN 1.1 is performed.

layerno (nightly build only)

layerno = layer_number (int)
Specifies the stage layer on which the element will be drawn

In addition to 0 and 1, this parameter now also accepts -1.
Elements in layer -1 will be drawn behind layer 0. While this does not alter stage functionality itself, it can allow characters to be drawn between the elements in those two layers.

Note: For the sake of backwards compatibility, currently this feature only works in stages with ikemenversion.

MUGEN 1.1 has a bug that SinX and SinY of a BGctrl ignore the BGCtrlDef looptime. Therefore, in Ikemen GO, the movement of SinX and SinY of a stage created with MUGEN 1.1 in mind may look strange. This can be solved by matching the looptime of BGCtrlDef and the two items (period) of the value of SinX and SinY.

⚠️ Removed in nigthly. Nigthly build matches MUGEN 1.1 behavior and the Skipped zoomout processing of boundhigh described in this section below no longer applies. Use the new BoundHighZoomDelta nightly camera parameter to bring back this behaviour in a parametrized manner.

Ikemen v0.99.0 and below: the lack of boundhigh zoomout correction is the intended behavior. Reasoning: in MUGEN 1.1, boundhigh changes with zoomout, but the value to be corrected varies per stage, so it can't be done automatically due to the varying zoomdelta of the background layer that determines the boundhigh of the stage. For boundright and boundleft, there is almost always a background layer with a reference zoomdelta of 1, so the value that is shifted due to zoomout is constant. For boundhigh, the zoomdelta of the layer is set to 0.2 or 1. Furthermore, it cannot be determined just by reading the def which layer determines the boundhigh. In MUGEN 1.1, there is a bug that the stage does not reach the display limit unless it is in the maximum zoomout state, and in some cases, boundhigh is set according to this. Also, some creators set boundhigh ignoring the zoomout bug of 1.1.

Same parameters as [Shadow] group (nightly build only)

In addition to layerno, [Reflection] now supports all of the same parameters as the original [Shadow] group (Color, YScale, and XShear).

layerno (nightly build only)

layerno = layer_number (int)
Specifies the stage layer on which the reflection will be drawn

Stage reflections can now use layerno = -1 in order to draw the reflections behind layer 0. This allows reflection effects such as watter puddles.

offset = offset_x, offset_y (float, float)
Specifies the offset at which reflections will be drawn.

The offset parameter will offset the player's reflection by offset_x,offset_y amount.

The color parameter will be disabled if the stage's mugenversion is 1.1 and its ikemenversion is 0.

offset = offset_x, offset_y (float, float)
Specifies the offset at which shadows will be drawn.

The offset parameter will offset the player's shadow by offset_x,offset_y amount.

Below are new parameters exclusive to Ikemen GO.

AutoResizeParallax = resize_flag (boolean)
Set to 1 to auto correct the parallax size when zooming out. Defaults to 0.

Specifies whether to automatically adjust the size of the parallax when zooming out. Omitted by default. By setting this to 0 and specifying ZoomDelta, you can reproduce the same behavior as when the parallax zooms out in MUGEN 1.1.

XBottomZoomDelta = xzoom (float)
Specifies the X scale reduction rate of the bottom edge of the image when zooming out. Omitted by default.

This BG layer parameter is meant to be used as a counter measure against phenomenon where the X scale on the bottom surface becomes abnormally small and freezes when it is severely zoomed out on a stage using parallax (this behavior is according to specification, not a bug). The parameter works only if AutoResizeParallax is set to 1.

ZoomScaleDelta = zscale_dx, zscale_dy (float, float)
Reverse-correction of ZoomDelta. Defaults to 0,0.

A parameter for the BG layer. Can apply an inverse correction to Zoomdelta. Mainly used to correct the distortion of the image ratio when zooming out. Reads two values for x and y, and it is also possible to apply the inverse correction only to one side by omitting one.

Works like char PalFX, but for background elements instead. The effect gets applied permanently, due to how BGCtrls work, so, to reset it, you just simply have to declare it with empty parameters, as all of them are optional. Using BGPalFX in a char will temporarily override all PalFX BGCtrl.

Example syntax:

TODO

Remaps a palette from stage sff file to another palette from the same file. This can be used to perform static palette changes without having to duplicate sprites, and be able to remap palettes dynamically using ModifyBGCtrl. Example syntax:

[BGCtrl 1]
type = RemapPal
time = 200
source = 0,0
dest = 2,5

sctrlid = ID (int)

Specifies an ID number to refer to this background controller block by. This is used to allow a character's ModifyBGCtrl state controller to specify which of the stage's background controller should be affected. Different background controller elements can share the same ID number if necessary.

RoundPos = round_flag (bool)

Set to 1 to round the position of background elements to floor, emulating the behavior of older MUGEN versions. Defaults to 1 if mugenversion is below 1.0 and ikemenversion is 0, i.e., for older stages. Otherwise defaults to 1.

This parameter can also be used in an individual background element ([BG] block).

AutoCenter (nightly build only)

[TODO] Always try to keep the camera centered between the characters. When this parameter is enabled, the Tension value is only used to calculate the camera zoom.

BoundHighZoomDelta (nightly build only)

BoundHighZoomDelta = bg_y_delta (float)
Set to a value >0 to extend the BoundHigh when the camera zooms in. Defaults to 0.

Related to how camera worked in Ikemen GO v0.99.0 and older.

Automatically increases BoundHigh when the current camera zoom is not at minimum (ZoomOut), allowing more of the stage to be seen. Default value is 0 (constant BoundHigh). For values above 0, a value closer to 0 means a greater difference, as this value can be interpreted as the horizontal (y) delta of a stage background (BG) that determines the appropriate BoundHigh for the stage, if the ZoomDelta of this is equal to 1.

For example, if a background that determines the BoundHigh uses only vertical (y) delta and does not specify ZoomDelta, then you only need to set BoundHighZoomDelta to the exact value of the vertical (y) delta of the background. If the background has:

[BG Sky]
Type = normal
SpriteNo = 0, 0
Start = 0, 0
Delta = 0.5, 0.7

Then you need to set:

[Camera]
BoundHighZoomDelta = 0.7

For backgrounds using either only ZoomDelta or both ZoomDelta and vertical (y) delta the appropriate value needs to be adjusted manually. Some example follow, but you may still need different for different stages:

  • ZoomDelta = 0.7 => BoundHighZoomDelta = 1.95,
  • ZoomDelta = 0.4 => BoundHighZoomDelta = 4.7,
  • ZoomDelta = 0.7, Delta=?, 0.7 => BoundHighZoomDelta = 1.375.

VerticalFollowZoomDelta (nightly build only)

VerticalFollowZoomDelta = vf_zoom_delta (float)
Set to a value >0 to increase the VerticalFollow when the camera zooms in. Defaults to 0.

Automatically increases VerticalFollow when the current camera zoom is not at minimum (ZoomOut). Default value is 0 (constant VerticalFollow). For values above 0, the value of VerticalFollow is increased by the amount of current_zoom_in multiplied by vf_zoom_delta, where current_zoom_in is the difference between the current camera zoom value and the minimum camera zoom (as set by ZoomOut).

Far (nightly build only)

[TODO] Related to 3D models.

LowestCap (nightly build only)

[TODO] Related to how camera worked before Ikemen GO 1.0.

Near (nightly build only)

[TODO] Related to 3D models.

Sets default tension correction speed, or how fast the camera will track the players horizontally. Differences can be noticed when a character teleports from one side of the screen to another in the x-axis. Defaults to 1.

This parameter also affects how fast the stage camera will zoom.

YShift (nightly build only)

[TODO] Related to 3D models.

Toggles tensionhigh and tensionlow functionality on or off. Defaults to 1.

YScrollSpeed (nightly build only)

YScrollSpeed = speed_factor (float)
Set to a value between 0 and 1 to slow down the speed at which the camera scrolls vertically. Defaults to 1.

This parameter can be used to unconditionally slow down the speed at which the camera scrolls vertically. The rate of change of the camera's y position is simply multiplied by the set speed_factor at each frame. The default value is 1, which is the fastest speed, matching MUGEN 1.1.

This can be applied e.g. to slow down vertical scrolling when the camera is in the Y Tension mode (when TensionLow and TensionHigh are set), as the value of VerticalFollow is not applied in this case, especially if a zoom slowdown was also applied using parameters such as TensionVel or ZoomOutSpeed.

This parameter brings back previous zoom out behavior from Ikemen GO 0.98.2. When the ZoomAnchor paramater is set to bottom, an "anchor" is placed in the bottom side of the screen, preventing the zoom to go beyond that. Any other parameter will default to center (Mugen 1.1 behavior).

ZoomInDelay (nightly build only)

[TODO] Makes the camera wait the specified number of frames before zooming in.

ZoomInSpeed (nightly build only)

ZoomInSpeed = speed_factor (float)
Set to a value between 0 and 1 to slow down the speed at which the camera zooms in. Defaults to 1.

This parameter can be used to unconditionally slow down the speed at which the camera zooms in. The rate of change of zoom is simply multiplied by the set speed_factor at each frame. The default value is 1, which is the fastest zoom speed, matching MUGEN 1.1.

ZoomOutSpeed (nightly build only)

ZoomOutSpeed = speed_factor (float)
Set to a value between 0 and 1 to slow down the speed at which the camera zooms out. Defaults to 1.

This parameter can be used to unconditionally slow down the speed at which the camera zooms out. The rate of change of zoom is simply multiplied by the set speed_factor at each frame. The default value is 1, which is the fastest zoom speed, matching MUGEN 1.1.

As opposed to TensionVel, this will forcibly keep the zoom out slow, so setting it too low can cause fast moving characters to be blocked by the screen edge before the camera fully zooms out.

Stages in Ikemen GO can have float type constant variables set under stage's DEF [Constants] section. In-game these constant variables are detectable by all characters via StageConst trigger. Constant variable names should not have spaces and brackets.

[Constants]
WaterGround = 1

The character with the specified path appears as the character on the stage side. The main use is to allow stages to realize functions that cannot be implemented with stage DEF file alone, such as stage interactivity.

This extra character is not taken into account for anything match related (not rendering lifebar, doesn't have to be beaten to finish the round, is not killable, is not part of P1 or P2 team). TeamSide trigger returns 0 for this character. AttachedChar initially begins in standby mode ("Tagged Out"). They must be tagged in prior to being able to interfere with characters via RedirectID.

Hint: Use AssertSpecial sctrl in order to turn the attached character invisible and/or make it not affecting the camera/pushboxes. RedirectID may be useful for creating stage interactions.

Example:

AttachedChar = stages/myStage/stageInteraction.def

Identifies which engine version the stage was made for. May alter behavior of certain features.

RoundXDef parameters can be used to preload more than 1 stage before match and swap to it at particular round. X in parameter name refers to round number and the parameter points to stage DEF file. The last loaded stage remains if the next round doesn't have RoundXDef parameter assigned. The specified path can be relative to the main stage DEF file, data directory, or top ikemen directory.

Note: Values read from the RoundXDef, AttachedChar and Music sections will be read from the main stage instead of each individual preloaded stage. This means that, for instance, you should define the music that plays in each round in the main stage DEF file rather than in each individual stage.

Hint: The main stage itself can be either a normal stage (in such case assigning round1def parameter doesn't make much sense) or a "shell" for example with only [Info] and [Music] sections, if it's meant to be used just to load particular RoundXDef parameters combination.

Example:

round1def = stages/kfm.def
round2def = stages/kfm_evening.def
round3def = stages/kfm_night.def

If set to 1, main stage, as well as stages loaded via RoundXDef parameters, will show up in ascending order (regardless of round numbers assigned in RoundXDef parameters), looped over if needed.

[Model] (nightly build only)

[TODO]

Allows the stage to load a 3D model.

Behaves like bgmusic, but refers to a track that should play on the final round.

Optional adjustments:

  • bgmloopstart.final
  • bgmloopend.final
  • bgmvolume.final

Behaves like bgmusic, but refers to a track that should play on the round specified in the parameter's name (e.g. bgmusic.round2 would play on the second round).

Optional adjustments:

  • bgmloopstart.roundX
  • bgmloopend.roundX
  • bgmvolume.roundX

Like bgmusic but refers to track that should trigger when the character's life reaches certain percentage value. This feature can be expanded via select.def musiclife character and stage parameters.

Optional adjustments:

  • bgmratio.life: percentage of life that should trigger bgmusic.life track (30% by default)
  • bgmtrigger.life: 0 = music triggers only when character is at risk of being eliminated (there won't be next round when he/she lose), 1 = music triggers in all rounds
  • bgmloopstart.life
  • bgmloopend.life
  • bgmvolume.life

Like bgmusic but refers to track that should trigger right after the final round K.O. and continue throughout the victory screen. This feature can be expanded via select.def musicvictory character and stage parameters.

Optional adjustments:

  • bgmloopstart.victory
  • bgmloopend.victory
  • bgmvolume.victory

PartnerSpacing (nightly build only)

  • Specifies amount of pixels between team members at the round start (the value automatically takes stage localcoord into account) (default: 25)
partnerspacing = 15

Startx (P5-P8) (nightly build only)

  • Sets the starting x-position, now supporting values for up to 8 players.
p6startx = 100

Starty (P5-P8) (nightly build only)

  • Sets the starting y-position, now supporting values for up to 8 players.
p7starty = 20

Startz (nightly build only)

  • Sets the starting z-position (used with z-axis), now supporting values for up to 8 players.
p1startz = -20

Facing (P5-P8) (nightly build only)

  • Controls which way Players faces at the start, now supporting values for up to 8 players. Set to 1 to face right, or -1 to face left.
p8facing = -1

DepthToScreen (nightly build only)

Determines how a player's Z position affects their Y offset on screen, enabling finer control of perspective. Defaults to 1, which means 1 pixel in Z space equates to 1 pixel in vertical screen space.

Example:

depthtoscreen = 0.5; For every 2 pixels in Z space, player is offset 1 pixel in vertical screen space

Specifies the display scale of the portrait for screenpack rendering. This value overwrites localcoord-compliant display scale.

portraitscale = 1.0

Similarly to how characters can have a portrait, stages can have a portrait displayed on the select screen. Stage portraits are stored in the SFF file of the stage in question, using the index 9000, 1 and a default resolution of 240x100. The index used can be changed in system.def if desired.

Z Axis (nightly build only)

Returning all the way back from the beta versions of DOS Mugen, characters can move in the Z axis if a stage allows it. That means the following stage parameters are once again operational:

[PlayerInfo]
topbound  =  -50    ;Top bound (z-movement)
botbound  =  50     ;Bottom bound

[Scaling]
topz     = 0       ;Top z-coordinate for scaling
botz     = 50      ;Bottom z-coordinate for scaling
topscale = 1       ;Scale to use at top
botscale = 1.2     ;Scale to use at bottom
Clone this wiki locally