project-navigation
Personal tools

Author Topic: Encumbrance/TU penalty  (Read 9029 times)

Offline DarkRain

  • Project Coder
  • Captain
  • ***
  • Posts: 747
    • View Profile
Encumbrance/TU penalty
« on: August 26, 2010, 12:50:12 am »
Hello

I wanted to have some opinions om my third experiment with the source, this time id about TU penaltys and encumbrance:

The purpose is to add a TU penalty to some items like armour and heavy weapons, the way I made this is apply the penalty to movement costs, this will make a soldier with say a machinegun have less mobility but be able to use max TUs to fire (assuming he/she is not encumbered) as opossed to have TUs cut from the max

Also to add weight to items so soldiers that carries a weight over a threshold (based in strength) will have their TUs cut during combat

Note that this is WIP missing features include:
  • having a limit to what a soldier can carry (also based in strength) so soldiers wont be sitting ducks crushed under the weight of their equipment (that happened once while testing - I'm not using sensible weights for testing so no surprise there)
  • Actually changing the scripts (I'm not submiting any changes to them here) - sugestions for sensible weights and/or TU penalty welcome
  • This should be shown to the user (or so I think) - sugestions and help on how/where to do this welcome (not good at UI desing)
  • edit: almost forget: a way to prevent auto equiped actors (skirmish, aliens in campaign ...) from becoming overloaded/underequiped

I´d like to know your opinions/sugestions/help on this
« Last Edit: August 26, 2010, 01:00:34 am by DarkRain »

Offline Duke

  • Administrator
  • PHALANX veteran
  • *****
  • Posts: 1037
    • View Profile
Re: Encumbrance/TU penalty
« Reply #1 on: August 26, 2010, 02:04:28 am »
The purpose is to add a TU penalty to some items like armour and heavy weapons, the way I made this is apply the penalty to movement costs, this will make a soldier with say a machinegun have less mobility but be able to use max TUs to fire (assuming he/she is not encumbered) as opossed to have TUs cut from the max
I fear I have not fully understood that concept. Please elaborate on that. TUs are TUs.

Looking at the diff, I'd like to see your concept (as I understand it) better encapsulated in some GetTUsAvailableForMovement() further down the call tree.

Thx for helping us anyway :)

Offline DarkRain

  • Project Coder
  • Captain
  • ***
  • Posts: 747
    • View Profile
Re: Encumbrance/TU penalty
« Reply #2 on: August 26, 2010, 02:20:15 am »
I fear I have not fully understood that concept. Please elaborate on that. TUs are TUs.
Well english is not my first lenguage... I'll try to explain what I meant

The idea was to add a property to the objectdef (the TU penalty) for some items like heavy weapons that will increase the amount of TUs the actor needs to move, thus reducing his/her mobility (will spend more TUs for moving) but won't affect TUs given at the start of the turn, unlike encumbrance the other concept introduced wich will cut TUs given to the actor at the start of the turn based on strenght to weight of the items (also a new property) ratio

Quote
Looking at the diff, I'd like to see your concept (as I understand it) better encapsulated in some GetTUsAvailableForMovement() further down the call tree.

As I said this is not near finished yet, I'm open to sugestions

edit: maybe an example will help to explain: apply the attached diff over the one in the first post and

TU penalty: equiping the Combat Armour or the Rocket Launcher will cause a soldier to use 3 TU per square when walking and 4 when crouch walking (equiping both should cause them to use 4 and 6)

Encumbrance: equiping both the Combat Armour and the Rocket Launcher may cause (depending on strenght) the soldier to start the turn with less TUs than normal (maybe even 0 that part is still half done)
« Last Edit: August 26, 2010, 03:54:35 am by DarkRain »

Offline Mattn

  • CaveExpress
  • Administrator
  • PHALANX Commander
  • *****
  • Posts: 4830
  • www.caveproductions.org
    • View Profile
    • CaveExpress
Re: Encumbrance/TU penalty
« Reply #3 on: August 26, 2010, 09:41:13 am »
well, in general i like the idea - having a soldier equipped with a heavy machinegun is not running as wide as a soldier equipped with a knife - but please don't put the knowledge of this down into the grid_* functions or the interface - try to encapsulate that a little bit better.

Offline Duke

  • Administrator
  • PHALANX veteran
  • *****
  • Posts: 1037
    • View Profile
Re: Encumbrance/TU penalty
« Reply #4 on: August 26, 2010, 04:53:28 pm »
I think I understood now: There are two concepts, 'penalty for walking only' and 'reduce max TUs', and your diff implements them *both*. Correct ?

I'd suggest the penalty to be expressed as a float factor like the crouching penalty.

I forgot that Grid_MoveCalc doesn't know the entity anymore. So encapsulating further down the calltree is not an option. Perhaps it's time to create some ActorMoveInfo_t and pass that instead of a dozen params.

Iterating the whole inventory is a little time-consuming. Grid_MoveCalc is called pretty often, especially in the AI code. Maybe you find a place to do that calculation further up the calltree ?

Offline DarkRain

  • Project Coder
  • Captain
  • ***
  • Posts: 747
    • View Profile
Re: Encumbrance/TU penalty
« Reply #5 on: August 26, 2010, 06:26:16 pm »
I think I understood now: There are two concepts, 'penalty for walking only' and 'reduce max TUs', and your diff implements them *both*. Correct ?
That's right, maybe I should split it in two to keep things clearer?

Quote
I'd suggest the penalty to be expressed as a float factor like the crouching penalty.
Yes after some testing that seems the right thing to do

Quote
I forgot that Grid_MoveCalc doesn't know the entity anymore. So encapsulating further down the calltree is not an option. Perhaps it's time to create some ActorMoveInfo_t and pass that instead of a dozen params.

Iterating the whole inventory is a little time-consuming. Grid_MoveCalc is called pretty often, especially in the AI code. Maybe you find a place to do that calculation further up the calltree ?
those are good points

Offline Duke

  • Administrator
  • PHALANX veteran
  • *****
  • Posts: 1037
    • View Profile
Re: Encumbrance/TU penalty
« Reply #6 on: August 26, 2010, 10:23:25 pm »
That's right, maybe I should split it in two to keep things clearer?
I don't think so. As they handle similar problems, they should be implemented side by side.
I just had some problems in understanding because I thought of them as concurrent concepts.

Offline Kildor

  • Project Artist
  • Captain
  • ***
  • Posts: 757
  • Project mapper and some other stuff`er
    • View Profile
    • http://ufoai.nx0.ru
Re: Encumbrance/TU penalty
« Reply #7 on: August 29, 2010, 08:16:33 am »
I like more first concept (penalty for walking).

Offline Duke

  • Administrator
  • PHALANX veteran
  • *****
  • Posts: 1037
    • View Profile
Re: Encumbrance/TU penalty
« Reply #8 on: August 30, 2010, 12:34:44 am »
Kildor, imho both concepts make sense at the same time:
- walking penalty for the weight (in eg. backpack)
- TUmax reduction for eg. light, but bulky armour

If users will understand that (by intuition !) is another question...

Offline DarkRain

  • Project Coder
  • Captain
  • ***
  • Posts: 747
    • View Profile
Re: Encumbrance/TU penalty
« Reply #9 on: August 30, 2010, 11:23:32 pm »
Ok, have been busy lately (and without internet connection for a couple days), but I'm trying with a new approach to this, still half done, but I´d like to hear your comments before I go any farther in this direction.

edit: Oops included thing I didn't mean.
« Last Edit: August 30, 2010, 11:37:15 pm by DarkRain »

Offline Duke

  • Administrator
  • PHALANX veteran
  • *****
  • Posts: 1037
    • View Profile
Re: Encumbrance/TU penalty
« Reply #10 on: August 31, 2010, 12:16:24 am »
Well, 'the code has the truth', but I'm currently not in the mood to guess everything from the code ;)
So could you please give us a brief description of what your new approach is ?

Offline DarkRain

  • Project Coder
  • Captain
  • ***
  • Posts: 747
    • View Profile
Re: Encumbrance/TU penalty
« Reply #11 on: August 31, 2010, 01:16:23 am »
Hi,
sorry I had only time for a quick post -- had to go get something to eat -- not very different from first approach but I tought I would add the total weight and tu penalty of the items in inventory_t and update it only when the charater's inventory is changed (instead of calculating it every time they are used), well actually I'm updating it at CL_CharacterSkillAndScoreCvars and calling actor_updatecurrent in the onChange event for the container nodes (but it will only work if you use DND as auto placing seems to be calling the onChange event only for armour) but anyway that's the main idea

Offline keybounce

  • Sergeant
  • *****
  • Posts: 330
    • View Profile
Re: Encumbrance/TU penalty
« Reply #12 on: August 31, 2010, 02:10:47 am »
Reducing TU's for having too much weight is a bad thing. Did you ever notice that in XCom, you could not aim your weapon if you had too much in your back pack? (Aimed shot was 80% TU, and just about any "too heavy" penalty dropped you below that.)

Offline Duke

  • Administrator
  • PHALANX veteran
  • *****
  • Posts: 1037
    • View Profile
Re: Encumbrance/TU penalty
« Reply #13 on: August 31, 2010, 10:57:39 pm »
-- had to go get something to eat --
No problem. That's always prio 1. We can't use starved devs ;)

So the plan is to maintain the weight. That's good. Provided you can catch *all* the events that change it. Which can be difficult as you already noticed.
Do you think you can provide a little patch that makes auto placing call onChange ?
Do you think you found all the events ?

@keybounce:
DarkRain's implementation will apply the penalties in the most gradual way possible. So it's not like overloaded ? TUs -= 20%.

Offline Thrashard96

  • Squad Leader
  • ****
  • Posts: 260
    • View Profile
Re: Encumbrance/TU penalty
« Reply #14 on: September 01, 2010, 02:55:38 pm »
If anyone will add penalty TUs, i will reverse them for my goodness (darn translation website, there isn't a word i forgot in its database).

Anyways...