detail extensions

From Wiki

Sword of Moonlight Extension Library

Revision as of 06:10, 6 May 2014 by Holy (talk | contribs) (removing removed pedal_ extensions)
Jump to: navigation, search


Extensions in this section complement those of the #Option section. Each Option extension takes the form do_..., where each Detail extension takes the form ..._... where the first parts (...) are identical to one another. If the Option extension is switched off the corresponding Detail extensions have no part to play.

alphafog_skyflood_constant

Introduced around 1.0.0.1, this extension is part of an effect that blends the horizon into the sky domes that are part of Sword of Moonlight. The sky is fully transparent at #alphafog_skyfloor_constant and becomes fully opaque as the vertical distance from the floor approaches 1 in sky model coordinates.

This constant can be thought of as scaling the sky along the vertical axis, so that the larger the scaling the slighter the gradient. The default value is 8.

Note that internally this value simply sets a shader preprocessor macro that is used by the default shader set. Values are limited to real numbers.[#]

Note: in order to fully disable this effect it is necessary to set this extension to a value of 0. Recall that the default behavior is particular to Sword of Moonlight sky domes. Care must be given to custom sky models.

alphafog_skyfloor_constant

Introduced around 1.0.0.1, this extension is part of an effect that blends the horizon into the sky domes that are part of Sword of Moonlight. The default value is -0.125 or the lowest point of the sky domes. Any part of the sky below this point will be made completely invisible as it blends into the horizon. Refer to #alphafog_skyflood_constant.

Note that internally this value simply sets a shader preprocessor macro that is used by the default shader set. Care must be given to custom sky models. Values are limited to real numbers.[#]

ambient_contribution

Introduced around 1.0.0.1, this extension sets the percentage of a lamp that is converted from diffuse to ambient light. The default percentage is not specified. Historically it is and has been 0.15, or 15%. This is unlikely to change, however it doesn't hurt to set this manually, even if 15% is alright with you. Some caution should be observed. Refer to #do_ambient. Values are limited to real numbers between 0 and 1.[#]

cursor_hourglass_ms_timeout

Introduced around 1.0.0.1, this extension establishes the number of milliseconds that a game may be "unresponsive" before an "hourglass" icon will be made to appear to indicate that the game is working behind the scene.

The default value is 0. Which is converted into an internal default timeout that has historically been fixed at 250ms, or a quarter of a second. You might need to use a larger value if the icon is a nuisance. Values are limited to positive whole numbers.[#]

Note that the game may or may not be working or may only be partially working. The real intent is to make the game appear responsive to put the player at ease and stop the Windows "not responding" protocol.

dash_jogging_gait

Introduced around 1.1.1.7, this extension establishes the dashing gait used when the player character is said to be jogging. The default gait is 3, or 50% speed. Once jogging the power gauge refills after a period of #tap_or_hold_ms_timeout during which the higher gaits up to but not including the final gait coalesce onto the jogging gait.

This gait also happens to be used when dashing sideways with a depleted power gauge. Similarly backwards dashing is a function of dash_jogging_gait minus dash_jogging_gait-1-dash_stealth_gait, or 1 by default. Otherwise jogging refers to forward movement only. Values are limited to whole numbers.[#]

The Caps Lock key is available for digital input devices, eg. keyboards and simple game controllers. Caps Lock is mapped to button 10 by default. In this mode the player will jog when the SPACE #keyboard key, or "Action" button, is pressed

dash_running_gait

Introduced around 1.1.1.7, this extension establishes the dashing gait used when running. The default gait is 5, or roughly 70% speed. The player character is said to be running when moving forward at the maximum input gait, or 7, with an empty power gauge. Ie. no longer dashing. Values are limited to whole numbers.[#]

dash_stealth_gait

Introduced around 1.1.1.7, this extension establishes the dashing gait used when moving discreetly. The default gait is 0, or 1/6th speed. Gaits numbered 0 and below (0, -1, -2, etc.) are lower than the lowest gait available to analog controllers.

Dashing gaits below the jogging gait are available for precision movements. In this mode the power gauge drains just as if running until dash_stealth_gait is entered on empty. Like jogging and running this gait refers to forward movement only, however it also happens to be factored into backwards movement. Refer to #dash_jogging_gait. Values are limited to whole numbers.[#]

The Caps Lock key is available for digital input devices, eg. keyboards and simple game controllers. Caps Lock is mapped to button 10 by default.

Tip: it is recommended that there be at least two stealth gaits so that attentive players are able to see (or hear) when they have entered the gait neighboring the jogging gait and react accordingly.

escape_analog_gaits

Introduced around 1.1.1.5, this extension calibrates the sensitivity of Sword of Moonlight's game controller. Note that this extension is overshadowed by #Joypad sections. Refer to #..._analog_gaits.

This extension has 7 parts that must be separated in a way that is unambiguous. Any part not specified defaults to: 0.2, 0.333333, 0.5, 0.666666, 0.75, 0.875, and 0.95 respectively. This is a perfect linear mapping. A game controller may use a nonlinear mapping. In example, a DualShock controller is very biased; .2 .25 .3 .4 .55 .75 .95 gives a greater sense of control over its sticks by flattening out the windows between the gaits.

Note that this is not a mechanism for calibrating imbalance or fighting in a stick. That is done with the Windows Control Panel calibration feature.

The first and last numbers in the series are unique. An input below the first number is ignored. This is important because sticks usually require a wide "dead zone" so not to appear cocked when left still. An input above the last number is taken to be full tilt. A calibrated stick should achieve full tilt. An expanded window lessens the need to force a stick to full tilt.

If a number is less than or equal to the number before it results are undefined. The option to merge gaits will be visited at a later date. Values are limited to series of real numbers between 0 and 1.[#]

escape_analog_modes

Introduced around 1.1.1.5, this extension describes the modes available to #do_escape. The defaults are uz, enabling a single analog mode equivalent to Sword of Moonlight's axis based movement controls; moving forward and backward and turning left and right. The non-axis based movement controls are button based; moving sideways and looking up and down.

An analog mode can be up to eight (8) letters long comprised of x, y, z, u, and v, denoting lateral, vertical, forward and backward, turning, and looking movement respectively. Each letter can be capitalized, X, Y, Z, U, and V, in order to invert the axis. However it is not necessary to add an additional mode solely to invert the looking movement, as inverted look modes will be generated automatically.

The letters correspond to axes of the game controller. An axis can be knocked out using a dash (-) place holder. So to add a 2nd and 3rd (automatically generated inverted) mode uz, xzuv-v is a start. These modes should add a dual thumb stick set-up compatible with most DualShock like controllers and adapters that the player can access by pressing the Esc (escape) key once in game. Values are limited to series of analog modes as described above.

Note: in the future #do_system will be required to bypass the new system menu which will make the "Analog Mode" approach obsolete for all but the most stubborn and curious. In the meantime this extension is absolutely essential to beginners and avid players will want to familiarize themselves with the #Joypad section.

g

Introduced around 1.1.1.7, this extension sets the game wide gravity constant. The default is 9.8, meters per second per second, or Earth like gravity. Where the instantaneous velocity is equal to g times the time spent in freefall. Values are limited to real numbers.[#]

lights_lamps_limit

Introduced around 1.?.?.?, this extension establishes the maximum number of lamps per lit element. The default is 0; Which is interpreted to mean as many lamps as is both practical and possible. Values are limited to positive whole numbers.[#]

log_initial_timeout

Introduced around 1.0.0.1, this extension sets the number of refresh frames to log to a log file before logging is no longer performed. This is a diagnostic tool. A log file can grow very large and logging can make a game unplayable under different circumstances. The default setting is 0. The default behavior is to log until manually disabled. Refer to #log_subsequent_timeout. Values are limited to positive whole numbers.[#]

log_subsequent_timeout

Introduced around 1.0.0.1, this extension sets the number of refresh frames to log whenever logging is manually enabled before automatically disabling logging. The default setting is 0. The default behavior is to enable logging until manually disabled. Refer to #log_initial_timeout. Values are limited to positive whole numbers.[#]

mipmaps_samples_limit

Formerly mipmaps_maximum_anisotropy prior to 1.1.1.6

Introduced around 1.0.0.1, this extension takes the maximum number of anisotropic filtering samples. The default is 0. This will use the maximum number of samples supported by the video adapter. Use 1 to disable anisotropic filtering. Note that when #do_anisotropy is switched on players are able to directly set this up in the Options menu. Values are limited to positive whole numbers.[#]

mouse_...th_button_action

Introduced around 1.0.0.1, this extension assigns an action to any additional buttons that a computer mouse may support beyond the standard left, right, and middle buttons. The part before th_button_action must be a number between 4 and 8 distinguishing the 4th, 5th, 6th, 7th, and 8th button respectively. Values are limited to keyboard macros.[#]

mouse_deadzone_ms_timeout

Introduced around 1.1.1.6, this extension counts the number of milliseconds that computer mice may be left still within the "dead zone" before the mouse position is returned to the center of the dead zone. Refer to #mouse_deadzone_multiplier. The default value is 0. Which is converted into an internal default timeout that has historically been fixed at 250ms, or a quarter of a second. Values are limited to positive whole numbers.[#]

mouse_deadzone_multiplier

Introduced around 1.0.0.1, this extension multiplies the inner region of what is conceptually a virtual mouse pad that acts like a thumb stick of a game controller that does not pull itself back to center. Any movement within the "dead zone" is treated as free-looking. Once the virtual mouse leaves this region it behaves exactly as a thumb stick does so that you can turn without having to pick the computer mouse up off its mouse pad and place it back in the center over and over and over...

The dead zone is 50% of the area, which itself is 100% of the size of the game window. Refer to #mouse_saturate_multiplier. Values are limited to real numbers between 0 and 2.[#]

Note that as of 1.1.1.5 when certain antagonistic movement keys are pressed together (either with the keyboard or by way of the game controller configuration) the mouse will center itself either horizontally or vertically in the dead zone. Vertical centering will change the player character's perspective. Horizontal centering will not be noticed when inside the dead zone. Holding the horizontal centering combo creates a temporary 100% dead zone area so that free-looking is not interrupted. This feature still requires some work before the keys can be pressed together without timing becoming an issue. Still it is pretty handy and sure beats nothing.

mouse_horizontal_multiplier

Introduced around 1.0.0.1, this extension multiplies the sensitivity of the computer mouse with respect to side to side motion. Negative numbers also invert the motion. Values are limited to real numbers.[#]

mouse_left_button_action

Introduced around 1.0.0.1, this extension assigns an action to the left computer mouse button. If the player has indicated they are left handed the action may or may not be swapped with the #mouse_right_button_action. Values are limited to keyboard macros.[#]

mouse_menu_button_action

Introduced around 1.0.0.1, this extension assigns an action to take when the left and mouse buttons are held down together for a short period of time. If #wasd_and_mouse_mode indicates a one-handed control scheme this button may be assigned a default action. Otherwise the default action is to do nothing. Values are limited to keyboard macros.[#]

mouse_middle_button_action

Introduced around 1.0.0.1, this extension assigns an action to the middle computer mouse button. Note that not all mice will feature a middle button and when present the button can be combined with a wheel making it comparatively more awkward to utilize. Values are limited to keyboard macros.[#]

mouse_right_button_action

Introduced around 1.0.0.1, this extension assigns an action to the right computer mouse button. If the player has indicated they are left handed the action may or may not be swapped with the #mouse_left_button_action. Values are limited to keyboard macros.[#]

mouse_saturate_multiplier

Introduced around 1.0.0.1, this extension multiplies what is conceptually a virtual mouse pad with the same dimensions as the game window with the goal of producing a one-to-one relationship between the computer mouse and in-game motion. Refer to #mouse_deadzone_multiplier, and #mouse_horizontal_multiplier and #mouse_vertical_multiplier. Values are limited to positive real numbers.[#]

mouse_tilt_..._action

Introduced around 1.0.0.1, this extension assigns an action to a feature many computer mice have in the form of either an additional wheel or the ability to nudge the mouse wheel to the left and right. The part before _action must be one of left or right. Note that Windows' handling of this feature is very limited. It is essentially restricted to scrolling text sideways in such a way that is very very clunky in any other context. That said you can work with it. You can even move sideways with it if you don't mind the lurch. Values are limited to keyboard macros.[#]

mouse_vertical_multiplier

Introduced around 1.0.0.1, this extension multiplies the sensitivity of the computer mouse with respect to up and down motion. Negative numbers also invert the motion. Values are limited to real numbers.[#]

no_...

Introduced around 1.1.1.7, this extension sets up default equipment without a graphic that will be called Ex.nothing: builtin in game. For this to work a game must leave one of its item IDs unused. The part after no_ can be one of headgear, bodyarmor, gloves, or leggings. Each one takes 8 numbers for each per affinity defensive rating. For example, no_headgear = 1 2 3 4 5 6 7 8. Unspecified numbers default to 0. If the numbers are all zero the extension has no effect. Refer to #do_no. Values are limited to a series of 8 whole numbers between 0 and 255.[#]

numlock_status

Introduced around 1.1.1.6, this extension determines the Num Lock status at start-up when #do_numlock is switched on. Values are limited to binary statements.[#]

red_multiplier

Introduced around 1.1.1.5, this extension multiplies the intensity of the red flash effect when the player character receives damage. Maximum intensity is reached when an NPC attack deals 50% damage. For example, if 25% damage is considered a critical hit then you will want to set this to 2. Note that a Game Over hit is always displayed at maximum intensity. Refer to #red_flash_tint. Values are limited to real numbers.[#]

st_margin_multiplier

Introduced around 1.1.1.6, this extension multiplies the margin around the #do_st onscreen elements. The default margin is half of the font's height. Values are limited to real numbers.[#]

st_status_mode

Introduced around 1.1.1.6, this extension changes how the "Status Display" onscreen elements are arranged. The default is 0. No default behavior is specified. Mode 1 places HP in the top-left corner and MP in the top-right. Mode 2 trades the places of mode 1. The places are subject to reversal by any extension that results in the player character being left handed. Values are limited to 0, 1, or 2.

start_mode

Introduced around 1.1.2.14, this extension changes the text and behavior of the start menu. Mode 0 emulates Sword of Moonlight. Mode 1 emulates King's Field on the PlayStation. Modes 2 and 3 do likewise emulating the sequels. Mode 4 emulates Shadow Tower. The default mode is 2, however when combined with #do_st the default mode is 4. The addition of future extensions that are like do_st will affect the default mode. Values are limited to 0 through 4.

Mode 3 has no "START" prompt text, so it is bypassed. Mode 1 has no text whatsoever, so a new game is begun every time, after which the player can load a saved game to continue on if they so choose.

All mode text except for mode 2 is English in all caps. Mode 2 text is translated by #do_use_builtin_english_by_default. At present it is not possible to translate this text via the game script file (the eventual implementation is likely to repurpose the messages' plural-forms.)

Mode *built-in English (Mode 2)
0 PUSH ANY KEY NEW GAME CONTINUE
2 START はじめる ロードする
* START Begin Load Game
3 NEW CONTINUE
4 PUSH START NEW LOAD

wasd_and_mouse_mode

Introduced around 1.0.0.1, this extension determines the default configuration of the "WASD" key group on a Qwerty keyboard and computer mouse. There are two modes, one (1) handed, and two (2) handed. If #do_mouse and #do_wasd are both in play the default mode is two handed. If not the default mode is one handed.

One handed is ideal for puzzle games that won't involve combat or high stakes action. A free hand can also be less stressful in a game's development stage. Mice with only three buttons may require further configuration to be truly one handed.

Basically one handed modes always use turning movements where two handed modes will use sideways movements. One handed uses the mouse buttons to move forward and backward and does not use the attack and magic buttons. There are other differences in terms of how spare buttons get prioritized, all of which are subject to change. Values are limited to 1 or 2.