Author Topic: Damage calculator  (Read 22823 times)

Offline Holy_Diver

  • Holy Diver
  • Archmage of Light
  • *****
  • Posts: 2280
  • This account won't read/reply to Private Messages
Re: Damage calculator
« Reply #30 on: July 02, 2013, 12:19:35 pm »
I've finished initial work on the calculator features:

http://svn.swordofmoonlight.net/ex/Ex.number.h
http://svn.swordofmoonlight.net/ex/Ex.number.cpp

Not bad for more than a month of work. But before it can really be demoed the Damage extensions must be setup. In other words I'll be taking a break before resigning myself to staring at disassembled ASM until that works itself out.

EDITED: This is the single largest job I think I've ever programmed for SOM. The next largest is probably the menus interpreter. Mostly its just years and years of little things that all blend together with no one else ever appreciating the imperceptible differences.
« Last Edit: July 02, 2013, 12:27:32 pm by Holy Diver »

Offline HwitVlf

  • Dark Slayer Destroyer
  • ****
  • Posts: 1667
Re: Damage calculator
« Reply #31 on: July 02, 2013, 02:49:45 pm »
That's a lot of coding and seems like a full featured damage tweak.

What disassembler are you using?

Offline Holy_Diver

  • Holy Diver
  • Archmage of Light
  • *****
  • Posts: 2280
  • This account won't read/reply to Private Messages
Re: Damage calculator
« Reply #32 on: July 03, 2013, 01:52:09 am »
That's a lot of coding and seems like a full featured damage tweak.

Well I hope you realize this, but just for readers, none of that code pertains to damage. It's a calculator programming language basically. Maybe people should call it calculator code. It's a very elegant programming language (that I've developed) that maps as elegantly as possible to what any kid would be taught in grade school. Although for some reason talking about it (without resorting to programmers' idioms) I find very difficult.

Quote
What disassembler are you using?

Mainly the one built into SOM. do_disasm F11 function overlay. Sometimes the crude disassembly features built into Microsoft Visual Studio. People can hate all they want on Microsoft. But almost nothing compares to Visual Studio for productivity. Competitors are Eclipse and Netbeans but they are still not as nice and I am sill using MSVC2005. It's probably Microsoft's strongest product.
« Last Edit: July 03, 2013, 01:53:41 am by Holy Diver »

Offline HwitVlf

  • Dark Slayer Destroyer
  • ****
  • Posts: 1667
Re: Damage calculator
« Reply #33 on: July 04, 2013, 02:41:35 pm »
I think Microsoft made some very good tools in their heyday. But, most every software I've seen from them since around the time of Vista, has been a step in the wrong direction.

Since you already have a hook in the damage process to display damage on screen, don't you already know where to inject you calculator without having to do a bunch of assembly tracing?

Offline Holy_Diver

  • Holy Diver
  • Archmage of Light
  • *****
  • Posts: 2280
  • This account won't read/reply to Private Messages
Re: Damage calculator
« Reply #34 on: July 05, 2013, 04:25:13 am »
I think Microsoft made some very good tools in their heyday. But, most every software I've seen from them since around the time of Vista, has been a step in the wrong direction.

That's pretty much true of all Microsoft software. However their C++ developer tools are used by Microsoft to develop Windows. For the longest time nothing was even close. But free software is catching up. But still there is nothing that can match the muscle of Microsoft's tools. If you don't use them development takes much longer. So it's best to do all of the real development on Windows and then do the porting work however you can. If not for MSVC Microsoft might be bankrupt. It's the tendency to develop first for Windows that probably keeps the company in good standing with the people who develop all of the software that makes Windows attractive.

Quote
Since you already have a hook in the damage process to display damage on screen, don't you already know where to inject you calculator without having to do a bunch of assembly tracing?

If only everything was that simple. No. You can just monitor the HP of things. If it goes down then they were damaged.

Offline HwitVlf

  • Dark Slayer Destroyer
  • ****
  • Posts: 1667
Re: Damage calculator
« Reply #35 on: July 05, 2013, 05:51:40 am »
Can't you just negate/reverse SoM's normal HP change and use that as a trigger to poll attack/defense stats to adjust damage according to your calculator's setup?
« Last Edit: July 05, 2013, 05:56:35 am by HwitVlf »

Offline Holy_Diver

  • Holy Diver
  • Archmage of Light
  • *****
  • Posts: 2280
  • This account won't read/reply to Private Messages
Re: Damage calculator
« Reply #36 on: July 05, 2013, 06:15:23 am »
Can't you just negate/reverse SoM's normal HP change and use that as a trigger to poll attack/defense stats to adjust damage according to your calculator's setup?

No. You wouldn't know the source and mode of the damage. And the trigger wouldn't be evident until too late.

