|
1. Non-diku combat
|
|
Sun May 15, 2005 [11:36 PM]
|
dormammu
Email not supplied
member since: Apr 19, 2002
|
Reply
|
|
As I continue planning out my mud codebase, I started working on combat. I plan on making it a bit different from the standard DIKU model.
I feel most muds tend to minimize (or completely ignore in some cases) the effects of heavy armor in terms of combat agility. I'm trying to work out a system where you might have a quick human in leather fighting another slow human in platemail. The one in platemail won't be able to get out of the way of attacks very well, but he can take an awful lot of damage. Whereas the one in leather can dodge and keep back. He can't take as much damage, but he's a heck of a lot harder to hit.
So, I want a system that plays to this idea. Armor slows you down (well, armor heavier than leather, anyway), but essentially gives you more HP. (I'm thinking about giving each piece of armor its own hitpoint value. When its hitpoints get to 0, it's ruined and won't protect the wearer anymore.) Most the muds I've played (mainly DIKU derivatives) seem to nearly ignore the speed factor. (ie, the guy in full platemail with a bastard sword is as quick as the elf in cloth with a dagger... therefore, whoever has the most armor and biggest weapon wins.)
So, by now, you're probably wondering what the question is. Well, I designed a prototype system (non implemented. Really just a program that simulates combat for testing purposes) and I ran into a major problem. The quick fighter in leather won 100% of the time. I jiggled stuff around a bit and tried again, and the guy in leather won 90% of the time.
So, obviously, my system is flawed and biased towards the quick ones. This was not my intent. So, my question is, does anyone have a system like this that works well? I figure someone must have thought of it before me, and probably implemented it somewhere.
Can anyone give me advice to make this system work a bit better?
|
|
|
|
|
2. RE: Non-diku combat
|
|
Mon May 16, 2005 [2:09 AM]
|
Scorpy
Email not supplied
member since: Jan 11, 2003
|
In Reply To
Reply
|
|
My combat also works like this, I also have the weight of the character affecting the stamina cost whilst moving around the world and made the locations more independant, if you hit the chest of another character, only the armour value of whatever equipment there is used, instead of the entire body.
The way I did my weight calculations is based on how much the character can carry, for example if they can only carry 100lb and they are carrying 50lb, they are 50% slower.
I haven't tested the engine out very much as my MUD isn't within beta yet.
|
|
|
Imperium et Respectus
Scorpion-ice
|
|
3. RE: Non-diku combat
|
|
Mon May 16, 2005 [8:27 AM]
|
KaVir
Email not supplied
member since: Aug 19, 1999
|
In Reply To
Reply
|
|
> I designed a prototype system (non implemented. Really > just a program that simulates combat for testing > purposes) and I ran into a major problem. The quick > fighter in leather won 100% of the time. I jiggled stuff > around a bit and tried again, and the guy in leather won > 90% of the time.
Sounds like you improved it, but this sort of thing is always going to take tweaking - just keep at it until you've got the win/loss ratio right.
From a maths perspective, probably the easiest way to have the two perfectly balanced would be something like:
Light Armour: 1.5 times as easy to hit, divide all damage taken by 1.5.
Medium Armour: 2 times as easy to hit, divide all damage taken by 2.
Heavy Armour: 3 times as easy to hit, divide all damage taken by 3.
Of course that's also pretty boring (and in the long run makes armour pretty much irrelevent) - but once you've got a balanced system in place you can then worry about making it more fun and varied.
|
|
|
|
|
4. RE: Non-diku combat
|
|
Mon May 16, 2005 [9:58 AM]
|
cron0s
Email not supplied
member since: Nov 29, 2004
|
In Reply To
Reply
|
|
It all depends on what else there is to your combat system besides damage dealing. If you take the example of standard Diku round based auto combat, then the difference between doing more damage over time (leather armour) and taking less damage over time (plate armour) is pretty moot. The trick is to introduce other combat factors besides pure damage and then balance advantages and disadvantages in those factors against each other.
|
|
|
|
|
5. RE: Non-diku combat
|
|
Mon May 16, 2005 [4:08 PM]
|
MikeRozak
Mike@mxac.com.au
member since: Mar 5, 2004
|
In Reply To
Reply
|
|
Kavir wrote: "1.5 times as easy to hit, divide all damage taken by 1.5"
Why does everyone try to take the easy way out?
I like to do things the difficult way. Here's a way you could turn game-balance into a science:
1) Identify a handful of variables that affect game balance, such as how much damage armor takes vs. how much it slows the player down.
2) Come up with a handful of combat scenarios between differently-equipped enemies. For example: Enemy with short sword and no armor vs. one with long sword and plate.
3) For each scenario, determine how often you want the unarmored opponent to defeat the armored one. For example: Someone without armor will only win 10% of the time against someone with plate.
4) Create two NPCs whose job is to fight out the scenarios. Have them fight 100 scenarios, and see what the probabilities are.
5) Randomly tweak one of the variables (from step 1), within pre-set limits. Re-run the 100 combats. See if tweaking the variable got the probabilities closer or futher than what you were looking for. If the probabilities are better, keep the newly changed variable, else discard it.
6) Repeat. (Watch out for local minimas.)
7) You'll have to watch how players fight and add new scenarios and improve your AI to match the player fighting styles.
This works for class balancing, level balancing, etc. It's a lot of work though.
You can set up a "product testing arena" in your world just populated by NPCs, although PCs could come and watch. The product testing area would be used to continually twink/balance your game.
|
|
|
|
|
6. RE: Non-diku combat
|
|
Tue May 17, 2005 [12:10 AM]
|
dormammu
Email not supplied
member since: Apr 19, 2002
|
In Reply To
Reply
|
|
That seems like a good start, but I was going to hopefully make it a bit more detailed. (Like having attacks aim at certain body parts, as well as being able to mix armor. Maybe someone wants a ringmail chest piece but plate armor gauntlets. The damage factor would depend on exactly where he was hit.)
But I think I will base it off your idea there.
|
|
|
|
|
7. RE: Non-diku combat
|
|
Tue May 17, 2005 [12:17 AM]
|
dormammu
Email not supplied
member since: Apr 19, 2002
|
In Reply To
Reply
|
|
I don't think that was KaVir's intention. Rather, I think he was trying to show you have to start off with a solid foundation (so to speak) and build on it.
Sure, it'd be boring as anything if that was the entire combat system. But it seems like agood base to start on to me.
Your NPC arena combat idea is interesting, though. I'm writing independent stand alone programs to test my ideas right now, but it might be fun to implement it like you suggested.
Another option would to be to log all player combat and analyze that, and see what seems to be over and under powered.
|
|
|
|
|
8. RE: Non-diku combat
|
|
Tue May 17, 2005 [2:28 AM]
|
KaVir
Email not supplied
member since: Aug 19, 1999
|
In Reply To
Reply
|
|
> Why does everyone try to take the easy way out?
Not the easy way out but the easy way in - you need a solid base from which to start, otherwise it becomes extremely difficult to properly balance the two. Thus the comment I made at the end of my post: "once you've got a balanced system in place you can then worry about making it more fun and varied."
> I like to do things the difficult way.
The points you go on to list are the sort of things you're going to have to follow anyway for fine-tuning - but if you start with a well-balanced system to start with, it'll just be fine-tuning, and not massive rewriting when you realise that the underlying design is flawed.
Also worth point out is that if your system is complex enough, it'll no longer be practical to test all the different setups. The best you can do in such a case is to tweak things as you come to them - but if your core system is inbalanced to start with, you're going to spend a lot of time tweaking.
|
|
|
|
|
9. RE: Non-diku combat
|
|
Tue May 17, 2005 [3:01 AM]
|
KaVir
Email not supplied
member since: Aug 19, 1999
|
In Reply To
Reply
|
|
> That seems like a good start, but I was going to hopefully > make it a bit more detailed. (Like having attacks aim at > certain body parts, as well as being able to mix armor. > Maybe someone wants a ringmail chest piece but plate armor > gauntlets. The damage factor would depend on exactly where > he was hit.)
Well my approach was to give each piece of equipment its own encumbrance value (based not just on weight, but also on how awkward it is to wear), with the protection it affords based on the encumbrance (although different armour and material types are better at absorbing certain damage types than others).
I then provided support for four encumbrance levels - unencumbered, light, medium or heavy. A lightly armoured character might wear a full suit of leather armour, or perhaps an iron helmet and chainmail vest. There are minor penalties within each category, but generally speaking it's best to try and wear as much as you can without moving into the next encumbrance level, as each encumbrance level provides a weakened set of feet moves, reduced speed, and slower dodge cooldown.
Most of the attacks in my mud aim for the head, face or chest, so the typical setup will focus on placing extra protection on those locations. However for this reason, some players deliberately use setups that target other locations. In addition, hand-worn equipment improves your punching damage and foot-worn equipment improves your kicking damage, so those locations are also quite popular for certain setups.
One amusing thing I've noticed is that the first thing many newbies do when they log on is to load themselves up with as much armour as they can possibly wear...then get torn apart by opponents who just dance around them. However a well-design heavily encumbered setup can work extremely well (some people also combine it with a pair of tower shields and psionics, which is something I'm still having problems balancing properly).
|
|
|
|
|
10. RE: Non-diku combat
|
|
Tue May 17, 2005 [4:08 AM]
|
shasarak
Email not supplied
member since: Dec 10, 2004
|
In Reply To
Reply
|
|
> 5) Randomly tweak one of the variables (from step 1), > within pre-set limits. Re-run the 100 combats. See if > tweaking the variable got the probabilities closer or > futher than what you were looking for. If the > probabilities are better, keep the newly changed > variable, else discard it.
I'd only recommend this if this you can automate the entire process (including the tweaking) and have it run at extremely high speed. But, if you can, you're getting into the realms of genetic algorithms, which are potentially rather cool.
|
|
|
Please do not feed the troll.
|
|
11. RE: Non-diku combat
|
|
Tue May 17, 2005 [3:55 PM]
|
MikeRozak
Mike@mxac.com.au
member since: Mar 5, 2004
|
In Reply To
Reply
|
|
I should of put a smiley in my post or something...
I completely understand why you'd just come up with some gustimates. It's just that my brain always tries to think of the "right way" to solve the problem, which is often machine learning. I'm already doing machine learning for my text-to-speech code, but I don't think I'll have time (or the inclination) to use it for game balance.
|
|
|
|
|
12. RE: Non-diku combat
|
|
Fri May 20, 2005 [8:55 AM]
|
Auron
Email not supplied
member since: May 20, 2005
|
In Reply To
Reply
|
|
Well I am also at the stage of redoing combat in my mud. (GodWars codebase btw).
Now the way I am following is: First I added a custome stat system, using 10 different stats, which some of these would affect combat.
Then I ripped out the original fight system, and started on my own (keeping the same concept though).
At the current moment I have actual attacks determined from speed. Now speed can be affected by many things, giving the character either more or less attacks during a round. For example using no weapon would allow for faster attacking than using a axe, thus increasing the amount of attacks you can do. But to balance this each weapon will have 2 damage values to calculate the new damage. So although using no weapon gives more attacks, it lowers damage and visa versa.
Now once I have this fairly balanced I am moving on the dodging, parrying and blocking. Where again speed will be used. For example a character with a high speed would be able to dodge better if the attacker used a weapon with a low attack speed etc.
The only advice I can give is to create the base. Expand to a point. Balance, then expand again.
Do not throw in everything at once, even if you feel it will be balanced, there will be design flaws in it.
Before you can walk you must learn to crawl.
|
|
|
|
|
13. RE: Non-diku combat
|
|
Fri May 20, 2005 [11:18 AM]
|
lindahlb
Email not supplied
member since: Mar 2, 2001
|
In Reply To
Reply
|
|
The first thing I really want to mention is that people underestimate the value of training in armed combat. An untrained person wearing heavy armor really has NO chance against a lightly encumbered opponent. However, proper training in heavy armor (say full plate mail) is HIGHLY effective in reducing the encumberance of the armor - and can still fight with impressive agility. To be effective in heavy armor, one has to know that dodging in 'this way' is not as effective as dodging in 'that way'. The difference is very significant. The joint pieces of heavy armor only allow certain and precise movements. A poorly trained wearer of heavy armor will attempt manuevers that are inherently impossible. Note that this not only requires knowledge but practical training. Manuevering in such precise manners to move with the flow of the armor requires not just knowledge but training muscle memory so the motions are instinctive and can be applied in a real combat setting. Some additional research in historical medieval combat will turn up much more information on how important such training is. A properly trained knight in heavy armor is often no more encumbered than an undertrained solider in leather armor - this may seem counter-intuitive, but it's quite accurate.
The idea that heavy armor implies a lot of encumberance comes really from a modern humans trying on full plate armor without any serious training. Historical research has shown that knights who were trained in full plate armor were incredibly strong and had enormous stamina, even beyond some of today's best athletes - all due to extensive training in the armor (starting in their teens). The idea that full plate armor is very encumbering was derived from research taken entirely out of context of this training. Note that later medieval combat evolved into fully-armored battles as opposed to battles in light leather. The only reason fully-armored combat didn't evolve sooner was because of the cost involved. Fully armored combat soon became a liability, however, with the introduction of crossbows and even moreso, after the introduction of muskets. Anyhow, enough ranting.
As for combat system design, some crucial variables are needed. Mainly, stamina, encumberance, training, and balance. Low stamina means all activity is slower and less forceful. Being encumbered means that stamina is drained faster, and all activity reduces balance more. Less balance means less opportunities to perform activity, and increased chance of fumbling an activity. Lack of training applies negative affects to encumberance and balance as well as the ability of each activity performed.
|
|
|
|
|
14. RE: Non-diku combat
|
|
Fri May 20, 2005 [2:18 PM]
|
Spazmatic
Email not supplied
member since: Aug 2, 2002
|
In Reply To
Reply
|
|
It's just that my brain always tries to think of the "right way" to solve the problem, which is often machine learning. I'm already doing machine learning for my text-to-speech code, but I don't think I'll have time (or the inclination) to use it for game balance.
Notably, though, your machine learning approach isn't all that. It's really just a series of Monte Carlo simulations without any practical use of the search space. A random walk with low confidence heuristics, if you will. It will hit local maxima all the time unless you add in a more complicated walk, and even then it'll still be hideously slow (compared to a more targeted search algorithm). And, well, it's not really science since there's no guarantee it will get anywhere close to a decent answer.
Not trying to thrash it, I can see why you might want to use machine learning for combat, but I don't really believe you're going to be able to balance it out with any generic algorithms, if at all. The best I can see is maybe data mining player combat to get suggested changes. If you do want to use AIs and machine learning to balance, you're going to want an algorithm with performance guarantees, and then you'll still have to note that the guarantees will be over the AI distribution, not the player distribution. Unless your combat system is really simple, your AIs are going to be falling far short of human players anyways, which is yet another problem.
|
|
|
|
|