Game Spy - Red Alert | TByte | 08:48 02-05-2003 | | |
Lo
I was wondering how hard would it be to transform Game Spy into using Red Alert (1) ?
I know Red Alert is not full of people, we get at most 60 people on weekeneds, but now that Kali is back, we started to see some old members turning up occassionaly. Anyhow, the game still rocks...but no more cool goodies are made for RA anymore ;(
I made a messages logging program, so stuff like game start, map information, game result and lobby/game talking are logged into html. Then I thought of Game Spy....
Could you reveal how it works before I start doing a similar version for RA? Maybe you want to code one yourself? Maybe you could help me code wise, give me some hints.
My first guess was that Game Spy saves each cell's code at a certain period, then the codes are decoded with the viewer using the graphics in the mix files?
It would be possible doing a mini capturing utility of what's on player's screen, but I guess it won't help detect cheats.
I thought of idea of capturing data packets and logging things as they move along, but it would probably mean coding an engine just like the game's. I have helluva a lot of ideas of how this can be done, thing is I don't want to over do it for an old game like that.... we don't get many cheaters on RA, but saving replays and posting them on websites to teach newbies is what I want.
Have you yet found out how is checksum calculated for MIX files or the map files? I noticed all games use the same old .ini type file. The checksum for the map file and the mix file are both 20 bytes (mpr has [Digest], decoded I got 20 bytes). I started disassembling it for a while, I tried to find the actual memory space that's being hashed, to check what's being hashed. Got really messy, I lost my nerve on it gut tells me mpr and mix files checksums, and possibly all checksums used by Westwood are of same algorithm. Why I want checksum? It helps to detect cheaters in a way, because maps wihtout checksum are always being sent to all players. It slow the game start. If there was a checksum, RA could know if map exists on other side.
I also wanted to code a new engine for RA. The net-code sucks, e.g. message bytes are 148 bytes, when you only use 20. A lot of padded 0s. The sequence doesn't need to be like 4 bytes. Everything could be cut down. Kali seems to manage the protocols better, but Kali has bandwidth shortages. I would also like to code RA engine to allow p2p gaming. I am not thinking of supporting old RA's protocols :/
Hmm think that's it
Daniel