Should Range Weapons+Melee weapons be nerfed and Magic be buffed? Other Game Balance Questions

edited March 24 in General

Just wanted to think out loud. There has always been an engine issue of if you deal too much damage, the numbers go into the negatives and the number of hits it takes to actually kill a monster goes up.

Damage ranges for upper 60-70+ characters can easily reach 50k-65k+ damage per hit, however the game bugs out.
It doesn't also take a turn for those characters to equip a new weapon/bow or ammunition either.

In contrast, in the damage range of the most optimal mage only character is roughly 1k-2k max. Even at that damage range, the cost per cast is incredibly high. Reloading on mana also takes a turn as well.

And doing the wand only method is a playstyle all the other archtypes are open to as well, but it doesn't really bring that true magic experience.

Other game issues that can be brought up is the lack of use of the personality based traits, it seems combat is more favored. I prefer that process myself, however, I think we should utilize all skills available, like having higher level of that specific personality skill give more rewards or different items?

Or having more daggers, maces and and 2h/1h crossbows/throwable weapons would add a different sort of options in terms of playstyle, since under the hood, its pretty much all flavor text, right? I also don't remember if we have 2h only melee weapons.

I'd also like to Bring up Undead Magic, since it is set separate, yet it doesn't offer anything so significant that requires a separate style, even though it does have a unique flavor in the beginning. Should Undead Magic have more additional Disease Effects in addition to what it already does and it becomes more intense as the levels get higher? Same thing with Higher level attack magic or having attack magic have more AOE spells?

Or am I thinking too much sandbox style in terms of what the Quest Engine can do?

Just wanted to spark some discussion on Game Design. What do you all think?

