Remake: KAM TKE

The Forum for discussions in English

Moderatorzy: kuba11100, The Viking, Moderatorzy

Użytkownik Forum
Posty: 2
Rejestracja: 03 mar 2009, 22:45

Remake: KAM TKE

Post autor: Harold »

Of course many of you have heard of it, but I thought, why not keep you guys informed as well? It seems like a sensible thing to do since I think most people who will play it are here - because most KAM fans are here :)
The official website is here:
It has been created by (and it maintained by) Max Schwarzfischer (thanks!)

A lot of information could be found here:
But the site seems dead at the moment (I'm sure Litude will fix it soon though)

TKE will, of course, support translations. I've personally done English and Dutch (there are some mistakes of course, corrections are welcome)
In order to properly support Polish, I'll need to fix the fonts, but I'm sure it will work fine someday.
edit: the fonts have been fixed a little, some often-used letters are now included.

In the mean time, I gave the English and Dutch users a chance to see what TKE looks like in its current state (so you can't play yet, but you can look at maps and load some missions)
Seems fair if I give you all a chance as well.
You can get it here:
Thanks for the hosting space, misthafalls :)

Please remember that it's not finished and it can not be played yet. We're working on it.

Suggestions, translations, questions, bug reports, anything is welcome.


Some technical information

TKE uses .NET and XNA, the zip file above contains XNA but not .NET, so you have to install it yourself. Eventually the installer will do that. It already does that actually, but it's not included.

The new data formats:
* Single-file missions
A zip file with a .mis extension, usually contains a map file and a mission script and an index file. The index file is an XML file which looks like:

Kod: Zaznacz cały

<?xml version="1.0" encoding="utf-8"?>
  <map remote="false" compact="false"></map>
  <script type="dat">mission1.dat</script>
If remote is true, the map name must be an URL. This rare feature could be handy if you update your map often, since it will automatically be updated.
Compact specifies whether the map is in the new or the old format. If it says "true" but it isn't in the new format, TKE will crash. The other way around (saying false but it's compact anyway) will work, but is slower than writing true. Loading a compact map is faster than loading a normal map, and compact maps are smaller (in size, not in number of tiles). More on this later.
The script type can be "dat" or "xml" or it can be omitted in which case the type is inferred from the file extension. Currently only "dat" is supported, xml will be supported when the format is properly defined. If you want to help doing that, post here or here.
The index file must be called "index.xml".
The names of the map and mission are relative to the index file, but there is no compelling reason to use a lot of sub-folders inside a mission (not as far as I know, anyway).
* Compact maps.
The format is smaller than the old map format, hence the name.

Kod: Zaznacz cały

int32&#58; 0  - maps never have a width of 0 so this is a safe initial identifier
int32&#58; 0x31454B54  &#40;ascii TKE1, little-endian, format identifier&#41;
int32&#58; relative offset to map data
any number of optional blocks

possible blocks&#58;
	RSA&#58;	if this block is present, tile data is RSA encrypted
	if the timestamp is later than the current time or older than 2 years,
		the map will be saved in decrypted state, without the RSA block.
		ascii&#58; ".RSA"  = 0x4153522E
		int64&#58; timestamp

possibly empty space
<offset points here>
ushort&#58; width
ushort&#58; height
	for each tile&#58; &#40;left to right, top to bottom&#41;
struct tile
	byte&#58; type
	byte&#58; height
	byte&#58; object
		2bits&#58; rotation
		bit&#58; walkable
		bit&#58; buildable
		4bits&#58; reserved

no data after this point
Optional blocks are optional and currently not very well supported. That is, it works a little, but don't count on it. The RSA key is fixed, I'll put it here later (it's on the English forum if you need it now)
Any reserved bits should be zero, but don't count on them being zero (future formats may make them non-zero but will probably have a different indentifier as well, such as TKE2)

* .dat mission scripts.
They're the regular .dat scripts from the old KAM. So as always, xored with 0xEF. They can be loaded directly in which case the !SET_MAP is used to load the map, or they can be used inside single-file missions, in which case !SET_MAP is ignored and instead the map as specified by the index file is loaded.
There are, however, additions to it:
!CLEAR_ALL - clears the entire map
!SET_COLOR RED/BLUE/YELLOW - more colors will be added, sets the color for the current player, this is like remap and mapcolor combined and with pre-defined colors.
!ADD_WARE_TO_FIFTH - in case you need more warehouses
(more will follow)

* xml mission scripts.
The specification is not finished yet. I will update this post when it is, though it is likely that it will change somewhat over time.

* single-file campaign files.
This specification was thought to be finished but contained serious flaws. There are, however, a few things that will stay.
Like the missions they are zip files, but renamed to .cam.
Features will include but are not limited to: changing the background of the briefing screen, the briefing audio, the briefing text (it will have to be translatable of course, which is what I'm fighting with now.), specifying where the markers are, what they look like, what they look like when hovered over with the mouse, what they look like when not yet unlocked, you can (mis)use those markers to put Any other picture Anywhere on the briefing screen (so be creative) as long as the picture is contained within the campaign file or specified as URL. Campaigns can, like missions, link to files that will be downloaded from the internet when needed - use this with care and not often, since sometimes people won't be connected to the internet.
The index file must be called "index.xml"
The full specifications of the index will be put here later, when it's finished.