Game Configuration Pack References
Game Configuration package is a main foundation for all games which will work with PGE. 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
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 |
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.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 |
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 |
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_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. |
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 |
| 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 |
| grid | >=1 | grid = 32 | Size of grid snapping |
| view | string | view = background | Default Z-Order layer of background object: background2, background, foreground, foreground2 |
| offset-x | integer | offset-x = 0 | Grid offset X |
| offset-y | integer | offset-y = 0 | Grid offset Y |
| z-offset | integer | z-offset = 0 | Z-Order offset relative to default Z-Order |
| 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-speed | >=1 | frame-speed = 125 | Interval in milliseconds between frames |
| 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. |
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 |
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 |
| name | string | name = "Big field" | Title of background |
| type | string | type = double-row | Background model type: single-row, double-row, tiled |
| 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 |
| 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, top |
| tiled-in-editor | [0,1] | tiled-in-editor = 1 | Show this background tiled in the editor |
| magic | [0,1] | magic = 1 | Enable magic multi-parallax of background (cut image into horizontal strips with differenced parallax coefficient) |
| magic-strips | >=1 | magic-strips = 3 | Number of magic parallax strips |
| 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) |
| magic-speeds | Array of float numbers | magic-speeds = "1.2,2.1,3" | List of horizontal parallax coefficients for each magic strip |
| animated | [0,1] | animated = 0 | Enables sprite animation for background |
| frames | >=1 | frames = 4 | Number of frames which using by this background |
| framespeed | >=1 | framespeed = 128 | delay between animation frames |
| image | string | image = "background2-24.png" | Image filename of background |
Second image | |||
| second-image | string | second-image = "background2-27.png" | Image filename of second row of background (using only by double-row background) |
| second-repeat-h | float >=1 | second-repeat-h = 4 | Horizontal parallax coefficient for second row (using only by double-row background) |
| 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 |
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 |
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 |
| 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 |
| 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 |
| framespeed | >=1 | framespeed = 128 | Delay between frames in milliseconds |
| 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
lvl_characters.ini
<Reserved>
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-speed | [>=1] | frame-speed = 64 | Default delay between animation frames |
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 |
| bubble | >=1 | bubble = 283 | NPC-Container for packed in bubble |
| egg | >=1 | egg = 96 | NPC-Container for packed in egg |
| lakitu | >=1 | lakitu = 284 | NPC-Container for spawn by lakitu |
| buried | >=1 | buried = 91 | NPC-Container for packed in herb |
| icecube | >=1 | icecube = 263 | NPC-Container for frozen NPCs |
| iceball | >=1 | iceball = 265 | Marker for player's iceball |
| fireball | >=1 | fireball = 13 | Marker for player's fireball |
| hammer | >=1 | hammer = 171 | Marker for player's hammer |
| boomerang | >=1 | boomerang = 292 | Marker for player's boomerang |
| 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 |
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 |
| 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) |
| 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 | 0 - Symmetric item with full frameset 1 - Asymmetric item with left and right direction frames. Sprite dividing to 2 framesets for left and right directions 2 - Asymmetric item with left, right and turned upper frame sets. Sprite has a 4 framesets for left-right direction states and turn upper left-right states Note: This option may be ignored in some algorithms |
| frames | >=1 | frames = 2 | Number of frames per frameset Note: Don't forget about frame styles: framestyle 0 uses whole frameset of sprite, so you can count all frames on sprite and set up. 1 has a two framesets for left and rigth directions where you should count a half of whole frameset on sprite. 2 users four framesets on sprite, so you need to count quoter of presented frames on your sprite. Some algorithmic NPC's can have custom framestyles which aren't compatible with current stuff |
| frame-speed | >=1 | frame-speed = 128 | Delay between frames in milliseconds |
| 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. Note: Value must be less than half of grid size to keep aligning correct |
| grid-offset-y | integer | grid-offset-y = 0 | Vertical align offset relative to grid point .Note: Value must be less than half of grid size to keep aligning correct |
| grid-attachement-style | [1,0] | grid-attachement-style = 1 | 0 - Align NPC Item's center to horizontal center of grid cell 1 - Align NPC Item's center to edge of cells. |
Editor specific animation | |||
| custom-animation | [0,1] | custom-animation = 0 | Display in the editor a custom animation: this options useful for NPC's which have a non-standard algorithmic animations (for example, some bosses) |
| custom-animation-alg | [0,1,2] | custom-animation-alg = 0 | Custom animation algorithm:
|
| custom-animation-fl | >=0 | custom-animation-fl = 0 | First frame for LEFT direction |
| custom-animation-el | >=0 | custom-animation-el = 0 | Last frame for LEFT direction or Jump step |
| custom-animation-fr | >=0 | custom-animation-fr = 0 | First frame for RIGHT direction |
| custom-animation-er | >=0 | custom-animation-er = 0 | Last frame for RIGHT direction or Jump step |
| ani-frames-cmn | Array of unsigned integers | ani-frames-cmn = "0,2,0,1" | Common animation frames sequence (for both directions) |
| ani-frames-left | Array of unsigned integers | ani-frames-left = "0,2,0,1" | Common animation frames sequence (for left direction, common will be overwritten) |
| ani-frames-right | Array of unsigned integers | ani-frames-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. |
wld_tiles.ini
Definition of tiles for world maps
| [ tiles-main ] | |||
|---|---|---|---|
| Parameter | Allowed values | Example value | Description |
| total | >=1 | total = 328 | Allocate TILE-ID's to define tiles. |
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) |
| 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-speed | >=1 | frame-speed = 125 | Delay between frames in milliseconds |
| 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 |
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. |
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) |
| 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-speed | >=1 | frame-speed = 125 | Delay between frames in milliseconds |
| display-frame | >=0 | display-frame = 0 | Default frame index for disabled animation mode in the editor |
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. |
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) |
| 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-speed | >=1 | frame-speed = 125 | Delay between frames in milliseconds |
| 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 |
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. |
| 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. |
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) |
| 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-speed | >=1 | frame-speed = 125 | Delay between frames in milliseconds |
| display-frame | >=0 | display-frame = 0 | Default frame index for disabled animation mode in the editor |