Offline Holy_Diver

  • Holy Diver
  • Archmage of Light
  • *****
  • Posts: 2280
  • This account won't read/reply to Private Messages
Re: Damage calculator
« Reply #37 on: July 05, 2013, 09:05:06 am »
Fun fact. Monsters can kill NPCs with their indirect attacks. Something to watch out for.

That seems like something that either there should be a simple way to disable it. Or monsters should be able to kill NPCs with melee for completeness. I wouldn't mind investing time into having monsters hunt targets other than the player if that's pretty straightforward to do. I've always thought monsters should be more interested in each other than the player.

I wouldn't do a total overhaul of SOM's AI at this stage. But it can probably be easily tricked into thinking another NPC is the player on a per AI basis.

To be honest I'm more interested in blurring the line between NPC and enemy. It might make sense for authors to just setup their damage formulas to not harm individuals. On the other hand, do_not_harm_defenseless_characters would be easy enough to setup.
 
Another thing that's always bothered me is the player being the most powerful thing in the game. It seems like many things in most games should just be beyond the player's ability to vanquish period. In other words, you're just wasting your time to even try.


Anyway. I've also been thinking about the Void model. It's tricky, but I think it's a superior model. One thing I think it needs is a stat for the weapons and armor that just shows the raw power. Which is possible in the void model. And that would be a big help just comparing equipment side by side for class I think. It is going to take some rearranging of the menus. It won't be in the next release. Or probably even in the one after that.


Another thought I've had is instead of letting the player master a weapon. I reckon we might as well take that to the logical extreme and let them master individual ways of swinging individual weapons, since every swing is a different movement. This can be represented in equipment stats too if instead of showing percentiles you showed grades as Verdite has been asking for. One thing that makes me lean towards grades SABCDEF is I am not convinced a % will look so nice in the menus, and F for 50% or less would be a lot more compact, especially if you do C-A to demonstrate a maximum and minimum range of all swings available. To see a breakdown on the basis of individual swings you'd have to access a large table of some kind. Probably best to do that with a virtual manual that would not factor in mastery and durability.


EDITED: According to the void model the affinities of each type must add up to 100% so that AAA on all physical should not be possible to do. Since you are directing a portion of the weapons raw power in different ways. But I suppose through mastery you could go over 100% since it would just represent a scaling of the effectiveness. Another need for a raw power rating is the Void model hides stats in the empty spaces after the Stab and Holy affinities. So without a Raw total if all of the power was in a void slot the weapon would appear to be powerless, which is not right if you ask me.

For the physical affinities using grades it would still appear powerless. No Slash/Smash/Stab or whatever, but the Raw power would be the sum of the magical or material affinities, so you could conclude that the power does not take the form of one of the physical affinities, which would actually be the case. In other words it would be a "vorpal" sword of some kind, or more likely a magic spell...

Although I'm not sure how you could represent mastery of spells or such a weapon for that matter. Even grades in the physical affinities really would not make sense for spells. Oh well. You can't see stats for sword magic either. And you could always reveal the Void slots if you have too. But I still think the not knowing is fun. Probably the best way to show off spell mastery would be more impressive special effects. Wizards often don't realize that they are rusty until their spell is less impressive than expected. Such is the nature of magic.
« Last Edit: July 06, 2013, 01:32:08 pm by Holy Diver »

Offline HwitVlf

  • Dark Slayer Destroyer
  • ****
  • Posts: 1667
Re: Damage calculator
« Reply #38 on: July 05, 2013, 02:00:44 pm »
I suppose that makes sense since it's possible for an enemy to get damaged from another enemy. but still the "reduce HP" step should be just downstream from the damage calculation. It's not likely that SoM would calculate damage, then hold the result in memory and do a bunch of other stuff like trigger the "getting hit" animation before actually reducing HP.

Offline Holy_Diver

  • Holy Diver
  • Archmage of Light
  • *****
  • Posts: 2280
  • This account won't read/reply to Private Messages
Re: Damage calculator
« Reply #39 on: July 05, 2013, 03:59:49 pm »
I suppose that makes sense since it's possible for an enemy to get damaged from another enemy. but still the "reduce HP" step should be just downstream from the damage calculation. It's not likely that SoM would calculate damage, then hold the result in memory and do a bunch of other stuff like trigger the "getting hit" animation before actually reducing HP.

Actually that's exactly what SOM does as it turns out. But anyway. Computers do things in sequence. You have to wait your turn if you are not the man in the middle. So if the word "downstream" even makes sense then you are already inside of the code somehow.

When the damage monitoring HUD looks at HP doesn't really matter. It just does it once per frame. A few things use it.


EDITED: I can post the details on what SOM actually does, at least with respect to the formula tomorrow. I am too exhausted right now.
« Last Edit: July 05, 2013, 04:06:47 pm by Holy Diver »