Gamion Format. Draft.

Legend: gamion - "game or collection-file" opt - optional req - required scode - application-source-code def - definition Gamion simplified definition Examples: scripting and deriving in gamion. Gamion format: envelope - opt mapsscript - opt envelope - "header script", definition for games, albums, or for both. Its format is jwon. mapsscript - Colorban-script or script in sok-format (External link). Without mapsscript, gamion can serve like add-on to core games and albums. Without envelope, gamion can be just a plain Colorban or Sokoban maps file. envelope can contain game-definitions, album-definitions, collection-seed, and credits. In plain words, this is a json-like-formatted-text wich opens up with the token /{ and has insertions of "here-document" fragments, single-line-comments, and single-line property assignments. Here it is how complex gamion can look: /{ "games" : { // new game "my_game" : "sample" ... }, "albums" : { ... }, "collection" : { .... } /} ####### # @$. # ####### The part with /{ .... /} is a envelope. The rest is mapsscript. Syntax-sugar is available, see first example at Game Craft. M a p s s c r i p t f o r m a t MAP_LOOKUP - opt colorban directives - opt sokoban-header - opt raw-comments - opt macros - opt plain text - opt sokoban-map - opt map-title - opt (tricky: map starts from title, but map encounter is detected by map-board) sokoban-board-script - req postboard - opt title - opt author - opt solution - opt solution - opt ... plain text - opt ... sokoban-map - opt ... colorban-map - opt :::map... - req board - req sub-directives - opt; def: near //\\ dereferences map colorban-board-script - opt if sub-directives refer to other board :::board_end - req postboard - opt :::title - opt :::author - opt :::[any-credit-related-key] - opt, see list in /.\ AVAILABLE CREDIT KEYS (see directives in scode) :::playpath... - opt (see also: scode) ... :::dress... - opt def: near //\\ COLLECTS DIRECTIVES FOR DRESS plain text :::map_end - opt only-if ::: map follows right away MAP_LOOKUP - opt; happens if :::map_end is not followed by :::map .... B a s i c d i r e c t i v e s Get an indea from source code section ///\\\ Digests :::-directive and runs short code. Map sugar: colorban board lines can be inserted like here: :::map -$-@-y- :::board_end Above map has no "#" symbol which stands for colorless wall. If your map has at least one line with "#", then each line of this map must have opening and closing wall, as in Sokoban map. Browse site's games, click on "About Map", "Edit Map Scripts", or "Collection Designer" buttons to learn from examples. D e r e f e r e n c i n g Board in map can be omitted in case if map refers to map located in another album or collection. Directives in preboard-zone are: :::akey :::collection_index :::map_index :::ckey :::mkey Get an indea from source code section //\\ dereferences :::context_akey //.\\ context_akey means ... B o a r d In map-script, sequence of symbols describing units in one x,y-planar-location is called "cell". Row examples: sok-format compatible: #-.$@# # . * + # Sokoban non-compatible: # .h2 X # # # h2:3.x X # .h1 # h2:3.x X y .h1 .h2:3 X y .h1 Cells longer than one char must be separated with spacers. Symbols longer than 1-char require presense of "." which separates them. : - feature is not ready Number after :-character will be parsed to rank of unit h2. Rank is not yet implemented in the application. The :-feature waits for this implementation. Crafter must know characters which are used in map script. (Map characters mapper is built by this code). D r e s s . . .. is Game's Skin and Meaning. Meaning: in the same Game in different Meanings, heros and walls may have different names and meaning. Different Meanings may have different stories and different text for rules. Skin: the way how game looks and what images are used. Dress is defined in object "dresses" in album. Dress can be specified right in a map script. In this case it overrides properties of it's parent dress in album or adds an extra dress to dresses if no parent with the same name is in album. parent DRESS is referred by the name of the map's dress :::dress=DRESS or by directive :::inherit_from=DRESS_X to make map's-DRESS inherit from DRESS_X see //.\\ inherits from default or from co-named parent: Get an indea from source code section //\\ COLLECTS DIRECTIVES FOR DRESS. Example for album designer: dresses: { default : { skin_key : 'dskin' }, special : { skin_key : 'nu_i_nu', ... }, ... } If nothing is set about dress in map, images taken from def/skins/dskin for dress "default" and from def/skins/nu_i_nu for dress "special" For developer: default <-- base_game.dresses.default and special <-- album.plgam.dresses.special <-- base_game.dresses.default Skins Directive :::skin=XXXX sets map's parser context to 'def/skins/XXXX'". Skins cannot be loaded from external urls, but images can. Images ------ If :::image=X=ZZZZ directive has a slash "/" inside ZZZZ, then skin context is ignored and ZZZZ is interpreted as path-directive. :::image=f=blue_man2.png ... result: image_url = gio.config.defpaths.SKINS_DEF_PATH + '/'+ ddww.common_skin_key + blue_man2.png :::image=f=mypath/blue_man2.png ... result: image_url = mypath/blue_man2.png :::image=f=//img/blue_man2.png ... result: image_url = http://mysite.com/album/img/blue_man2.png for external collection from http://mysite.com/album/collection.txt apparently: result: image_url = player_root_web_path/img/blue_man2.png for bundled-to-player-collection :::image=f=http://here-we-are.com/tile.png ... result: image_url = http://here-we-are.com/tile.png :::image=ground_x_3_1=ground_x_in_scene.png ... result: only ground_x with x,y = 3,1 is set to this picture Similar path conversions are true for :::back_image=transparent.png :::center_image=//transparent.png ( Programmer can get an indea from section //\\ modifies image. ) P l a y p a t h s :::playpath=MyTitle means playpath strings follow right after and named "MyTitle". :::optpath=333.22 tells to metrics estimator that solution is optimal in sense of path, and p,i = 333,22 :::solpath=333.22 is the same as above but it is not know is solution optimal or not. :::playpath cannot happen after :::optpath or after :::solpath E x a m p l e s :::dress=flocks :::skip :::dress=night :::title=Night :::inherit_from=flocks :::skin=flocks :::chosen :::image=f=blue_man2.png :::back_image=transparent.png :::center_image=transparent.png :::multiplayer=N This is player's "sugar". N must be positive integer. If this directive is set, then it is assumed that there are two or more acting breeds in the map, and after each move, focus is set to next breed. This "multiplayer" feature is ignored if this directive is absent. Back to Readme Home
When JS finds this token, #@title@# , then JS will make this div visible.
This page won't display if no JavaScript language enabled in your browser. To display this page, turn JavaScript on.