Even though Otherworld isn't primarily a fighting game, it is unavoidable that people are going to have conflicts and those conflicts are more likely to be solved through violence than diplomacy. One person has suggested not to have PvP combat at all in the beginning, but I think this would cause more issues than it would prevent. It has been established from the start that it should be possible to hit anybody, including children and newbies, and societal structures and ingame protective services should be what prevents vulnerable people from getting hurt, not some invisible boundaries added by the creator.
Some core concepts of the fighting system on a general level:
The history of the fighting system
- everybody is potentially vulnerable
- even the strongest and most skilled person in the world can still suffer a critical failure, even if the chance of that happening was less than 1%
- fighting should be relatively fast paced, even if not all participants are online
- people who are online shouldn't have a strategic advantage over those who are offline
- if loopholes that make fighting unfair towards people who are offline are found, they should be addressed swiftly
- artificial waiting times should not be imposed on players (exeption allowed to prevent using scripts and bots that are faster than an average human)
- the effects of violence should be recognizable on a physical and emotional level, even if the victims were NPCs (if you kill all the children of a village, the parents will mourn their deaths and won't easily forgive)
When Otherworld first started, it included a failed idea of so-called flexitime. This meant that everybody advances at their own pace within a game month, and things can happen relatively in the past or future. As a result, it was necessary to give people 18 hours to react to any attacks instead of resolving them immediately. The early system only involved hunting, but it was possible to join an existing combat, and due to an oversight, it was possible to attack another person (the other hunter), but because only animals had programmed counter-attacks, the victim couldn't retaliate in any way. They couldn't even see the other person, because they were later on on their own timeline, so from the victim's perspective, the attacker hadn't even arrived. What a clusterfuck!
Visualization of individual timelines
After flexitime was scrapped, a new PvP system hasn't yet been implemented. In fact, there was no PvP system, just an accidental oversight of the hunting system. The current hunting system involves selecting a weapon, clicking hit, then the animal retaliates. Yawn, boring!
Combat can last like 20 rounds and even after the animal has passed out from blood loss, you can't finish them off in one hit but have to keep repeatedly hitting them until they finally die. This is why a rewrite is direly needed.
Behind the scenes, which body part is hit is currently defined by coordinates on a two-dimensional plane. Human, and animal bodies are simulated by simple blocky shapes (see pictures below), each combat style targets certain areas and hits have a certain stray that is applied both on x and y axis.
How a human is simulated for hitting
Left to right: A large four-legged animal such as a deer, a small four-legged animal that is hit from above, and a large bird such as an ostrich (out of laziness, this is just a copy of the large quadruped with wings instead of hind legs
In a way, this is not such a bad system. It could have some merits. The problem is defining which areas each combat style targets and writing out the limits of each area in an extensive clusterfuck of "if ($x > number && $x < number2 && $y > number3 && $y < number4)", which even nest in the case of things being inside other body parts, such as the heart. Another flaw is, it doesn't take into account that things could block access to internal organs, so a three-dimensional model might be better.
A draft for possible combat scenarios
The plan is that combat will be completely automated and will be resolved in one click. You can tweak your settings and select reactions to different possible scenarios, such as yourself getting hurt, your party member getting hurt, party member getting killed, enemy surrendering, enemy trying to run and also different combat styles, such as training mode, defensive, cause extra pain, and quick kill. Once combat starts, all human interaction is out of the picture and everything is defined by the user-predefined settings, weapons, armor, shields, group sizes, defenders and random chance. Also if the enemy runs away successfully, they will go into hiding and will be protected from another attack until the player logs in. This is unless the enemy has people they are loyal to or protecting, who are not running.
There will also be group combat. Weapons work in a way that if you have a good weapon, you count as multiple people (usually fractional people, like 2.5). If you have a crappy weapon, you might even count as less than a person. In the future, skills will also affect this, so that if you are a crappy fighter, you are less than one person, and if you are very good, you can be worth like 5 or maybe even 10 average people. All these things affect your chances of winning. Both the physical number of people on the team, and the boosted number. Now optimally, combat between two people should be the same thing as a group combat, only scaled down. Mechanically it should work pretty much the same.
The current idea is that people will have variable attack speed, which is affected by their weapon. Some weapons like a dagger are fast, while others like a crossbow are slow. A person's speed defines how many attacks they get in a round of processing. If your speed is low enough, you might get 0 attempts per round - but there is a catch: Each person has a chance of getting one extra attack regardless of how many they had in advance. If the numbers are small, this doesn't matter much, but as the numbers grow, a lot of random variance comes to play.
First the game rolls how many potential attacks your team gets. Then it rolls how many blocks the enemy gets. If the number of blocks is equal to or larger than the number of attacks, no attacks go through. If some hits get in, it calculates the damage and divides it between one or more receivers. If a receiver gets enough damage, they die. Ideally, both attacks take place at once instead of one side going first while the other one just stands and blocks. So it should count the successful hits for both parties, then apply the wounds and kills on both sides at once. This can potentially lead into everybody dying, but it's a risk you have to take. Or you don't necessarily have to, you can set to surrender if the situation looks dire. Basically if the number of deaths exceeds someone's comfort range after a round, they surrender and combat ends. If neither side runs away, surrenders, gets knocked unconscious or gets wiped out, a new round is calculated.
Back to that extra hit that some group members may get. This adds chaos into large combats. By default, the larger group has a higher chance of winning, but if the lower group rolls high on their number of extra attacks, they might be able to get hits through despite having less numbers. Because the number of extra attacks is only rolled once per round per team, instead of one per person, it can range anything from 0 to everybody, whereas if each person rolled individually, it would default to what ever the percentage was. But if the team has bad skills and weapons, it doesn't really matter how many hit attempts
they get, because the number of successful hits is lower. This is why you have to balance between speed and accuracy.
One thing that hasn't been explored much yet, is the possibility of setting an order of priority for which people to hit first in combat, and which ones to protect. People with a lot of enemies are more likely to get wounded, whereas ones with a lot of defense are less likely to get hurt (but the defenders might be more likely to get hurt instead, because everybody just defends each other in a circle so it shouldn't be free). In fact, this is a very simple idea, so I'm surprised I didn't think of it before.
At first I was going to use an average of everybody's weapon stats to calculate hit chance, but it makes more sense if different people will have different hit chances and speeds. Only if there are multiple fighters who are basically identical (usually NPCs), they can be stacked.
It is yet to be decided in which order the attack attempts and block attempts will go. I mean, are they in order of power, randomness or initiative. One thing is clear, though, if you run out of blocks before the other party has ran out of attacks, you're going to get hurt. So if the player gets to decide the order of attacks, it would make sense to place the heavy hitters in the end of the flow, so that if the enemy runs out of blocks, you will maximize your damage! But in this case, the defender is likely to place their best defenders in the end, so if they get extra defenses, they might be able to block everything. It's like a game of baseball, you could decide the order of your batters and play strategically. You might place heavy hitters in the first wave, where they are least expected. The problem is managing large groups of NPCs. If you have 1000 fighters, it would be hard to manually put them in order.
I want them organized like this: tough tough soft tough
One thing to consider in group combat is that once you get wounded people, some of the capable fighters are going to re-delegate themselves into taking care of the wounded, unless the army has designated nurses from the start. This reduces the number of people who can keep on fighting. This should be taken into account on the following rounds.
Division of capable fighters and others in the beginning of the fight compared to the middle and end
More later, at least maybe.