Kapman doesn't use element ID's. Instead, frames within an svg are found based on their position in the svg file. Unlike using element ID's, this allows for graphics that do not fill the frame (which is especially important for walls).

Themes also have a configuration file, to tell Kapman how to render the svg elements. Each element type has a section, along with settings relevant to that section. An example of each section is given below, followed by a description of the settings in that section, and a description of how the SVG should be laid out.

  [Game]
  ghostName1="Stovepipe"
  ghostName2="Toupe"
  ghostName3="Shapka"
  ghostName4="Tiara"
This section provides names for the ghosts (used by the introduction). If you don't want to change them, omit the section, and the defaults will be used. Internationalized variants should be provided.

  [Walls]
  spacing=1.25
The "spacing" setting affects the distance between frames (in this case, tiles). The value should be not less than 1.0. All elements are 20px x 20px, so a spacing of 1.25 means that tiles (frames) are 20px on a side with 5px of padding between each row/column. Tile (frame) 0 should fill the document, which should be 20px x 20px; additional tiles (frames) are laid out to the right and below.

The wall_template.svg graphic provides a key for which wall tile is which. Green squares are not used. The dark squares in the header row/column indicate what walls are adjacent to a given tile; for example, tile (0, 0) has no neighbors, tile (0, 1) (first row, second column) has a neighbor to the middle-right, tile (3, 4) has neighbors to the top, left, right and bottom, but no corner neighbors. Tile (7, 7) has all eight possible neighbors.

== kapman.svg ==
  [Kapman]
  spacing=1.25
  size=20.0
  directions=true
  frames=8
  speed=0.2
  quantize=false
The "directions" setting is a boolean indicating if there are different frames for each direction. If so, the directions are N, S, E, W, with N in row 0. Animation frames for each direcation are laid out to the right, with "frames" frames for each direction. All directions must have the same number of frames. The character will animate such that "speed=1.0" will result in exactly one animation cycle per tile (20 px) of movement. The "size" setting, if specified, indicates that a square of that size should be rendered, rather than the default 20 px. Spacing is still calculated as if the size is 20. If "quantize" is true (default if omitted is false), the frame will be displayed at a position exactly 20/frame px offset from being exactly aligned on a cell; this may cause jerkier movement but will prevent "sliding" if you are trying to achieve a walking animation. (The game tries to update the view at 60 fps, so frame counts that evenly divide 60 - e.g. 5, 6, 10, 12, 15, 30 - will tend to work better.)

== ghost{1,2,3,4}.svg ==
  [Ghost]
  spacing=1.25
  directions=true
  framesHunter=8
  framesPrey=4
  framesDead=1
  speedHunter=0.2
  speedPrey=0.1
Ghosts have four states, "hunter" (can kill the player), "prey" (can be eaten; after an energizer has been eaten), "blink" (about to switch from prey back to hunter), and "dead" (has been eaten and is returning to camp). The blink animation must have the same number of frames as the prey animation, and runs at the same speed. Animation speed is determined by "speed{Hunter,Prey,Dead}" as with the player, with "speedPrey" used also for the blinking state.

Frames are laid out as follows:
HN1 HN2 ... HS1 HS2 ... HE1 HE2 ... HW1 HW2 ...
PN1 PN2 ... PS1 PS2 ... PE1 PE2 ... PW1 PW2 ...
BN1 BN2 ... BS1 BS2 ... BE1 BE2 ... BW1 BW2 ...
DN1 DS1 DE1 DW1

== energizer.svg ==
  [Energizer]
  spacing=1.25
  frames=6
  speed=400

== bonus.svg ==
  [Bonus]
  spacing=1.25
  items=7
  frames2=5
  speed2=300
Bonus items may be animated, but do not need to be. The setting "framesN" where N is the item number (starting with zero) specifies that item N has that many frames. As with energizers, "speed" is the number of milliseconds to complete one animation cycle. If no "framesN" is specified for a given N, no animation (one frame) is assumed. Animation frames are laid out to the right. Items are laid out downward.

=== EXTRAS ===
There are several additional svg's that do not have configuration settings.

- background.svg is a 100px x 100 px image used for the background. It is scaled to fill the game area, and is cropped as needed.

- corridor.svg is a 20px x 20px tile used for non-wall cells in the maze, and is optional.

- pill.svg is a 20px x 20px frame for the generic dots that are eater. They are not animated.

- camp{N,S,NS,EW}.svg is an arbitrary-sized image representing the ghost camp. It is drawn 1:1 centered on the ghost camp. The four variants {N,S,NS,EW} represent the direction of the exits (respectively: top, bottom, top and bottom, sides).
