ihofmann / open-websoccer

A PHP based online football/soccer manager game.
GNU Lesser General Public License v3.0
109 stars 73 forks source link

Factors of Offensive and Defensive Strength #84

Open ffeiler opened 4 years ago

ffeiler commented 4 years ago

During inspecting the simulation strategy, I noticed two decisions I'd like to question.

1) Defensive Strenght

// less than 3 defence players would be extra risky
        if ($noOfDefence < 3) {
            $strength = $strength * 0.5;

            // but more than 4 extra secure
        } else if ($noOfDefence > 4) {
            $strength = $strength * 1.5;
        }

I like the idea of strengthening tactics with more than 4 players. The problem is: Such tactics are not possible to line up from the beginning. You can only achieve this by substituting a player during the match. Therefore, I'd like to see the possibility of fielding 5 player defenses.

2) Offensive Strenght

// strikers (count only first two doubled since too many strikers are inefficient)
        if ($noOfStrikers < 3) {
        $strength += $player->getTotalStrength($this->_websoccer, $match) * 1.5;
    } else {
        $strength += $player->getTotalStrength($this->_websoccer, $match) * 0.5;
    }

I'd argue that the imposed penalty of only considering half the strength of the third attacker is way too much. Nearly all RL teams play with LW-CF-RW and that should be possible in our simulation too. Additionally, there is a strong bias for defensive tactics present in the websoccer, and removing this penalty could yield more balanced tactics options. Our workaround is currently to allow LW/RW to play as LM/RM but I do not like it because it's constraining our tactical choices strongly. I'd suggest either replacing the condition with ($noOfStrikers < 4) or removing the penalty for the third player completely.

ceriyvolck commented 4 years ago

@ffeiler 5 player defenses formation.twig `<select class="input-mini wstooltip" name="formation_defense" title="{{ i18n.getMessage("player_position_defense") }}">

        {% for i in 1..5 %}

            <option value="{{ i }}"{% if setup.defense == i %} selected{% endif %}>{{ i }}</option>

        {% endfor %}`