Comments

  • That's because the Quest engine was originally very low on bits but enough in those days to make it exciting. If you go over the bits the game allows, you wrap around to the negative. Elendil does not want to change this as he did not script the original game, just portions of it. In fact, he's done a lot to make it more playable and to improve things.

    Because Redshift is working on the Quest 2, he doesn't want to tweak the Quest engine further.

    I've tried to increase the damage of staves, maces and hammers so they are as good as swords. I've put code on the spellcasters to make them harder because without that they can be very weak as levels go higher.

    I have to digest your suggestions but I think the bottom line is that we have to work with what the Quest engine offers. I've been adding more disease effects to monsters. I can't change the AOE of spells.

  • Can someone give me some numbers to work with, like a save? It could help us to tweak out what is going on. If the numbers, for example, are 16bit, it'll start wrapping at 32768 for signed numbers, and for unsigned numbers 65536. If 32bit, 2,147,483,648 if signed, 4,294,967,296 if unsigned. To make matters more confusing, if there are multipliers at any point in the equations, those ranges are misleading. If you know exactly what numbers to avoid, it would be wisest to never let a certain skill go above that number for something with -80% resistances, and consider doing a staff or wand to prep against enemies since you can enchant higher than your level, in theory (i haven't tested it myself).

    Although, Catacomber can give us an idea what the min and max resistances from her expansions are, which can help us get closer to that peak, because relying on -80% resistance is going to cut us off from most of the damage, if i understand the formula right. At the end of the day, i think the resistance range is why this is so noticeable.

    That said, i haven't looked at the creation kit outside of seeing that i can't use it to get maps of catacomber's expansions (crashes for some reason when i opend the pdb files), but in theory if you made your own mod (or presumably i could make it) if it allows spell creation, we could make some high level spells that add or take-away enemy magic resistances, that way we can set them to a known value to calculate against, but there's no way of knowing whether buff or debuff is better, since i don't know where in the damage calculation the overflow is occuring without the source code for the damage formula (which isn't the whole program, but i doubt he'll feel comfortable giving that to us).

  • edited March 27

    You'd have to write elendil@redshift.hu. He's the only one who can answer questions about this because he knows what the code and engine can and can't do. It may be that he upped the Quest in the HD version to 32 bit. I'm just going by what I originally knew of the original Quest. I don't know if he changed that or not.

    You can't open our pdbs. They are just meant to be played.

    You can experiment with the editor but you have to be very careful. You never know when you are going to do something that tips the calculations into disaster.

    I've done that and know. Fortunately, each time I've done that I've been able to recover. It's not easy.

    All I can say is that when I asked if it was safe to go over level 100 for a player, he told me it's never been tested.

    The enemy magic resistances are based on the monsters' Intelligence and percentage of it's fortify magic and sometimes it's better to do that through infecting a disease.

  • Money's over 16bit, but the issue that SilentFocus is complaining about could easily be an overflow, even if the number's unsigned. The quickest way to find out is "what happens when it goes too high?" If it's actually hitting negatives, that means it'll be healing the monster, which means the values are signed. However, both signed and unsigned numbers can battle "high-order truncation" issues.

    Take the following scenario: Numbers are 32bit, but the function passing is usign an unsigned 16bit number. Now let's say that damage = attack * multiplier * 5 / resistance. Now if your attack was 30,000, and you have a 30% buff, and the enemy has 50% resistance, that means damage would be 97500 (0x17CDC). Now, signed or unsigned, when passed to a function and it only handles 16bit values, the damage would become 31964 (0x7CDC since the 1 gets "truncated", and bit 15 needs to be set for negative numbers).

    But, the thing is, this is to address OP. My character isn't anywhere near having to deal with those kinds of numbers, yet, so I can only offer advice on how to identify the problem without the code. If you can get the pre and post attack numbers (which OP can provide), with 2 or 3 samples to identify to what degree RNG is involved, you can effectively find out what the damage formula is. Since computer version users have access to the modding kit, if he can't create a test scenario himself, he could send me a save and tell me how he found out what the damage numbers are, and i can sit there and place with the magic resistance until find out what the best truncation is. Then it's a matter of simply making spells that can raise or lower the magic resistance.

    If I'm understanding correctly, while it might be immersion breaking to raise magic resistance or something intentionally, it would be a simple way to solve the problem OP's dealing with if i'm understanding him correctly (high damage is making either high level mobs near impossible or low level mobs stronger than they should be due to truncation).

    Another angle is level drop spells, maybe adding "master spells" that can only be acquired by a skillcheck of some kind. I could submit these to Elendil, myself, but I'd need to learn more about the game's inner systems. Going over the forums, it would seem it's "legacy code" from another dev for the quest HD, so Elendil might not really be able to find the root cause of this bug, either. If someone can volunteer a save file or their stats where i can isolate the scenario where they first notice this issue. Looking at the editor, i have a few ideas that, if any of them worked, would be pretty effective "master spells".

    I just actually need to get far enough (either on my own or through a save) to see this problem to come up with a reliable fix for it. It could be something as simple as taking a skill that does 50 crush damage and turning that spell effect into 25 crush damage + 25 crush (or 10 + 10 + 10 + 10 + 10 if you want it to last longer) damage if the overflow is happening in the right place. I just need a way to experiment without going way too far out of the boundaries.

    As for the mana complaint, in the editor i set the intelligence to 50, which gave me 250 mana (mana = 5 * int). Burning hand at 20 attack magic is at 17 mana cost, 33 mana at 100 int. If you keep your attack magic at max possible, when your int is 10 you'll spend 34% of your mana casting it, but at 100 int, you'll spend 13.2% of your mana casting it. This isn't taking equipment and other things into consideration, but it's worth noting that the engine is catering towards class specialization (like most RPGs). Therefore, if you can fix the damage issue, the mana issue becomes more like spells are too cheap, not too expensive (as long as the mana/skilllevel number stays 1 or below).

  • Elendil is the best person to talk to about this. He explained to me awhile back why what Silent Focus experienced and we all experience who have been playing for awhile happens. He did not code the Quest except for the 3d engine. He said there was a lot of sphaghetti code that made it difficult to track some things down. I may have saved what he told me somewhere, I'll take a look. I don't have a useful save file because I play on Steam and have expansions you wouldn't have. Steam save files are funny that way. If you have an expansion on Steam but not on another device, it affects the save file. So the other device would need those expansins too or It would crash you.
  • edited March 28

    @Silent Focus--having different rewards based on Personality is interesting. I'll try to do something with that in Mithril Horde I. But just a few as Horde I is pretty much done. That can wait for another new expansion. : ) I can also add an undead magic spell that infects a nasty disease. Will try that in Horde I. They're both interesting possibilities. The area of affect I don't think I can do.

  • edited March 28

    @kohlrak--min and max resistances are 100 and -100. But the effectiveness depends on other factors. For example, magic resistance depends on Intelligence of the monster. If you have a monster that uses melee only, you want its intelligence to be really low or magic resistance in the negative won't work and you won't be able to paralyze it.

    The best way to affect a monster's magic strength or resistance is through script so that if you use a certain spell, it is more or less resistant.

    The best way to study what's going on is probably to get the PC version of the Classic Quest and the Classic Quest editor because then you can open the base game. It's how I learned the Quest editor. Well, I learned it by helping to build the base game. But same thing. I think it would really be hard to learn it from the HD version because you can't open the base game.

  • edited March 28

    @Catacomber said:
    I don't have a useful save file because I play on Steam and have expansions you wouldn't have. Steam save files are funny that way. If you have an expansion on Steam but not on another device, it affects the save file. So the other device would need those expansins too or It would crash you.

    Only if you were on the island. I was playing with it. That's the problem though: odds are you actually used those mods.

    But yeah, spaghetti is a mess. Supposedly C and C++ were supposed to prevent that, but in the real world everything's spaghetti. I get where he's coming from. The "arduino programming language" is literallly just C with macros shoved so far up the line i literally spent several days trying to turn something like "setbit(portA, 3);" to "*0x32 |= 8;" which could save alot of time in the long run.

    @Catacomber said:
    @kohlrak--min and max resistances are 100 and -100. But the effectiveness depends on other factors. For example, magic resistance depends on Intelligence of the monster. If you have a monster that uses melee only, you want its intelligence to be really low or magic resistance in the negative won't work and you won't be able to paralyze it.

    The best way to affect a monster's magic strength or resistance is through script so that if you use a certain spell, it is more or less resistant.

    The best way to study what's going on is probably to get the PC version of the Classic Quest and the Classic Quest editor because then you can open the base game. It's how I learned the Quest editor. Well, I learned it by helping to build the base game. But same thing. I think it would really be hard to learn it from the HD version because you can't open the base game.

    Yeah, i tried tackling that. I noticed, however, that the ingame editor, as Elendil said, is not in line with the game. No matter what i set the spell damage to, it does the same damage every time to the test opponents i create. On the flip side, i did see a signed overflow issue at 16 bits with the editor, though, meaning the highest base damage you can put on a spell is 32767. I'm trying to get my girlfriend into the game later today incase she gets locked in at work (she's a nurse at a long-term care facility), but if i don't forget, i'll try creating a spell that does 32768 base damage (no skill modification) to test. My theory is that if i do that, it'll heal the enemy for 32768 hp, but if i make a second spell that does 16384 and 16384 base damage (same effect twice), it'll actually work without healing the enemy. If that's the case, all you have to do to fix the spells (which i know is alot of work) is to take spells and divide all stats by 10 and just repeat the spell effect 10 times and you could, in theory, raise the spell damage cap 10 fold, but i have to actually try it out (just an idea for now). That would then, cause a problem for melee users, since they don't have that luxury when they hit their damage limits (unless enchanting with repeated effects the same way.

    But, I'm getting a little ahead of myself. I'll try it out in a few days after i found where i lost my holy shield, 'cause i have no idea where Phredd is, or even if he sells it. I know i had one, and dropped it 'cause i thought it was just generic and i was getting pretty heavy. How exactly do you see how much health any enemy has?

    Low magic res could be divide by 0 type issue. That's far, far easier to avoid, fortunately, but the magic user damage cap is a real threat, 'cause by the time the player finds out about it, it's too late, and your character's permanently damaged (unless you can either fix the spells or enemy resistances).

    EDIT: Just found the shield outside Gorum's door. The odds i'd drop it right there...

    EDIT2: Messing with a debugger i found out that health and mana are 16bit values in RAM. Yikes! I set my mana to -1 and it instantly went to 65535, so it's an unsigned value. I'm wondering if damage is then unsigned, too. Would explain why no one's seeing it as "healing" which means the max damage would be 65535, and if you did 1 more damage than that you do 0 damage. 1 more than that and you do 1. Fortunately, I don't think this naturally spills over to the next byte.

  • I never played Ice and Fire on Steam. But I have expansions that I've made to test graphics and you wouldn't have them so for you my save file would crash.

    I can't find where Elendil told me what happens when you use the high damage weapons that use drain health and drain mana but basically it's that you wrap around because it's 16 bit.

  • I created a weak enemy from the base classes of the game, but even at 250 attack magic, i wasn't able to recreate the problem, then i scrolled up and realized the issue behind the complaint. I was misreading, the whole time, that mages were the ones bugging out, when it's melee users. Now i see the problem (usually it's mages in games who break engines).

    So I made a new mistress enemy with 32767 health (the health works, but the healthbar breaks starting with 32768), made her a ranged fighter with no spells, and set out to create a spell that will kill her in 2 hits, and another spell that fails horribly in the attempt.

    The attempt failed near immediatly: turns out, negative numbers apply to magic. This means that, ultimately, you can't hit the wraparound. Due to limitations of the floating point implementation, you can't actually do the overflow, only signed overflow (0x7FFF + 1 is 0x8000 which is -32768). This creates an interesting effect, while also creating an interesting problem.

    Enemies can be made that don't immediately have a healthbar, because they have beyond 32767 health. Health is "unsigned" which means it can have a range of 0 to 65535, while an individual bit of damage is limited to -32768 to 32767. This also means you can do a restore target health spell, which wouldn't be particularly useful outside of making a quest to heal someone or keep them alive while they're taking damage in a scripted "trap" or something like that.

    But, that's not all. I then created a spell with 4 effects, each of simply damaging all by 8192 (which, when added together) makes 32768, which if you would've thrown into the editor becomes -32768 (healing for half of max possible HP). Since she had a high enough int (9), that was not an instakill (+8% magic resistance)... So i bumped it up to 9500, which should really be interesting, 'cause it's over 9000. Instakilled. This has one obvious implication: every time damage occurs, each effect get calculated separately.

    However, this doesn't solve the problem melee users are facing. For archers and mages, this isn't a problem in the slightest, because you use enchantments (for bows or arrows) or stack spell effects (there's a realistic danger of truncation, though, i imagine). On the flip side, there is a function called GetDamage() which could, in theory, be useful for throwing a cap on the damage.

    Now, my level 78 cheat character that i just made did 92 damage using Drain Health. I didn't use trainers or books or anything, but I'm curious what kind of stats are leading to damage ranges in the thousands for melee users. It kind makes me want to start my game over and make a melee character instead if they're able to handle everything so much more easily. How does one hit over 32,000 per turn with a melee user without cheating?

  • A good question for Elendil. : ) Using a high level weapon with Drain Health and Drain Mana is the problem. I wrote to him but he's busy and not sure when I'll get an answer. Basically, I think we have to live with it.

Sign In or Register to comment.