Q2E Blood Culture

This is a Quake II updated version that was created exclusively to Q2A Blood Culture community. A clan of friends which I'm the leader and creator, where we play just for fun together since 2000 with Quake II in LANs and in 2005 went to online life with Quake II Evolved. Quake II Evolved Blood Culture was created from the original source of Quake II Evolved created by Team Blur.

This project started in 2005 as just add-ons named as MegaPak, just adding high quality textures and skins, all with the Logo's Clan and the primary results were great. But we are playing online for the first time, and avoid cheating online was really impossible with Quake II Engine. First you cannot know if a client was using a Q2 or Q2E, and second we can't know if someone was with smoke off and is seeing everything that the others can't, and other vars that make your way more easier. So was made the first AntiCheat that I tryed to resolved via script, that opened these vars to be queried by the server, and also beeing setted all the time, so if a player is not using the AntiCheat we can't see anything, so he will be kicked, and if he is using the vars are all the time setted, and will let us know if he wasn't using the AntiCheat. But all that was manually.

After more than a year of work, testings and 7 MegaPaks released, with pre-configured BOTs, more than 1700 maps, many bug fixes, new textures and skins to every model, weapon and object, new HUD and Inventory, AntiCheat always beeing updated and getting better, and the great BC Config feature, where all the configs become centralized to any type of game or MOD.

Well, I already had done everything I could to make our games better and fair, but still have things that I can't do it by scripting, and doing that AntiCheat check manually all the days was really getting me mad. With Q2E 0.40 abandoned by his creators I decided to study his engine and move on aside I'm not programming in C for almost 10 years, and that was my main problem, comeback to C programming.

So I asked for info in few forums, specially at Quake II Evolved about which softwares I'll need, the source, basic structure, etc... then I finally get the Q2E compiled and working, so it's time to start my real work.

I had few things in my mind that I really need to make:

Goals List
1. Automatic AntiCheat via Code (no more scripting)
2. Dedicated Q2E Server
3. Only accept Q2E Blood Culture clients
4. Fix the Siamese Twins Bug
5. Fix all the other small Bugs
6. Extras (Sounds, Music...)
7. Optimized and Standalone (not more a Q2 update)

With that in mind I start the work, and wasn't that difficult in any of the items on that list, except about the Siamese Twins Bug, which I don't really even know the cause of this bug, and was my biggest quest in this project.

But what the hell is the Siamese Twins Bug? In the Rocket Arena 2 MOD which we play almost the time, all players are spawned at the same time on the map, so in some maps 2 or more players are spawned together at the same spawn like were merged together... they can shot, look around, but can't move... so they simply will die fast and will not play that round, and probally his team will lose that round too. Which is very annoying to the gameplay.

Siamese Twins Bug Info
1. Doesn't have relation with Spawn Points available
2. Not occur in any official map, RA2 maps inclued
3. Only occur in Custom Maps, but not in all
4. In some maps happen sometimes
5. In others all the time, unplayable
6. While never occur in many of them too
7. Ultra Rare in DM/TDM/CTF (Spawn aren't together)

At first I thought was a problem with the RA2 MOD, but with all that info seams a problem with the maps, and not really with RA2. So that's was my first step trying to understand why this was happenning all the time, making impossilbe to play RA2 in half of our maps (around 800).

Convinced that is in fact a mapping problem, I went to Maric's forums, my fave map maker which also have thousands of maps with this problem, to ask which was the difference between few of his maps that work, and others that didn't work. But for my luck (WTH!) his was travelling on that time, and never replied me, but few other users tried to help me in many forums, and after many diverse and crazy explanations, came a user named as snake and told me about the SpawnPads of the buggy maps are hidden where in the others they are at default.

WTH! Since we play with RA2, all spawnpads are removed from the maps automaticaly by the MOD, so I never thought about it. So sounds that's the way that I need to fix this bug, and I ask my friend Assassino to make 3 test maps to me while I was working with the other features, then I'll really test if this is really what cause the bug. So I asked a small box with 4 Spawnpoints, one map with them at default, another with them at the same level of the floor, and the last one with them buried on the floor, completely hidden.

Then I started a RA2 sever with 6 players aside the only 4 Spawnpoints available.

Map Tests Results
Map Type Bug Result
Default Spawnpoints Never Happens
Floor Level Spawnpoints Happen Sometimes
Buried Spawnpoints Happens All the Time

Great! Now I know what causes the bug then the question now is how to fix that. The first thing that came to my mind was Spawn the players a little above where the Spawnpoints are in fact, then in theory this will be fixed. I found the code part about that, and the result was perfect, the players started to spawn above the spawnpoint. But this part of code is only available and controlled server side, and since I don't had the source of RA2, this will only fix the bug in DM/TDM/CTF gametypes, and not at RA2, where this bug happens a lot more.

Well, now I know what causes the bug, how to fix it, but I can't fix it because I don't had the source code of RA2. I tryed many times contact David Wright (RA2 Creator) to get the source to fix that, or at least point to him where to change one single line of the code, recompile, and send me back... but I was all the time ignored.

Aside all that bad things, many people over the internet was saying to quit because is impossible. But I simply refused to quit, and start to trying to find another way to do it... and after talking with r1ch from the famous R1Q2 client/server, he told me that have a feature called Override that is possible to replace the objects, change or exchange them via his script.

It's great! but isn't what I really need, because with that I'll need to create a override file to any buggy map that we have, and there's almost 1000 of them, aside copy all their structure to my Q2E version. So isn't a good way to follow. But this give me the idea of doing the manipulation of that same MapString that came with all data from the maps when the maps are beeing loaded, where the code is inside the EXE file, not the DLL like the spawn which I can't reach because don't have the source.

So what I need to do is read that string, find the spawn entities copying it to another string, add +15 to his X axis then replace the entity at the original one. Then in the end of MapString we will have all the Spawnpoints a little above his X axis point. Was a hell to do that with perfection, without abort and without damage the Maps which already was working. But I did it, and solved 99% of the chances to happen this bug again with RA2.

That manipulation will only occur when the gametype is RA2 and the spawn_fix var is 1. So you can turn on/off easily via console. Also will never do this over RA2 maps, the only way to avoid that was search for the "arena" substring at the MapString. But this left a chance that you have a map called something with "arena" in his name that aren't a RA2 map, then will not be possible to turn on spawn_fix on that map. Then I created the var spawn_or (default = 0), which if have the value 1, will make the manipulation anyway, doesn't matter if is or not a RA2 map. Then works great!

From our more than 1700 maps that we play, in less than 10 of them, sometimes in 1 or 2 Spawnpoints are still happening the bug, because these Spawnpoints are more low than the amount that I add to the X axis. But I can't push more up the players without they spawn with their heads glued on the top ceiling, if this ceiling is really low... so that's why my fix don't work to 100% of cases. I'm already listing all of them, and maybe I will add an extra code to treat these exceptions one day, but for now my objetive was reached.

Quake II Evolved Blood Culture

To download this game is requested a password in the install, the password is the url of our clan. With in your mind that this version was created only for use for the Blood Culture members, feel free to download and play it as your wish. Remembering, Q2E Blood Culture is 100% incompatible with Q2 or any other version of Q2E, so don't install over your Q2, or will completely damage him.