Stage features - ikemen-engine/Ikemen-GO GitHub Wiki
Some stage parameters are carried over from MUGEN, but with their functionality altered.
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 new parameters, reflections now support all of the same parameters as the original [Shadow] group (color, yscale, and fade.range).
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 water 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.
window = x1, y1, x2, y2 (float, float, float, float)
Specifies the size of a rectangle relative to the stage
The window parameter forms a rectangle relative to the stage, outside of which reflections will not be drawn.
YDelta (nightly build only)
ydelta = delta (float)
Determines how closely the reflection will follow the player's movement in the y-axis. A ydelta value of 1 will make no change, a value of 0 will make the reflection not move in the y-axis, and other values scale linearly.
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.
window = x1, y1, x2, y2 (float, float, float, float)
Specifies the size of a rectangle relative to the stage
The window parameter forms a rectangle relative to the stage, outside of which shadows will not be drawn.
YDelta (nightly build only)
ydelta = delta (float)
Determines how closely the shadow will follow the player's movement in the y-axis. A ydelta value of 1 will make no change, a value of 0 will make the shadow not move in the y-axis, and other values scale linearly.
Below are new parameters exclusive to Ikemen GO.
AutoCenter (nightly build only)
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>0to extend theBoundHighwhen 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.7Then you need to set:
[Camera]
BoundHighZoomDelta = 0.7For 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 above 0 to increase theVerticalFollowwhen 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)
Define the far plane of the view frustum when the 3D model is rendered
fov (nightly build only)
fov= fov (float)
Field of view of the camera when the 3d model is rendered.
LowestCap (nightly build only)
Enabling this parameter allows the camera to also zoom out when players are close to each other but reach the vertical end of the stage.
Defaults to 0. Before Ikemen GO 1.0, the camera was hardcoded to act as if lowestcap = 1.
Near (nightly build only)
Define the near plane of the view frustum when the 3D model is rendered
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)
Define the y shift value of the camera when 3D model is rendered
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)
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 = 1The 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.defIdentifies 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.defIf 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)
Environment (nightly build only)
Environment= hdr_file (string)
Filename of a hdr file. Controls the image based lighting of the 3d model.
EnvironmentIntensity (nightly build only)
EnvironmentIntensity= environmentintensity (float)
Controls the contribution of image based lighting to the render result of the 3d model
Offset (nightly build only)
Offset= offset_x, offset_y, offset_z (float, float, float)
X, Y, and Z coordinates of the 3d model
Scale (nightly build only)
Offset= offset_x, offset_y, offset_z (float, float, float)
X, Y, and Z scale of the 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 = 15Startx (P5-P8) (nightly build only)
- Sets the starting x-position, now supporting values for up to 8 players.
p6startx = 100Starty (P5-P8) (nightly build only)
- Sets the starting y-position, now supporting values for up to 8 players.
p7starty = 20Startz (nightly build only)
- Sets the starting z-position (used with z-axis), now supporting values for up to 8 players.
p1startz = -20Facing (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 = -1DepthToScreen (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 spaceSpecifies the display scale of the portrait for screenpack rendering. This value overwrites localcoord-compliant display scale.
portraitscale = 1.0Similarly 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 bottomLoading Stages from ZIP Archives (nightly build only)
Similar to how Ikemen GO can load characters from ZIP archives, this functionality has been extended to stages. To load a stage from a ZIP archive, simply add the path to the .zip file under the [ExtraStages] section in your select.def file.
[ExtraStages]
; The engine will look for my_stage.def inside the zip
stages/my_stage.zipthe name of the stage's main definition file (.def) inside the archive must match the name of the ZIP file itself. For example, for an archive named heaven.zip, the engine will search for heaven.def inside it. The .def file can be at the root of the archive or inside a subdirectory that shares the same name, just like with characters.