SiN Episodes - Germany USK Compatibility
When SiN Episodes released in Germany, a few changes had to be made in order for the game to meet the standards of the USK ratings system. Some of these changes can affect how your level appears to users of the USK-rated version.
To ensure that your level will work correctly for the USK-rated version of the game, please consider these options:
- Do nothing.
- The game automatically replaces restricted models with white metal cubes.
- Don't use restricted content.
- A reliable way to make sure that your level will appear the same for both versions is to simply not use content that is different between them.
- Use OnViolence* to dynamically modify the level.
- The OnViolenceLow output in the logic_auto entity will enable you to trigger events when the level is run by the USK-rated version of the game.
- The OnViolenceHigh output does the same for the non-USK release.
- On the logic_auto entity, make sure you uncheck Remove on fire on the Flags tab, and make sure that each output is not set to Fire once only.
- Used in the Druglab chapter level se1_u4lab02 (Laboratory) to disable the gas chambers and its enclosed enemies, which turns grunts into mutants, in the German release of the game.
USK Changes - Developer Blog
As some of you may know, we went through a fairly painful process of getting SiN Episodes: Emergence ready to ship in Germany. Our initial submission was denied a USK rating, which essentially meant that USK felt that BPjM would have indexed it, and as a result, we had to go back to the drawing board and try to find the smallest possible changes that we could make that would get the game passed USK. There were very few changes made to the USK version, and I'm going to be discussing six of those changes over the next few weeks. I'll be discussing the change itself, the reasoning behind the change, and show that there are no gameplay ramifications from the changes.
The six changes that we are going to be going over are:
- Civilians & Unarmed Enemies
- Ragdoll Physics
- Jetpack Deaths
- Applied Forces
Saddle up, this is going to get interesting. There were other changes that were made for the USK version beside these, but part of the arrangement with the USK is that if a change is made, information on how to undo that change cannot be distributed. That said, information was released on how to piggy-back on one of the changes...but I wouldn't recommend undoing that change in Germany anyway...you'd cause the game to crash.
Civilians & Unarmed Enemies
For the U.S. release, we had a couple of set behaviors for anyone who wasn't armed if gunfire went off near them or they witnessed an attack. They would run to safety, crouch and express fear. If they had no safety zone, they would just crouch and express fear. For the most part, our playtesters left the unarmed people alone. One person made a concerted effort to kill everyone, armed or not, but that was an anomaly. In the final iteration of the game, there was only one civilian in the game after you received your magnum, and he is run over by a semi truck within a few moments, so very few people get a chance to try to kill him. When we got our USK report back, one of the items discussed was that you could kill people who have expressed fear. The logic behind this being that they felt that it was inhumane to kill someone who was obviously afraid of you and was not attacking you.
At this point, we had two choices:
- We could take the easy road and just make civilians and unarmed enemies (like the U4 technicians) invincible. Had we done this, people who purchased the USK version would get an experience similar to other games where when they come across a civilian, they can't really do anything…the civilian is just for show.
- The second choice would be to make it so that civilians don’t express fear to the player.
We decided to go the second route. We did this for two reasons. First, it seemed really dumb to us to have something in the game that couldn’t be shot, especially given how important gunplay was in SiN Episodes. Second, there was one place in U4_Labs_02 where if you were unable to shoot the lab workers, the player could be blocked from progressing through the remainder of the game. The final result for owners of the USK version is that civilians ignore threats caused by the player. They’ll still fear mutants in cutscenes, but they no longer beg for their lives before you kill them.
Before I start on this one, I need to talk about the two types of ragdolls available in SiN Episodes and the Source engine: server and client.
A client-side ragdoll is the most common type of ragdoll in Source. What happens is when an enemy dies, the server entity associated with that enemy is deactivated and anything server-side doesn’t believe that the entity exists anymore. The client-side then handles all of the ragdoll physics, but can only collide against brush geometry and static model collision geometry. This is why you’ll occasionally see ragdolls blow through doors. The doors may start as brush geometry, but they get turned into models during the level compilation process, and ragdolls don’t interact with models. Once a client-side ragdoll is no longer in an area where it can be viewed, it gets tagged for deletion on the client side and gets deleted when it needs to create a new ragdoll or when there is too much processor time being spent processing ragdolls.
A server-side ragdoll is used only when we need a ragdoll to interact with something else in the world. For example, the body that goes flying out of the reception area in Intro_01 is a server-side ragdoll. Server-side ragdolls have all of their collisions handled on the server-side and are never deleted automatically. They also collide with anything that the server has knowledge of, like doors, moving walkways, etc. As a result, they are performance hogs. We only use a few server-side ragdolls in SiN Episodes.
When we received our initial USK report back, there were complaints that people could essentially have lots of fun with the ragdoll bodies in the game. One example that was used was someone using a shotgun to sweep a body across the floor. We were a bit confused by this, since our ragdoll physics were identical to Half-Life 2. This was not something that we saw as an issue when comparing ourselves to games that had shipped in the area, but it was an issue that we had to address before we could ship. We discussed many alternatives, but finally settled on making it so that once a client-side ragdoll comes to rest, it locks into place and cannot be affected by weapon fire or explosions. We also forced ragdoll collections when changing visibility zones. This had two effects for the USK release. First, the USK release performed a little better during large-scale battles than the U.S. version because of fewer physics calculations going on. Second, the USK release actually became more macabre than the US version in some ways. Because of how expensive even client-side ragdolls were, generally no more than 8-12 client-side ragdolls could be active at any one time before they started getting collected. With this change, the number of ragdolls that could be active at any one time increased exponentially. The number of dead bodies that can be handled by the USK version is much higher than that of the original release. We had over 500 ragdolls going on at one time in one battle. Personally, I prefer the end result of the USK version. Call me crazy if you want, but shooting a body after the life has left it just doesn’t do anything for me.
If you want to draw unwanted attention to your game from USK, the best thing to do is to throw in torture and human suffering that can be caused by the player. Note that I am talking about suffering specifically “caused by the player.” For the most part, games can do whatever they want in cutscenes because it isn’t interactive. But the moment that the player can cause something to happen, the player becomes an active participant and as such, it requires attention.
This was the case with our phosphorous grenades. In the U.S. version of SiN Episodes, if the damage from a grenade was not enough to instantly kill an enemy, but the grenade still did damage to an enemy, the enemy would catch on fire, flail around, scream for help, and finally die after charbroiling their innards. A player could shoot the enemy who was on fire and kill him while he took damage from the flames to end their suffering, but the issue before us from the ratings board was that the player started their suffering to begin with. The USK is not a big fan of people being on fire while still alive. For this one, our decision was fairly simple. If someone catches on fire, rather than let them suffer, we kill them immediately rather than let them burn out. The net effect was a minor decrease in the average combat length stat for USK players (under one second on average). Personally, I like the change, if for no other reason than it gets the guys out of the way faster so I can dispatch the guys behind them.
The very mention of them turns even the most seasoned Quake player into nostalgic fools remembering the very first time they shot a corpse and had meat chunks flying everywhere. Those were the days… There are many takes on why USK dislikes gibs. It could be the gore factor. It could be the sheer humiliation of having your innards splattered over the wall for simply not firing first. It could be seen as an ultimate form of causing suffering for a loved one by denying them an open casket funeral. Or it could just be the pronunciation battle. (“Gibs!” “Jibs!” “Gibs!” “Jibs!”). Regardless of the reasoning, getting gibs past the USK is like keeping your hideout hidden from Blade…it isn’t going to work and it will just make them angry.
Now, we had limited gibs on human enemies in “SiN Episodes” for the US release. Regular humans could only lose their heads, and even then, only if the killing shot was a headshot. You could not do post-mortem gibbing on corpses because we were already at the ragdoll processor limits. Elites had their models swapped out for a "gibbed” model upon death by the client-side ragdoll processor. This solution was a little tricky. We moved “gibbing” responsibility to the client instead of the server. The client side is aware of which version the game is. The server side sends the “gib” command to the client, and if the client allows gibbing, it gibs, otherwise it doesn’t. The nice part about this separation of duties is that it helps when we get multiplayer working. A USK customer can play on a U.S. server and while the experiences on the client side may be slightly different, the server side won’t care. Also, since stats are calculated on the server side, you still get credit for your headshots in the stats pages.
Since the science fiction movies of the 1950's, everyone has wanted their own personal jetpack. In the SiN Episodes universe, some SiNTEK soldiers are lucky enough to have some of their very own. A few notes about the jetpack grunts for you. First off, the jetpacks are physics objects. The grunts are tied to them via some funky constraints. This, in part, led to a bug in Arena Mode where if you added jetpack grunts to your maps, they would T-pose during demo playback. The jetpack grunts have many different types of death animations. The server tells the client, "Hey, this dude is dead," the client randomly picks one of the animations, and plays it. I think everyone remembers the classic twirl-around-screaming-pack-explode-fall-with-a-crunch animation from the last trailer before release. Well, that animation is what directly led to this change.
The USK had an issue with several of the death animations for jetpack grunts because it seemed like they were being made to suffer prior to death solely for the amusement of the player. That's probably because their digital forms were being made to seem like they were suffering prior to death solely for the amusement of the player. Come on, a dude's jetpack malfuntioning prior to his death is funny... We tried negotiating, but this was one item on which the USK would not budge. As a result, in USK-rated copies of the game, there is a single jetpack death present: the jetpack explodes, and the ragdoll falls straight down. Again, this was a client-side effect only, so if Ritual ever manages to get cooperative play of any sort going, while the result may appear slightly different when a US player plays with a USK player, the server will still be seeing the two as idential. This is one of the changes that I'm not particularly fond of. The jetpack deaths were one of the items that Ritual received a lot of positive feedback for, and having to remove it just seemed...excessive.
For the final installment, I'd like to talk about the last high-profile change made between the rest-of-world version and the USK version. In the rest-of-world version of SiN Episodes, when someone is killed by a weapon, their body is propelled fairly significantly by the force of the weapon. Even the regular pistol hits someone like they were hit by a ton of bricks at the point of impact. In the "Blown Away" myth on "Mythbusters," they proved that it wouldn't happen like that, but the SiN universe is fairly obviously based on anime, and in anime, physics be damned!
Well, for the USK release, we were told that the amount of pushback on all of our weapon damage seemed a bit excessive. Note: it wasn't the damage that was excessive, just the pushback. You may have noticed that in the final game, there were a couple of physics items based off of the destruction of an object, but not much related to the movement of an object by a weapon. Well, there's a simple explanation for that. In the USK version, physics forces caused by all weapons (friendly and enemy) were reduced by 50%. This had two side effects. The first side effect was a 75% reduction in the amount of movement on ragdolls when they could be affected by physics. Why 75%? Well, physics movement is exponential in the engine. The second side effect is what I really hated, and it's the only change that could be seen as materially affecting gameplay...but it only affects gameplay for people who played the rest-of-world version before the USK version. Because of the minimized movement, the cues that someone has died are significantly different between the two versions. As a result, someone used to the rest-of-world version who is playing the USK version is very likely to empty additional bullets into their now-deceased quarry than someone who hasn't, and because the ragdolls are client-side, that means that player accuracy drops and the game gets slightly easier as the game goes on (more ammo, etc.).
- Romsteady.net - SiN and USK Part #6 (archived)
- Romsteady.net - SiN and USK Part #5 (archived)
- Ritualistic.com - SiN and USK Part #4 (archived)
- Ritualistic.com - SiN and USK Part #3 (archived)
- Ritualistic.com - SiN and USK Part #2 (archived)
- Romsteady.net - SiN and USK Part #1 (archived)
- Romsteady.net - SiN and USK Intro (archived)