-
Notifications
You must be signed in to change notification settings - Fork 129
Stage features
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.
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 BGCtrl
s 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 theBoundHigh
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 theVerticalFollow
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