Game Configuration Pack References
Game Configuration package is the main foundation for all games which will work with PGE: it's a set of game resources, item settings, and scripts. A Configuration pack includes item definitions, gameplay settings, game content, and other miscellaneous information.
Structure
All configuration packs must use this tree structure:
Note: italic folders can be customized by main.ini config
/<Name of config pack>
- /data - content data container
- /graphics - graphics resources
- /characters - playable characters sprites
- /common - common engine graphics (for example, logos, titles, design elements, etc.)
- /level - graphics which uses in levels
- /worldmap - graphics which uses in world maps
- /music - music container
- /sound - music container
- /graphics - graphics resources
- /tilesets
- /group_tilesets
- main.ini - main configuration pack description and settings
- engine.ini - main settings of game engine application.
- music.ini - configuration and list of musics
- sounds.ini - configuration and list of sounds
- sound_roles.ini - association of buit-in sound roles with sound-ID's from sounds.ini
- rotation_table.ini - transformation rules which applies to items when rotating or flipping action was applied to them
- lvl_bgo.ini - definition of background objects for levels
- lvl_bkgrd.ini - definition of backgrounds for levels
- lvl_blocks.ini - definition of blocks for levels
- lvl_effects.ini - definition of effects for levels
- lvl_npc.ini - definition of non-playable characters for levels
- wld_tiles.ini - definition of tiles for world map
- wld_scenery.ini - definition of sceneries for levels
- wld_paths.ini - definition of paths for levels
- wld_levels.ini - definition of level points for levels
Configuration files
General config pack settings (main.ini)
The main settings of configuration pack
Is a basic settings of this configuration pack
| [ main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| config_name | string | config_name = "Raocow Talkhaus" | The full name of configuration pack |
| config_desc | string | config_desc = "Config pack with stuff made by Raocow's Talkhaus team" | Additional description about this configuration package |
| worlds | string | worlds = "Raocow Games" | Name of folder with episodes. If not defined, will be used common 'worlds' folder which independent to configuration pack where you have able to play episodes with any config packs. To take able have config specific episodes, the custom world folder must be defined. |
| music | string | music = "music" | Name or relative path to configuration pack default music folder. By default this folder locates in the 'data' folder. |
| sound | string | sound = "sound" | Name or relative path to configuration pack default sounds folder. By default this folder locates in the 'data' folder. |
| application-dir | [0,1] | application-dir = 0 | Use application root instead of data sub folder as basic path to data environment. |
| application-path | string | application-path = "/usr/local/games/pge_default/" | Definition of absolute path to data directory. Will work if 'application-dir' will is 1 |
| graphics-level | string | graphics-level = "graphics/level" | Path to folder of level graphics folder. |
| graphics-worldmap | string | graphics-worldmap = "graphics/worldmap" | Path to folder of world map graphics folder. |
| graphics-characters | string | graphics-characters = "graphics/characters" | Path to folder of playable character graphics folder |
| graphics-common | string | graphics-common = "graphics/common" | Path to folder of common engine graphics |
| custom-data | string | custom-data = "data-custom" | Additional environment folder for custom data[reserved] |
| smbx-compatible | [0,1] | smbx-compatible = 1 | [reserved flag] This option will disable the use of non-SMBX features for games created with this config.
This will allow saved level files, etc. to be compatible with SMBX 1.3 If you set this option to 0, you can read SMBX files, but you will lose data if you try to save in SMBX format, and you will get rendering bugs if you try to open the file in SMBX |
Some settings of the editing process and graphics setup
| [ graphics ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| default-grid | >=0 | default-grid = 32 | Default global alignment grid size. You can define any grid size for your game. |
List of available playable characters in game
| [ characters ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| characters | >0 | characters = 5 | Total number of available playable characters |
| character*-name | string | character*-name = "Raocow" | Name of character selected number (instead of * write the character ID [1...total characters]). You should define all allocated character names! |
Global editor GUI settings
| [ gui ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| editor-icon | string | editor-icon = "icon_small.png" | Icon of the configuration package which will be shown in the config selection dialog in the Editor. |
| engine-icon | string | engine-icon = "icon_small.png" | Icon of the configuration package which will be shown in the config selection screen in the Engine. |
| editor-splash | string | editor-splash = "graphics/common/editor_splash.png" | Default editor splash of this configuration package |
| default-theme | string | default-theme = "Raocow Style" | Folder name of theme which will be used as default |
| animations | >=0 | animations = 3 | Number of additional animated images which will be drawn over splash logo |
Define of one of splash animation with number from 1 to total number of animations
| [ splash-animation-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| image | string | image = "graphics/common/coin.png" | Path to image which will be shown on the splash logo |
| frames | >=1 | frames = 4 | Number of animation frames. If not defined or 1 - image will be shown as static image |
| speed | >=1 | speed = 78 | Delay between frames (in ms). Default 128 ms. |
| x | >=0 | x = 416 | Horizontal position of image relative to left-top corner of splash |
| y | >=0 | y = 242 | Vertical position of image relative to left-top corner of splash |
Define initial dock widgets visibility in the Editor (applying on the first Editor run) (Added since May 26, 2018)
| [ widgets-default-visibility ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| lvl-itembox | 0, 1, true, false | lvl-itembox = true | Initial visibility of Level ItemBox |
| lvl-section-props | 0, 1, true, false | lvl-section-props = true | Initial visibility of Level Section Properties |
| lvl-warp-props | 0, 1, true, false | lvl-warp-props = true | Initial visibility of Level Warps and Doors |
| lvl-layers | 0, 1, true, false | lvl-layers = true | Initial visibility of Level Layers box |
| lvl-events | 0, 1, true, false | lvl-events = true | Initial visibility of Level Classic Events box |
| lvl-search | 0, 1, true, false | lvl-search = true | Initial visibility of Level Item Search box |
| wld-itembox | 0, 1, true, false | wld-itembox = true | Initial visibility of World map ItemBox |
| wld-settings | 0, 1, true, false | wld-settings = true | Initial visibility of World map Settings |
| wld-search | 0, 1, true, false | wld-search = true | Initial visibility of World map Item Search box |
| tilesets-box | 0, 1, true, false | tilesets-box = true | Initial visibility of Tilesets ItemBox |
| debugger-box | 0, 1, true, false | debugger-box = true | Initial visibility of Debugger box |
| bookmarks-box | 0, 1, true, false | bookmarks-box = true | Initial visibility of Bookmarks box |
| variables-box | 0, 1, true, false | variables-box = true | Initial visibility of Variables box |
Engine settings (engine.ini)
The main settings of game engine
[common]
| Parameter | Variants | Example value | Description |
|---|---|---|---|
| screen-width | [>=1] | screen-width=800 | Default width of screen |
| screen-height | [>=1] | screen-height=600 | Default height of screen |
| screen-type | [static,scalable],[dynamic,resizable] | screen-type=scalable | static (or 'scalable' which a synonym of 'static') screen will always have defined resolution. dynamic (or 'resizable') screen will be resized when you resize window. |
[world-map]
| Parameter | Variants | Example value | Description |
|---|---|---|---|
| background | string | background="world_back.png" | Background image of world map screen |
| viewport-x | [>=0] | viewport-x=66 | Position of world map view window over background |
| viewport-y | [>=0] | viewport-y=130 | Position of world map view window over background |
| viewport-width | [>=0] | viewport-width=668 | Width of world map view window over background |
| viewport-height | [>=0] | viewport-height=403 | Height of world map view window over background |
| level-title-x | [>=0] | level-title-x=0 | Position of level title text |
| level-title-y | [>=0] | level-title-y=30 | Position of level title text |
| level-title-w | [>=1] | level-title-w=700 | Maximal width of level title |
| level-title-align | left,right,center | level-title-align=center | Aligning of text in the defined zone |
| points-counter | [0,1] | points-counter=0 | Enable displaying of points counter |
| points-counter-x | [>=0] | points-counter-x=12 | Position of points counter label with value |
| points-counter-y | [>=0] | points-counter-y=12 | Position of points counter label with value |
| health-counter | [0,1] | health-counter=1 | Enable displaying of lives/health counter |
| health-counter-x | [>=0] | health-counter-x=12 | Position of lives/health counter |
| health-counter-y | [>=0] | health-counter-y=24 | Position of lives/health counter |
| star-counter | [0,1] | star-counter=1 | Enable displaying of counter of collected stars/leeks/keys |
| star-counter-x | [>=0] | star-counter-x=12 | Position of counter of collected stars/leeks/keys |
| star-counter-y | [>=0] | star-counter-y=36 | Position of counter of collected stars/leeks/keys |
| coin-counter | [0,1] | coin-counter=1 | Enable displaying of collected coins counter |
| coin-counter-x | [>=0] | coin-counter-x=12 | Position of collected coins counter |
| coin-counter-y | [>=0] | coin-counter-y=12 | Position of collected coins counter |
| portrait | [0,1] | portrait=1 | Enable displaying of current playable character's portrait |
| portrait-x | [>=0] | portrait-x=2 | Position of current playable character's portrait |
| portrait-y | [>=0] | portrait-y=2 | Position of current playable character's portrait |
[loading-scene]
| Parameter | Variants | Example value | Description |
|---|---|---|---|
| bg-color-r | [0-255] | bg-color-r=0 | Level of red of background color |
| bg-color-g | [0-255] | bg-color-g=0 | Level of green of background color |
| bg-color-b | [0-255] | bg-color-b=0 | Level of blue of background color |
| background | string | background="big_splash.png" | File name of background / centered splash image |
| updating-time | [>=1] | updating-time=128 | Delay between updating of screen |
| additional-images | [>=0] | additional-images=2 | Number of additional images which will be displayed on screen |
[loading-image-*] (where * - value from 1 to "additional-images" value)
| Parameter | Variants | Example value | Description |
|---|---|---|---|
| image | string | image="coin.png" | File name of image |
| animated | [0,1] | animated=1 | Enable vertical sprite animation |
| frames | [>=1] | frames=4 | Number of frames |
| pos-x | [>=0] | pos-x=768 | Horizontal position on screen |
| pos-y | [>=0] | pos-y=564 | Horizontal position on screen |
Music (music.ini)
Defining list of available music
| [ music-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total-world | >=1 | total-world = 16 | Total number of world map music |
| total-level | >=1 | total-level = 56 | Total number of level music |
| total-special | >=1 | total-special = 3 | Total of special musics which using for special events and is not available to playback by standard methods |
| level-custom-music-id | >=0 | level-custom-music-id = 24 | ID which will used as "custom music". |
| world-custom-music-id | >=0 | world-custom-music-id = 17 | ID which will used as "custom music" on the world map. |
Settings of each World map music (Where '*' - should be a MUSIC-ID from 1 to total number of World map musics)
You should define settings for all allocated MUSIC-ID range!
| [ world-music-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| name | string | name = "Jazz for everything" | Title of music |
| file | string | file = "jazz-for-everything.ogg" | Music file which connected to this ID slot |
Settings of each level music (Where '*' - should be a MUSIC-ID from 1 to total number of level musics)
You should define settings for all allocated MUSIC-ID range!
| [ level-music-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| name | string | name = "Rock'n'roll!" | Title of music |
| file | string | file = "rock-n-roll.ogg" | Music file which connected to this ID slot |
Settings of each special music (Where '*' - should be a MUSIC-ID from 1 to total number of special musics)
You should define settings for all allocated MUSIC-ID range!
| [ special-music-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| name | string | name = "tick-tack, go-go!" | Title of music |
| file | string | file = "tick-tack.ogg" | Music file which connected to this ID slot |
SFX (sounds.ini)
Definition of available sound effects
| [ sound-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 91 | Allocate SOUND-ID's sound effects |
Settings of each Sound effect (Where '*' - should be a SOUND-ID from 1 to total number of Sound effects)
You should define settings for all allocated SOUND-ID range!
| [ sound-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| name | string | name = "Jump" | Title of sound effect |
| file | string | file = "player-jump.ogg" | File name of sound file |
| single-channel | [0,1] | single-channel = 0 | Sound will be played in the reserved channel |
| hidden | [0,1] | hidden = 0 | Hide this sound in the available sounds list in the events |
SFX roles (sound_roles.ini)
Associates hardcoded sound events with sounds from sounds.ini file
| [ sound-roles ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| greeting | >=0 | greeting = 0 | Play sound on title screen |
| menudo | >=0 | menudo = 0 | Menu item seelcted |
| menuscroll | >=0 | menuscroll = 0 | Menu scrolled |
| menumessagebox | >=0 | menumessagebox = 0 | Message box pop-up |
| menupause | >=0 | menupause = 0 | Switched pause mode |
| cameraswitch | >=0 | cameraswitch = 0 | Switched camera mode |
| playerjump | >=0 | playerjump = 0 | Playable character jumping |
| playerstomp | >=0 | playerstomp = 0 | Playable character stomped something |
| playerkick | >=0 | playerkick = 0 | Playable character kicked something |
| playergrow | >=0 | playergrow = 0 | Playable character growing |
| playerdied | >=0 | playerdied = 0 | Playable character died |
| playerdropitem | >=0 | playerdropitem = 0 | Playable character drops item |
| playertakeitem | >=0 | playertakeitem = 0 | Playable character takes item |
| playerslide | >=0 | playerslide = 0 | Playable character sliding |
| playergrab1 | >=0 | playergrab1 = 0 | Playable character grabs item |
| playergrab2 | >=0 | playergrab2 = 0 | Playable character grabs item |
| playerspring | >=0 | playerspring = 0 | Playable character jumping on springboard |
| playerclimb | >=0 | playerclimb = 0 | Playable character climbing |
| playertail | >=0 | playertail = 0 | Playable character wave tail |
| playermagic | >=0 | playermagic = 0 | Magic effect |
| playerwaterswim | >=0 | playerwaterswim = 0 | Player swimming in water |
| bonuscoin | >=0 | bonuscoin = 0 | Coin taken |
| bonus1up | >=0 | bonus1up = 0 | 1up gotten |
| weaponhammer | >=0 | weaponhammer = 0 | Hammer weaopon shoot |
| weaponfire | >=0 | weaponfire = 0 | Fire weaopon shoot |
| weaponcannon | >=0 | weaponcannon = 0 | Cannon weaopon shoot |
| weaponexplosion | >=0 | weaponexplosion = 0 | Explosion of the bomb |
| weaponbigfire | >=0 | weaponbigfire = 0 | Big burn |
| npclavaburn | >=0 | npclavaburn = 0 | NPC burned in lava |
| npcstonefall | >=0 | npcstonefall = 0 | Strong NPC fell down |
| warppipe | >=0 | warppipe = 0 | Pipe warp |
| warpdoor | >=0 | warpdoor = 0 | Door warp |
| warpteleport | >=0 | warpteleport = 0 | Instant teleport warp |
| levelfailed | >=0 | levelfailed = 0 | Level failed |
| levelcheckpoint | >=0 | levelcheckpoint = 0 | Checkpoint installed |
| worldmove | >=0 | worldmove = 0 | Playable character moved on the world map |
| worlddeny | >=0 | worlddeny = 0 | Movement denied |
| worldopenpath | >=0 | worldopenpath = 0 | Path opened |
| worldenterlevel | >=0 | worldenterlevel = 0 | Player entering into level |
| levelexit01 | >=0 | levelexit01 = 0 | Exit from level with code 1 |
| levelexit02 | >=0 | levelexit02 = 0 | Exit from level with code 2 |
| levelexit03 | >=0 | levelexit03 = 0 | Exit from level with code 3 |
| levelexit04 | >=0 | levelexit04 = 0 | Exit from level with code 4 |
| levelexit05 | >=0 | levelexit05 = 0 | Exit from level with code 5 |
| levelexit06 | >=0 | levelexit06 = 0 | Exit from level with code 6 |
| levelexit07 | >=0 | levelexit07 = 0 | Exit from level with code 7 |
| levelexit08 | >=0 | levelexit08 = 0 | Exit from level with code 8 |
| levelexit09 | >=0 | levelexit09 = 0 | Exit from level with code 9 |
| levelexit10 | >=0 | levelexit10 = 0 | Exit from level with code 10 |
| gamecompleted | >=0 | gamecompleted = 0 | Game end |
| blockhit | >=0 | blockhit = 0 | Block impact |
| blockopen | >=0 | blockopen = 0 | NPC has been Extracted from block |
| blocksmashed | >=0 | blocksmashed = 0 | Block was destroyed |
| blockswitch | >=0 | blockswitch = 0 | Switch block toggled |
Rotation rules set for editor (rotation_table.ini)
Definition of rotate transformation rules which will transform items when called "rotate" or "flip" action. Can be customized by level/episode.
| [ <any-random-but-unique-name> ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| type | string | type = block | Type of source item: block |
| id | >=1 | id = 466 | Source ID which will be transformed. If equal to 0, rule will not work |
| rotate-left | >=0 | rotate-left = 464 | Target ID for left rotation action. If equal to 0, this rule will be ignored for left rotation. |
| rotate-right | >=0 | rotate-right = 466 | Target ID for right rotation action. If equal to 0, this rule will be ignored for right rotation. |
| flip-h | >=0 | flip-h = 467 | Target ID for horizontal flip action. If equal to 0, this rule will be ignored for horizontal flip. |
| flip-v | >=0 | flip-v = 465 | Target ID for vertical flip action. If equal to 0, this rule will be ignored for vertical flip. |
Level Background objects/sceneries (lvl_bgo.ini)
Definition of background objects for levels
| [ background-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 190 | Allocate number of BGO-ID's to define background objects |
| grid | >=1 | grid = 32 | Default alignment grid size for all BGOs without defined "grid" field. |
| config-dir | string | config-dir = "items/bgo" | Enables split config mode (using a set of background-*.ini files in the specified directory instead finding sections in the same INI-file) |
Note: in the split mode or in the custom level/episode background-*.ini config file, section name is always background.
Settings of each BGO (Where '*' - should be a BGO-ID from 1 to total number of BGOs)
You should define settings for all allocated BGO-ID range!
| [ background-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| name | string | name = "Some bush" | Title of background object |
| group | string | group = "Plants" | Group where included this background object |
| category | string | category = "Bushes" | Category where included this background object |
| description | string | description = "A nice green decoration" | A short description about this element. |
| grid | >=1 | grid = 32 | Size of grid snapping |
| z-layer | string | z-layer = background | Default Z-Order layer of background object: background2, background, foreground, foreground2 |
| z-offset | floating | z-offset = 0 | Z-Order offset relative to default Z-Order |
| z-value | floating | z-value = 0 | Set absolute Z-value |
| offset-x | integer | offset-x = 0 | Grid offset X |
| offset-y | integer | offset-y = 0 | Grid offset Y |
| image | string | image = "background-45.png" | Image filename |
| climbing | [0,1] | climbing = 0 | Allow playable character climb up on contact with background object |
| animated | [0,1] | animated = 0 | Enable vertical sprite animation of background object |
| frames | >=1 | frames = 5 | Number of available frames for this background object |
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds |
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay |
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds |
| display-frame | >=0 | display-frame = 0 | Default static frame in the editor with disabled animation |
| smbx64-sort-priority | integer | smbx64-sort-priority = 44 | The array sorting order for SMBX64 LVL files. |
| view | string | view = background | Alias to "z-layer" field |
| priority | floating | priority = 0 | Alias to "z-value" field |
Level backgrounds (lvl_bkgrd.ini)
Definition of background for levels
| [ background2-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 58 | Allocate number of BACKGROUND-ID's to define background images |
| config-dir | string | config-dir = "items/background" | Enables split config mode (using a set of background2-*.ini files in the specified directory instead finding sections in the same INI-file) |
Note: in the split mode or in the custom level/episode background2-*.ini config file, section name is always background2.
Settings of each background image (Where '*' - should be a BACKGROUND-ID from 1 to total number of background images)
You should define settings for all allocated BACKGROUND-ID range!
| [ background2-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
Generic | |||
| name | string | name = "Big field" | Title of background |
| fill-color | #HexColor or "auto" | fill-color = "#E1F502" | Default fill color. Fill color applying to the space where background image is not shown on the screen. "auto" keyword (works by default) means color will be automatically captured from left-top pixel of background image (or left-bottom if Y reference point is top). For multi-layer backgrounds "auto" is black color by default. |
Multi-layer background (since PGE Engine 0.3-alpha) | |||
| legacy | boolean | legacy = false | Turn off multi-layering background mode and use legacy SMBX background style. Most of general properties are ignored in multi-layer backgrounds, and properties for each layer are used. The background2-*-layer-* or background2-layer-* INI sections will be used to declare settings per every layer. |
| multi-layer-count | uint | multi-layer-count = 5 | Total count of background layers |
Legacy background | |||
| type | string | type = double-row | Background model type: single-row - show single horizontal repeating row at bottom or at top (in dependence of "attached" value), |
First image | |||
| image | string | image = "background2-24.png" | Image filename of background (ignored for multi-layer backgrounds) |
| repeat-h | float >=0 | repeat-h = 2 | Horizontal parallax coefficient. I.e. how slowly will be moved background concerning edge of the camera. If coefficient equal to 0, the background will be static on screen (ignored for multi-layer backgrounds) |
| repeat-v | string | repeat-v = ZR | Vertical parallax and repeat formula type: RP - With repeat, vertical parallax equal to horizontal with parallax coefficient equal to 2 |
| attached | string | attached = bottom | Attachment of background image to side of section: bottom, |
| tiled-in-editor | [0,1] | tiled-in-editor = 1 | Show this background tiled in the editor (ignored for multi-layer backgrounds) |
| magic | [0,1] | magic = 1 | Enable magic multi-parallax of background (cut image into horizontal strips with differenced parallax coefficient) (ignored for multi-layer backgrounds) |
| magic-strips | >=1 | magic-strips = 3 | Number of magic parallax strips (ignored for multi-layer backgrounds) |
| magic-splits | Array of integer numbers | magic-splits = "49,541,850" | List of magic strips separators (value in number of pixels from top to separator) (ignored for multi-layer backgrounds) |
| magic-speeds | Array of float numbers | magic-speeds = "1.2,2.1,3" | List of horizontal parallax coefficients for each magic strip (ignored for multi-layer backgrounds) |
| animated | [0,1] | animated = 0 | Enables sprite animation for background (ignored for multi-layer backgrounds) |
| frames | >=1 | frames = 4 | Number of frames which using by this background (ignored for multi-layer backgrounds) |
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds (ignored for multi-layer backgrounds) |
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay (ignored for multi-layer backgrounds) |
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds (ignored for multi-layer backgrounds) |
| display-frame | >=0 | display-frame = 0 | Show specific frame when animation is disabled (ignored for multi-layer backgrounds) |
Second image | |||
| second-image | string | second-image = "background2-27.png" | Image filename of second row of background (using only by double-row background) (ignored for multi-layer backgrounds) |
| second-repeat-h | float >=1 | second-repeat-h = 4 | Horizontal parallax coefficient for second row (using only by double-row background) (ignored for multi-layer backgrounds) |
| second-repeat-v | string | second-repeat-v = ZR | Vertical parallax type and repeat for second row of double-row background: RP - With repeat, vertical parallax equal to horizontal with parallax coefficient equal to 2 |
| second-attached | string | second-attached = overfirst | Type of second row of double-row background overfirst - second row will be drawn higher than normal background row |
Definition of each layer for multi-layer backgrounds. Section name means: background2-X-layer-Y. Where X - is an ID of background that owns this layer, and Y is a code of layer (begin of count is from zero!). For custom configs or split mode INI files the section for every layer will be background2-layer-*.
| [ background2-*-layer-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| name | string | name = "Sky" | Name of the layer. Optional. Can be shown in the editor or be used as accessing alias to control layer from the PGE lua API. |
| image | string | image = "sky.png" | Image filename (or relative path) of this layer. |
| z-value | long double | z-value = "-50" | Absolute Z position of background layer. If value is negative, background will be shown as background. If value is positive - layer will be shown as foreground. |
| z-index | long double | z-index = "-50" | Alias to "z-value" |
| priority | long double | priority = "-50" | Alias to "z-value" |
| in-scene-draw | boolean | in-scene-draw = "false" | Draw this layer together with level scene elements. The z-value will declare z position between scene elements. |
| opacity | double | opacity = "1.0" | Declares transparency level for the layer. Possible floating point values between 1.0 (solid) and 0.0 (transparent). |
| flip-h | bool | flip-h = "false" | Flip the background layer horizontally. |
| repeat-x | bool | repeat-x = "true" | Enable horizontal repeating of background image. |
| repeat-y | bool | repeat-y = "false" | Enable vertical repeating of background image. |
| parallax-x | bool | parallax-x = "1.0" | |
| parallax-y | bool | parallax-y = "1.0" | |
| parallax-coefficient-x | double | parallax-coefficient-x = "1.0" | Declares horizontal parallax coefficient for this layer. Parallax coefficient declares how slower/faster background image will offset relative to camera motion. Allowed positive non-zero values. Same as |
| parallax-coefficient-y | double | parallax-coefficient-y = "1.0" | Declares vertical parallax coefficient for this layer. Parallax coefficient declares how slower/faster background image will offset relative to camera motion. Allowed positive non-zero values. Same as |
| parallax-mode-x | enum: scroll, fit, fixed | parallax-mode-x = "scroll" | Horizontal parallax mode. scroll - layer will be scrolled with parallax coefficient in dependence of position difference of camera and reference point. |
| parallax-mode-y | enum: scroll, fit, fixed | parallax-mode-y = "scroll" | Vertical parallax mode. scroll - layer will be scrolled with parallax coefficient in dependence of position difference of camera and reference point. |
| reference-point-x | enum: left, right | reference-point-x = "left" | Horizontal reference point - left side of image to left edge of section, or right side of image to right edge of section. |
| reference-point-y | enum: top, bottom | reference-point-y = "bottom" | Vertical reference point - top side of image to top edge of section, or bottom side of image to bottom edge of section. |
| offset-x | double | offset-x = "0.0" | Horizontal offset of reference point. |
| offset-y | double | offset-y = "0.0" | Vertical offset of reference point. |
| margin-x-left | double | margin-x-left = "0.0" | Extra spacing at left side of image. |
| margin-x-right | double | margin-x-right = "0.0" | Extra spacing at right side of image. |
| margin-y-top | double | margin-y-top = "0.0" | Extra spacing at top side of image. |
| margin-y-bottom | double | margin-y-bottom = "0.0" | Extra spacing at bottom side of image. |
| margin-x | double | margin-x = "0.0" | Extra spacing at both left and right sides of image. Has lower priority than padding-x-left and padding-x-right. |
| margin-y | double | margin-y = "0.0" | Extra spacing at both top and bottom sides of image. Has lower priority than padding-y-top and padding-y-bottom. |
| speed-x | uint | speed-x = "0" | Pixel-per-second horizontal autoscrolling of reference point. Affected by horizontal parallax coefficient. That can be used, for example, to visualize a river stream with multiple layers on different Z position with auto parallax mode. 0 - autoscroll is disabled. >0 - scroll right, <0 - scroll left. |
| speed-y | uint | speed-y = "0" | Pixel-per-second horizontal autoscrolling of reference point. Affected by vertical parallax coefficient. 0 - autoscroll is disabled. >0 - scroll down, <0 - scroll up. |
| auto-scroll-speed-x | uint | auto-scroll-speed-x = "0" | Alias to speed-x. |
| auto-scroll-speed-y | uint | auto-scroll-speed-y = "0" | Alias to speed-y. |
| frames | uint | frames = "1" | Count of animation frames (by vertical). If 1, animation is disabled. |
| frame-delay | uint | frame-delay = "128" | Delay between every frame in milliseconds. |
| framespeed | uint | framespeed = "128" | Alias to frame-delay. |
| display-frame | uint | display-frame = "0" | Show specific frame when animation is turned off. |
| frame-sequence | uint-array | frame-sequence = "0,2,5,0,0,0,6,7,0" | A custom sequence of animation frames. |
Level blocks (solid ground/wall/ceiling) (lvl_blocks.ini)
Definition of blocks for levels
| [ blocks-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 638 | Allocate number of BLOCK-ID's to define blocks |
| grid | >=1 | grid = 32 | Default alignment grid size for all blocks without defined "grid" field. |
| config-dir | string | config-dir = "items/blocks" | Enables split config mode (using a set of block-*.ini files in the specified directory instead finding sections in the same INI-file) |
Note: in the split mode or in the custom level/episode block-*.ini config file, section name is always block.
Settings of each block (Where '*' - should be a BLOCK-ID from 1 to total number of blocks)
You should define settings for all allocated BLOCK-ID range!
| [ block-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| image | string | image = "block-1.gif" | Image filename of block |
| name | string | name = "Wood block" | Title of block |
| group | string | group = "Common blocks" | Group name where included this block |
| category | string | category = "Wood" | Category name where included this block |
| description | string | description = "Knock it!" | A short description about this element. |
| grid | >=1 | grid = 32 | Size of aligning grid |
| default-invisible | [0,1] | default-invisible = 0 | Set default invisible flag for this block |
| default-slippery | [0,1] | default-slippery = 0 | Set default slippery flag for this block |
| default-npc-content | +/- integer | default-npc-content = 12 | Set default content of this block >0 - ID of NPC <0 - coins number if is 0 - empty block |
| sizable | [0,1] | sizable = 0 | Makes this block be re-sizable |
| z-layer | string | z-layer = background | Default Z-Order layer of block: background, foreground |
| view | string | view = background | Alias to "z-layer" field |
| danger | -3...4 | danger = 0 | Make block danger to player which contacted with this block by side: 0 - block is safe |
| collision | 0..2 | collision = 1 | Collision type of block: 1 - collision on all sides |
| slope-slide | [0,1] | slope-slide = 0 | Allow slide on slope (for triangle shape blocks) |
| shape-type | -2..3 | shape-type = 0 | Collision shape of this block: (see picture below) |
| lava | [0,1] | lava = 0 | Burn of all NPC's and playable characters which contacted with this block. Exception are lava-protected NPC's. |
| destroyable | [0,1] | destroyable = 0 | Can be destroyed with shell/head bump |
| destroyable-by-bomb | [0,1] | destroyable-by-bomb = 0 | Block is destroyable by Bomb explosion |
| destroyable-by-fireball | [0,1] | destroyable-by-fireball = 0 | Destroyable by fireball marked NPC |
| spawn-on-destroy | string/integer | spawn-on-destroy = "0" | Object type-ID for spawn after destroy Examples: 0 - nothing , block-* , npc-* where * - is an positive integer |
| destroy-effect | +integers | destroy-effect = 1 | Play effect ID on destroy, 0 - no effect |
| bounce | [0,1] | bounce = 0 | Bounce block. if playable character will stand to this block, it will be bounced |
| hitable | [0,1] | hitable = 0 | Can be hit by player. if 0, hittable only if block is contains some NPC or coins |
| transform-onhit-into | >=0 | transform-onhit-into = 2 | if enabled hit transform, block will be transformed into block of ID=2, if value is 0, block will not be transformed, even if contains NPC |
| algorithm | >=0 | algorithm = 0 | Special block algorithm, for example: on/off switcher, invisible block, player switch block |
| animated | [0,1] | animated = 0 | Enable animation |
| animation-revers | [0,1] | animation-revers = 0 | Enable reversed animation sequence |
| animation-bidirectional | [0,1] | animation-bidirectional = 0 | Animation will turn back on edge frames in sequence |
| frames | [0,1] | frames = 14 | Number of animation frames on sprite |
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds |
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay |
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds |
| frame-sequence | string, sequence of integers | frame-sequence = "1,3,2,0" | Initial custom animation frames sequence (first frame is 0, last is n-1). Empty string is usage of default sequence. |
| display-frame | >=0 | display-frame = 3 | If animation is disables, will be displayed this frame (first frame is 0 value) |
| hit-sound-id | >=0 | hit-sound-id = 3 | Play custom sound when something hits this block (if 0 - play default sound) |
| destroy-sound-id | >=0 | destroy-sound-id = 3 | Play custom sound when something destroys this block (if 0 - play default sound) |
Switch blocks | |||
| switch-button | [0,1] | switch-button = 0 | Hit of this block will cause toggle switch by defined ID |
| switch-block | [0,1] | switch-block = 0 | Switchable block which will be transformed on toggling specific switch ID |
| switch-id | integer | switch-id = 2 | ID of switch group. All blocks including in this group will be toggled with button which in same group which got hit |
| switch-transform | >=1 | switch-transform = 2 | Target transform BLOCK-ID. Block will be transformed when switch ID was toggled |
Player switch blocks (hit will transform a playable character to another) | |||
| player-switch-button | [0,1] | player-switch-button = 1 | Hit of this block will transform playable character to another specified |
| player-switch-button-id | integer | player-switch-button-id = 2 | ID of playable character to transform. |
| player-switch-frames-true | string, sequence of integers | player-switch-frames-true = "1,3,2,0" | Animation sequence while current playable character of specified ID is exists on a level |
| player-switch-frames-false | string, sequence of integers | player-switch-frames-false = "1,3,2,0" | Animation sequence while current playable character of specified ID is NOT exists on a level |
Player filter blocks (through this block can pass only playable character of specified ID) | |||
| player-filter-block | [0,1] | player-filter-block = 1 | This block will be non-collidable for a playable character of specified ID |
| player-filter-block-id | integer | player-filter-block-id = 2 | ID of playable character to transform. |
| player-filter-frames-true | string, sequence of integers | player-filter-frames-true = "1,3,2,0" | Animation sequence while current playable character of specified ID is exists on a level |
| player-filter-frames-false | string, sequence of integers | player-filter-frames-false = "1,3,2,0" | Animation sequence while current playable character of specified ID is NOT exists on a level |
Shapes of the blocks
Level Playable Characters (lvl_characters.ini)
<Reserved>
Graphical animation effects (lvl_effects.ini)
Definition of graphical effects for levels
Note: This configuration reference has not been completely finished and is subject to be changed at any time
| [effects-main] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | [>=0] | total = 148 | Allocate number of EFFECT-ID's to define effects |
Settings of each effect (Where '*' - should be a EFFECT-ID from 1 to total number of effects)
You should define settings for all allocated EFFECT-ID range!
| [effect-*] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| name | string | name = "Brick fragments" | Title of effect |
| image | string | image = "effect-134.gif" | Image file name of effect |
| frames | [>=1] | frames= 4 | Total number of frames on image |
| frame-style | [>=0] | frame-style= 0 | frame-style of effect: 0 - full frameset 1 - frames for left and right directions (1/2 of frameset) 2 - frames for left-right and upper directions (1/4 of frameset) |
| frame-delay | [>=1] | frame-delay = 128 | Delay between animation frames in milliseconds |
| frame-speed | [>=1] | frame-speed = 128 | Alias to frame-delay |
| framespeed | [>=1] | framespeed = 8 | Delay between animation frames in 1/65 seconds |
Level NPCs (lvl_npc.ini)
Definition of Non-playable characters for levels
Header with common settings
| [npc-main] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 292 | Total number of defined NPC's. Allocate NPC-ID range which should be used to define NPC's |
| config-dir | string | config-dir = "items/npc" | Enables split config mode (using a set of npc-*.ini files in the specified directory instead finding sections in the same INI-file) |
| grid | >=1 | grid = 32 | Default alignment grid size for all NPCs without defined "grid" field. |
| coin-in-block | >=1 | coin-in-block = 10 | Default coin NPC for coins block |
| physics-gravity-acceleration | floating point number | physics-gravity-acceleration = 16.25 | Gravity acceleration on fall |
| physics-max-fall-speed | floating point number | physics-max-fall-speed = 8 | Max falling speed of NPCs |
| effect-lava-burn | >=0 | effect-lava-burn = 13 | Spawn effect ID when NPC contacts with lava blocks and dies |
| projectile-sound-id | >=0 | projectile-sound-id = 0 | Play sound on projectile generation |
| projectile-speed | floating point number | projectile-speed = 10.0g | Initial speed of shooted NPC |
| talking-sign-image | string | talking-sign-image = "excl.png" | Filename of image file in the common images folder which will be shown to player when it touches a talkable NPCs |
Note: in the split mode or in the custom level/episode npc-*.ini config file, section name is always npc.
Settings of each NPC (Where '*' - should be a NPC-ID from 1 to total number of NPCs)
You should define settings for all allocated NPC-ID range!
| [ npc-* ] | |||||
|---|---|---|---|---|---|
| Parameter | Allowed values | Example value | Description | ||
Common values | |||||
| name | string | name = "Furba" | Name of NPC | ||
| group | string | group = "Talkhaus сommon" | Group where NPC is member | ||
| category | string | category = "Enemy" | Category of this NPC | ||
| description | string | description = "Small, but danger creature!" | A short description about this element. | ||
| image | string | image = "npc-1.png" | Name of image file which a sprite for this NPC. Same image filename will be used as custom sprite in level/episode folders | ||
| algorithm | string | algorithm = "furba.lua" | Filename of default algorithm script for this NPC | ||
| default-effect | >=1 | default-effect = 2 | Default effect which will be played when NPC was stomped | ||
| shell-effect | >=1 | shell-effect = 4 | Default effect which will be played when NPC killed by item | ||
| block-spawn-type | 0, 1 | block-spawn-type = 1 | Block spawn effect: 0 - smooth warping, 1 - bumped | ||
| block-spawn-speed | >=0.0 | block-spawn-speed = 3.2 | Bump speed (Bumped type only) | ||
| block-spawn-sound | 0, 1 | block-spawn-sound = 1 | Play sound on NPC spawn from a block | ||
| is-star | [0,1] | is-star = 1 | Special marker which will mark this NPC as star - a special items which requiring to collecting which uses in some games and episodes. | ||
Physics and mechanics | |||||
| physical-width | >=1 | physical-width = 32 | Width of NPC's hitbox | ||
| physical-height | >=1 | physical-height = 32 | Height of NPC's hitbox | ||
| block-npc | [0,1] | block-npc = 1 | NPC is a solid object for other NPCs from side | ||
| block-npc-top | [0,1] | block-npc-top = 1 | Other NPC's can stand on top of this NPC | ||
| block-player | [0,1] | block-player = 0 | NPC is a solid object for player. NPC will can push player. | ||
| block-player-top | [0,1] | block-player-top = 0 | Player can stand on top of this NPC | ||
| collision-blocks | [0,1] | collision-blocks = 1 | Enable collision with a blocks. You can disable collision if you want to create, for example, a ghost. | ||
| gravity | [0,1] | gravity = 1 | Enable gravity for this NPC. If you will disable it, NPC will fly in the air. | ||
| adhesion | [0,1] | adhesion = 1 | Allows NPC to walk on walls and on ceilings like insects | ||
| container | [0,1] | container = 0 | NPC can hold inside another NPC (special option type 2 is required) | ||
| container-elastic | [0,1] | container-elastic = 0 | Elastic sprite of container (like sizable block) | ||
| container-elastic-border-w | >=1 | container-elastic-border-w = 0 | Width of border to draw elastic container | ||
| container-show-contents | [0,1] | container-show-contents = 0 | Show contents of container in the game process | ||
| container-content-z-offset | floating point number | container-content-z-offset = 0 | Draw contents over or under main sprite of the NPC | ||
| container-crop-contents | [0,1] | container-crop-contents = 0 | Drawn sprite of contents will cropped with physical size box of the container | ||
| container-align-contents | [0,1,2] | container-align-contents = 0 | Y-align of contents sprite. 0 - align at center, 1 - align top-to-top, 2 - align top-to-bottom. | ||
| contact-padding | double | contact-padding = -1.0 | Padding of contact detection zone (working only when NPC itself has no blocking sides) | ||
| no-npc-collisions | [0,1] | no-npc-collisions = 0 | Editor specific flag: NPC can be placed over other NPC's without blocking but with anti-flood protection which preventing placement of NPC over another same NPC | ||
Graphics | |||||
| gfx-offset-x | integer | gfx-offset-x = 0 | Horizontal offset of GFX image relative to center | ||
| gfx-offset-y | integer | gfx-offset-y = 0 | Vertical offset of GFX image relative to bottom | ||
| gfx-height | >=1 | gfx-height = 32 | Height of visible GFX frame. By default calculating automatically from number of frames and framestyle values. Use it only if you getting incorrect GFX size. | ||
| gfx-width | >=1 | gfx-width = 32 | Width of visible GFX frame. By default calculating automatically from number of frames and framestyle values. Use it only if you getting incorrect GFX size. | ||
| physics-to-gfx | [1,0] | physics-to-gfx = 1 | Allows users to map Physical size to GFX size setup in their custom npc.txt config files. Default 1 | ||
| frame-style | 0..2 | frame-style = 0 | Declares how many framesets sprite sheet has: 0 - Symmetric item with full frameset. Frames count equal to count of actual frames count on sprite sheet
| ||
| frames | >=1 | frames = 2 | Number of physical frames on the sprite sheet per frameset (use frame-style value to set a count of framesets)
| ||
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds | ||
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay | ||
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds | ||
| display-frame | >=1 | display-frame = 128 | Default static frame in the editor with disabled animation | ||
| foreground | [1,0] | foreground = 0 | Set the npc foregroung Z-Layer. Sprite will be drawn over others but under foreground-2 BGO's | ||
| background | [1,0] | background = 0 | Set the npc background Z-Layer. Sprite will be drawn over sizalbe blocks but under background BGO's | ||
| z-offset | +/- floating point number | z-offset = 0 | Z-order offset modifies render priority | ||
| animation-directed-direction | [1,0] | animation-directed-direction = 1 | Inverse order of animation frames dependent to direction of NPC | ||
| animation-direction | [0,1] | animation-direction = 0 | Direction of animation order: 0 - direct sequence, 1 - reverse frame sequence | ||
| animation-bidirectional | [0,1] | animation-bidirectional = 0 | Bidirectional animation: order of frames sequence will be turned back on edge frame | ||
Alignment | |||||
| grid | >=1 | grid = 32 | Sets the align grid size | ||
| grid-offset-x | integer | grid-offset-x = 0 | Horizontal align offset relative to grid point.
| ||
| grid-offset-y | integer | grid-offset-y = 0 | Vertical align offset relative to grid point
| ||
| grid-attachement-style | [1,0] | grid-attachement-style = 1 | 0 - Align NPC Item's center to horizontal center of grid cell (default) 1 - Align NPC Item's center to edge of cells. | ||
Editor specific animation | |||||
| editor-animation-sequence | Array of unsigned integers | editor-animation-sequence = "0,2,0,1" | Common animation frames sequence (for both directions). If not set, default animation will play.
| ||
| editor-animation-sequence-left | Array of unsigned integers | editor-animation-sequence-left = "0,2,0,1" | Common animation frames sequence (for left direction, common will be overwritten). | ||
| editor-animation-sequence-right | Array of unsigned integers | editor-animation-sequence-right = "0,2,0,1" | Common animation frames sequence (for right direction, common will be overwritten) | ||
Special values settings | |||||
| have-special | [0,1] | have-special = 0 | Use the special NPC's option which can used to make NPC Algorithm more flexible and configurable | ||
| special-name | string | special-name = "Mood level" | Title for the special value | ||
| special-type | [0,1,2] | special-type = 0 | Defines type of control element which will be used to setup special value:
| ||
| special-combobox-size | >=1 | special-combobox-size = 3 | Number of combo box items | ||
| special-option-* | string | special-option-* = "I'm happy!" | Define of each combo box item (where '*' should be an index of each combo box item, begins from 0 and ends with 'number of items'-1 ) | ||
| special-spin-min | integer | special-spin-min = 0 | Minimal value of spin box | ||
| special-spin-max | integer | special-spin-max = 25 | Maximal value of spin box | ||
| special-spin-value-offset | integer | special-spin-value-offset = 1 | Offset value which will be apply into visible in the editor value. For example, if offset is +1, in the editor will be shown 25 but in the configuration will be sated the 24 value. | ||
| have-special-2 | [0,1] | have-special-2 = 0 | Use the second special NPC's option which can used to make NPC Algorithm more flexible and configurable. Needs if your algorithm needs more special values. | ||
| special-2-name | string | special-2-name = "Backpack content" | Title for the special value | ||
| special-2-type | [0,1,2] | special-2-type = 0 | Defines type of control element which will be used to setup special value:
| ||
| special-2-npc-spin-required | Array of integes | special-2-npc-spin-required = "34,56,23" | List of NPC-ID's which causing usage of second special value in the spin box mode | ||
| special-2-npc-box-required | Array of integes | special-2-npc-box-required = "23,11,23,44" | List of NPC-ID's which causing usage of second special value in the combo box mode | ||
| special-2-combobox-size | >=1 | special-2-combobox-size = 3 | Number of combo box items | ||
| special-2-option-* | string | special-2-option-* = "Yesterday cola" | Define of each combo box item (where '*' should be an index of each combo box item, begins from 0 and ends with 'number of items'-1 ) | ||
| special-2-spin-min | integer | special-2-spin-min = 0 | Minimal value of spin box | ||
| special-2-spin-max | integer | special-2-spin-max = 25 | Maximal value of spin box | ||
| special-2-spin-value-offset | integer | special-2-spin-value-offset = 1 | Offset value which will be apply into visible in the editor value. For example, if offset is +1, in the editor will be shown 25 but in the configuration will be sated the 24 value. | ||
Gameplay settings | |||||
| score | [0....13] | score = 2 | Scores which player will get when take or kill this NPC 0, 10, 100, 200, 400, 800, 1000, 2000, 4000, 8000, 1up, 2up, 5up, 3up | ||
| speed | >=0 | speed = 64 | Default movement speed in px/s | ||
| moving | [0,1] | moving = 1 | Enable built-in simple movement right/left algorithm | ||
| scenery | [0,1] | scenery = 0 | Makes NPC as static body which can't be moved from side (like blocks) | ||
| keep-position | [0,1] | keep-position = 0 | NPC will not be returned to initial position on despawn | ||
| shared-animation | [0,1] | shared-animation = 1 | If value 0, NPC will use global shared animator and all NPC's of this type will are have same animation sequence | ||
| activity | [0,1] | activity = 1 | NPC will have onLoop() event and will do AI. If flag is 0, NPC will keep new state while level will not be finished or replayed. Set 0 value, for example, to coins and 1 value for living enemies or grabbable items. | ||
| immortal | [0,1] | immortal = 0 | NPC Can't be killed or destroyed | ||
| can-be-eaten | [0,1] | can-be-eaten = 0 | NPC Can be eaten with using of animal transports (Catnip, Yoshi) | ||
| takable | [0,1] | takable = 0 | Make NPC Destroyable on contact with player | ||
| grab-side | [0,1] | grab-side = 0 | NPC Can be grabbed from side | ||
| grab-top | [0,1] | grab-top = 0 | NPC can be grabbed from top | ||
| grab-any | [0,1] | grab-any = 0 | NPC can be grabbed from any contact points | ||
| default-health | >=1 | default-health = 1 | NPC Health value. By default NPC can be killed from one hit. | ||
| hurtplayer | [0,1] | hurtplayer = 1 | NPC will hurt player on contact | ||
| hurtnpc | [0,1] | hurtnpc = 0 | Hit another npc on contact with them | ||
NPC Direction value features | |||||
| direction-alt-title | string | direction-alt-title = "Activity" | Alternate title of "direction" option | ||
| direction-alt-left-field | string | direction-alt-left-field = "On" | Alternate title of "left direction" option | ||
| direction-alt-right-field | string | direction-alt-right-field = "Off" | Alternate title of "right direction" option | ||
| direction-no-rand-field | [0,1] | direction-no-rand-field = 1 | Disallow usage of random direction value | ||
Legacy SMBX64 Editor specific features (Reserved and aren't not used) | |||||
| allow-bubble | [0,1] | allow-bubble = 0 | NPC is packable into the bubble | ||
| allow-egg | [0,1] | allow-egg = 1 | NPC is packable into the egg | ||
| allow-lakitu | [0,1] | allow-lakitu = 1 | NPC can be set into SMW Lakitu generator | ||
| allow-buried | [0,1] | allow-buried = 1 | NPC can be burred underground with herb | ||
Default values of flags in the editor | |||||
| default-friendly | [0,1] | default-friendly = 0 | Friendly flag | ||
| default-no-movable | [0,1] | default-no-movable = 0 | "Doesn't move" (No movement) flag | ||
| default-is-boss | [0,1] | default-is-boss = 0 | "Set as boss" (SMBX Legacy Boss) flag | ||
| default-special-value | integer | default-special-value = 0 | Default value of special parameter | ||
Events | |||||
| deactivate | [0,1] | deactivate = 1 | Deactivate NPC after 4 sec offscreen. Deactivation will return NPC into initial state and NPC will be activated again if it will appear on screen after deactivation | ||
| deactivate-delay | >=0 | deactivate-delay = 4000 | Deactivation timeout | ||
| deactivate-off-room | [0,1] | deactivate-off-room = 0 | Deactivate NPC outed off section | ||
| bump-on-stomp | [0,1] | bump-on-stomp = 1 | Playable character will be bumped on stomp | ||
| kill-slside | [0,1] | kill-slside = 1 | NPC can be killed while player sliding on slope | ||
| kill-onjump | [0,1] | kill-onjump = 1 | NPC can be killed by stomp on head | ||
| kill-bynpc | [0,1] | kill-bynpc = 1 | NPC can be killed by NPC which thrown by player or kill by contact with npc-hurtful NPC's. for example: moving SHELLs have "HURT_NPC", and shell kills ALL NPCs on contact. | ||
| kill-on-pit-fall | [0,1] | kill-on-pit-fall = 0 | NPC will die on falling down out of section (falling into the pit) | ||
| kill-fireball | [0,1] | kill-fireball = 1 | NPC can be killed by fire ball shooting | ||
| kill-iceball | [0,1] | kill-iceball = 1 | NPC can be frozen by ice ball shooting | ||
| kill-hammer | [0,1] | kill-hammer = 1 | NPC can be killed by hammer shooting | ||
| kill-tail | [0,1] | kill-tail = 1 | NPC can be killed by tail punch | ||
| kill-spin | [0,1] | kill-spin = 1 | NPC can be killed by stomp with spin | ||
| kill-statue | [0,1] | kill-statue = 1 | NPC can be stomped by statue fall | ||
| kill-with-mounted | [0,1] | kill-with-mounted = 1 | NPC can be killed with mounted transports (like big shoes, magic sacks, helicopters ) | ||
| kill-on-eat | [0,1] | kill-on-eat = 1 | NPC will die when will be eaten | ||
| cliffturn | [0,1] | cliffturn = 1 | NPC will turn on cliff edge | ||
| lava-protection | [0,1] | lava-protection = 1 | NPC will not be burned in lava | ||
Level exit | |||||
| is-exit | [0,1] | is-exit = 1 | Killing/taking of this NPC will trigger exiting of the level. | ||
| exit-direction | [-1,0,1] | exit-direction = 1 | Direction where player will walk when exit was trigger | ||
| exit-code | [>=1] | exit-code = 1 | Return level exit code to world map. | ||
| exit-delay | [>=0] | exit-delay = 4500 | Delay in milliseconds before level will be exited. | ||
| exit-sound-id | [>=0] | exit-sound-id = 19 | Play sound by ID when NPC has been killed/taken and when exit has been triggered. | ||
World map terrain tiles (wld_tiles.ini)
Definition of a terrain tiles for a world maps
| [ tiles-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 328 | Allocate TILE-ID's to define tiles. |
| grid | >=1 | grid = 32 | Default alignment grid size for all terrain tiles without defined "grid" field. |
| config-dir | string | config-dir = "items/terrain" | Enables split config mode (using a set of tile-*.ini files in the specified directory instead finding sections in the same INI-file) |
Note: in the split mode or in the custom level/episode tile-*.ini config file, section name is always tile.
Settings of each tile (Where '*' - should be a TILE-ID from 1 to total number of tiles)
You should define settings for all allocated TILE-ID range!
| [ tile-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| group | string | group = "Common tiles" | Name of organizing group (reserved) |
| category | string | category = "Blue" | Name of organizing category (reserved) |
| description | string | description = "Just blue" | A short description about this element. |
| image | string | image = tile-1.gif | Filename of tile picture |
| grid | >=1 | grid = 32 | Size of align grid |
| animated | [0,1] | animated = 0 | Enable sprite animation for this tile |
| frames | >=1 | frames = 1 | Total number of frames on sprite |
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds |
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay |
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds |
| display-frame | >=0 | display-frame = 0 | Default frame index for disabled animation mode in the editor |
| row | >=0 | row = 5 | Row index in the table of tiles |
| col | >=0 | col = 2 | Column index in the table of tiles |
World map sceneries (wld_scenery.ini)
Definition of sceneries for world maps
| [ scenery-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 32 | Allocate SCENERY-ID's to define sceneries. |
| grid | >=1 | grid = 32 | Default alignment grid size for all scemeries without defined "grid" field. |
| config-dir | string | config-dir = "items/scenery" | Enables split config mode (using a set of scenery-*.ini files in the specified directory instead finding sections in the same INI-file) |
Note: in the split mode or in the custom level/episode scene-*.ini config file, section name is always scenery.
Settings of each scenery (Where '*' - should be a SCENERY-ID from 1 to total number of sceneries)
You should define settings for all allocated SCENERY-ID range!
| [ scenery-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| group | string | group = "Common sceneries" | Name of organizing group (reserved) |
| category | string | category = "City" | Name of organizing category (reserved) |
| description | string | description = "It's my car" | A short description about this element. |
| image | string | image = scene-1.gif | Filename of scenery picture |
| grid | >=1 | grid = 32 | Size of align grid |
| animated | [0,1] | animated = 0 | Enable sprite animation for this tile |
| frames | >=1 | frames = 1 | Total number of frames on sprite |
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds |
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay |
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds |
| display-frame | >=0 | display-frame = 0 | Default frame index for disabled animation mode in the editor |
World map path cells (wld_paths.ini)
Definition of paths for world maps
| [ path-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 32 | Allocate PATH-ID's to define paths. |
| grid | >=1 | grid = 32 | Default alignment grid size for all path cells without defined "grid" field. |
| config-dir | string | config-dir = "items/paths" | Enables split config mode (using a set of path-*.ini files in the specified directory instead finding sections in the same INI-file) |
Note: in the split mode or in the custom level/episode path-*.ini config file, section name is always path.
Settings of each path (Where '*' - should be a PATH-ID from 1 to total number of paths)
You should define settings for all allocated PATH-ID range!
| [ path-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| group | string | group = "Common paths" | Name of organizing group (reserved) |
| category | string | category = "Forest" | Name of organizing category (reserved) |
| description | string | description = "Nice ground path" | A short description about this element. |
| image | string | image = path-1.gif | Filename of path picture |
| grid | >=1 | grid = 32 | Size of align grid |
| animated | [0,1] | animated = 0 | Enable sprite animation for this tile |
| frames | >=1 | frames = 1 | Total number of frames on sprite |
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds |
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay |
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds |
| display-frame | >=0 | display-frame = 0 | Default frame index for disabled animation mode in the editor |
| row | >=0 | row = 5 | Row index in the table of tiles |
| col | >=0 | col = 2 | Column index in the table of tiles |
World map level entrance point cells (wld_levels.ini)
Definition of level points for world maps
| [ levels-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 32 | Allocate LEVEL-ID's to define level enter points. |
| grid | >=1 | grid = 32 | Default alignment grid size for all level points without defined "grid" field. |
| path | >=0 | path = 0 | Choice a LEVEL-ID's to reserve it as "background path" picture. |
| bigpath | >=0 | bigpath= 29 | Choice a LEVEL-ID's to reserve it as "BIG background path" picture. |
| config-dir | string | config-dir = "items/levels" | Enables split config mode (using a set of level-*.ini files in the specified directory instead finding sections in the same INI-file) |
Note: in the split mode or in the custom level/episode level-*.ini config file, section name is always level.
Settings of each level (Where '*' - should be a LEVEL-ID from 0 to total number of levels)
You should define settings for all allocated LEVEL-ID range! (Be careful! Unlike other items, level items iteration begins from 0!)
| [ level-* ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| group | string | group = "Common levels" | Name of organizing group (reserved) |
| category | string | category = "Blue" | Name of organizing category (reserved) |
| description | string | description = "Just blue" | A short description about this element. |
| image | string | image = level-1.gif | Filename of level picture |
| grid | >=1 | grid = 32 | Size of align grid |
| animated | [0,1] | animated = 0 | Enable sprite animation for this tile |
| frames | >=1 | frames = 1 | Total number of frames on sprite |
| frame-delay | >=1 | frame-delay = 128 | Delay between animation frames in milliseconds |
| frame-speed | >=1 | frame-speed = 128 | Alias to frame-delay |
| framespeed | >=1 | framespeed = 8 | Delay between animation frames in 1/65 seconds |
| display-frame | >=0 | display-frame = 0 | Default frame index for disabled animation mode in the editor |
