The game is fully customizeable, so the player can decide how it looks and sounds by just selecting from the options menu a theme among those installed in the themes
directory.
Making themes is not terribly difficult per se, as it basically boils down to arranging some graphics and/or sounds in accordance with a few rules: what is actually demanding is creating the graphics and sounds, which, of course, requires some specific skills.
To create a theme you need just KOG, a text editor and graphics/sound editing tools of your choice.
The following notes explain in detail how to create new themes.
GENERAL INFORMATION
*.c.bmp
for color information, *.a.bmp
for alphachannel information (f.ex.: font.c.bmp
, font.a.bmp
).
The file descriptor.txt
is a text file that carries some information regarding the appearance of the theme. To explain how it works, let us look at a practical example.
LEGAL_INFORMATION © 2007 Simone Bevilacqua
BACKGROUND = 026 72 105 109 111 017
MENU = 8 181 238 66
CHART = 127 110
FONT.MENU = -10 -5 -50
FONT.LABELS = 0 -100 -100
FONT.CHART = 0 0 0
FONT.STATUS = 0 0 0
FONT.OUTLINE = -100 -100 -100
OBJECT.SLOW = -100 0 0
OBJECT.NORMAL = -100 0 -100
OBJECT.FAST = 0 -100 0
OBJECT.SWIFT = 0 -100 -100
BEAMS.CATCHER = 000 255 000
BEAMS.FREEZER = 255 255 000
The lines have the following meaning.
LEGAL_INFORMATION
line defines the legal information to be shown in the menu "ABOUT" page.BACKGROUND
line defines the background vertical gradient shown in menu/information/pause screens.MENU
line defines the rectangular area occupied by the menu.CHART
line defines the position of the chart.FONT.*
lines define the color variations of the font base used to produce the font for the menu, the labels, the chart entries, the in-game status information and the outlines for outlined printouts.OBJECT.*
lines define the color variations of the objects base used to produce the slow, normal, fast and swift objects.FONT.*
lines.BEAMS.*
lines define the color of the catcher and freezer beams.
The file logo.c.bmp
[+ logo.a.bmp
] contains the logo graphics centred at the top of the menu/information/pause screens.
Its dimensions can be any.
TEMPLATE
The file template.c.bmp
[+ template.a.bmp
] contains the background graphics of the menu.
Its dimensions must be 48x48 pixels.
Since these graphics are stretched/squeezed to cover the whole menu area, the bitmap is subdivided into nine sections:
section | from | to |
top-left corner | <0, 0> | <7, 7> |
top side | <8, 0> | <39, 7> |
top-right corner | <40, 0> | <47, 7> |
right side | <0, 8> | <7, 39> |
core | <8, 8> | <39, 39> |
left side | <40, 8> | <47, 39> |
bottom-left corner | <0, 40> | <7, 47> |
bottom side | <8, 40> | <39, 47> |
bottom-right corner | <40, 40> | <47, 47> |
The file field.c.bmp
contains the playing field graphics.
Its dimensions must be 383x383 pixels.
The actual playing field is the circular area that has its center at <191, 191> and a diameter of 241 pixels, and must be clearly defined.
Two concentrical sub-areas must be clearly marked: their diameters must be of about 161 and 81 pixels.
GRAPHICS ARRANGEMENT
Some image sets are stored in a picture according to these rules:
Hint: for readability, it is recommendable to use the colorkey also as frame color (see the ELEVENTH IMAGE in the picture).
Things are simpler than they seem, as illustrated by these examples, which show five equivalent ways of defining the same set of images:
The file objects.c.bmp
[+ objects.a.bmp
] contains the graphics base of the objects.
It must contain 6 images arranged as per the GRAPHICS ARRANGEMENT rules.
The dimensions of each image can be any (although it is recommendable not to make them too big).
The images represent the animation frames of the objects. They are only the base of the actual objects graphics, as they will be recolored as indicated by the OBJECT.* lines in the descriptor.
Hint: make the images as bright as possible and perform recoloring by toning the RGB components down.
SPRITES
The file sprites.c.bmp
[+ sprites.a.bmp
] contains various images.
The images are arranged as per the GRAPHICS ARRANGEMENT rules.
image index(es) | dimensions (pixels) | description | notes |
0-2 | any | generator restart one-shot animation | automatically centered on the field |
3-8 | any | generator wait looping animation | automatically centered on the field |
9-11 | any | generator shot one-shot animation | automatically centered on the field; interrupts the other animations whenever an object is shot |
12-15 | any | object catch/destruction one-shot animation | centered where objects get caught/destroyed |
16 | any | pointer | centered on the pointed object |
17 | any | inverted object indicator | centered on inverted objects |
18 | any | rescuable object indicator | centered on rescuable objects |
19 | any | rescued object indicator | centered on rescued objects |
20-27 | 32x9 | trap left side looping animation when not moving | the hot-spot is at <18, 0>; catcher beams go from the segment <19, 0> - <19, 8> rightwards |
28-35 | 32x9 | trap right side looping animation when not moving | the hot-spot is at <13, 0>; catcher beams go from the segment <12, 0> - <12, 8> leftwards |
36-43 | 32x9 | trap left side looping animation when moving left | same as for images 20-27 |
44-51 | 32x9 | trap right side looping animation when moving left | same as for images 28-35 |
52-59 | 32x9 | trap left side looping animation when moving right | same as for images 20-27 |
60-67 | 32x9 | trap right side looping animation when moving right | same as for images 28-35 |
The file(s) font.c.bmp
and/or font.a.bmp
contain(s) the graphics base of the fonts.
The characters are arranged as per the GRAPHICS ARRANGEMENT rules.
The dimensions of each character can be any.
The characters are only the base of the actual characters, as they will be recolored as indicated by the FONT.* lines in the descriptor.
The characters set is ISO 8859-1.
SOUND SAMPLES
Every event has an associated sound effect that can be defined by simply providing a sound file with the appropriate file name.
The table below shows all the defined sound effects and the relative sound files.
sound file | played when |
congratulations.ogg
| the player enters the chart |
decelerator-G.ogg
| the decelerator is gained |
decelerator-U.ogg
| the decelerator is used |
expansion-G.ogg
| an expansion is gained |
freezer-G.ogg
| the freezer is gained |
freezer-U.ogg
| the freezer is used |
game_over.ogg
| the game ends |
inverter-G.ogg
| the inverter is gained |
inverter-U.ogg
| the inverter is used |
kickback-G.ogg
| the kickback is gained |
kickback-U.ogg
| the kickback is used |
laser-G.ogg
| the laser is gained |
laser-U.ogg
| the laser is used |
magnet-G.ogg
| the magnet is gained |
magnet-U.ogg
| the magnet is used |
miss.ogg
| an object is missed |
movement.ogg
| the trap moves |
navigation.ogg
| another menu item is made current |
nuke-G.ogg
| the nuke is gained |
nuke-U.ogg
| the nuke is used |
pointer-G.ogg
| the pointer is gained |
selection.ogg
| a menu item is selected / the game is paused |
shot.ogg
| an object is shot |
speed-up-G.ogg
| the speed-up is gained |
zap.ogg
| an object is caught/destroyed |
The file README.txt
contains any textual information by the theme author. It is especially suited to explain all the legal details. It is not compulsory, but it is highly recommended to include one in the theme archive.