From just after base score was changed to a flat 300 and the formula was divulged.
Official Formula is here:
https://gemsofwar.zendesk.com/hc/en-us/articles/360000340936-Point-Scoring-for-Guild-Wars#:~:text=Setting%2024%20unique%20troops%20in,first%20win%20of%20each%20day.
In text form:
BASE_SCORE + BASE_SCORE * (COLOR_BONUS + SURVIVAL_BONUS + SPEED_BONUS + MANA_BONUS + DAMAGE_BONUS)
I’m having difficultly finding a source on this, but I believe SURVIVAL_BONUS weighting or limit was changed, possibly after this point. There were no other announced changes to how this formula works to my knowledge.
The methodology of each category is explained in the link. Spelled out point blank.
Remember for the first battle of the day, you have to subtract your given defense uniqueness bonus, since thats just tacked on to the given score display while having nothing to do with the battle.
So, you could glean this with relatively few samples, but doing so would require intentionally sacrificing points to do so. Alts in lower brackets would be a good way to do this.
The easiest way you are going to get consistent trials here is to break color and use a team that has little chance of dropping the turn in a lower bracket to glean how much SPEED_BONUS has changed and the upper bounds of the score threshold. So you want to get “perfect” marks in MANA_BONUS and DAMAGE_BONUS and SURVIVAL_BONUS for a few initial trails, while only dropping your COLOR_BONUS by a known amount (which should still be 50% per troop of matching color, per all the information we were given to start). If you aren’t willing to assume COLOR_BONUS has not changed, you could glean this information with a few more samples by using a team with one fewer or one more correct color, since SPEED_BONUS (per action) is very small and COLOR_BONUS is relatively large. With COLOR_BONUS contribution % known and SPEED_BONUS contribution % per action known, you can calculate the upper bounds of a guild wars score. This is as far as I bothered to go with my initial tests. So what would be the best way to get the precise values of the remaining variables?
The next easiest thing to remove as a variable would probably be Survival Bonus. You can certainly use a team with something like a Fire Bomb that never actually gets hit by the enemy or allows them to take more than a single mana match after you have gleaned your per action score contribution, however, there is no way to tell if sacrificing your own Fire Bomb would count as you taking damage or not (lowering both your DAMAGE_BONUS and your SURVIVAL_BONUS, making it difficult to get DAMAGE_BONUS), since this was not explicitly stipulated for the rules (it is that instakills and devour do not contribute to either damage bonus calculation, but there is no significant data on if this includes self-induced instakills outside of death mark). An alternative to try would be to enter a battle with less than a full team, and still completely shut out the opponent while counting your actions. Remember, the scoring criteria explicitly states that it counts troops alive at the end of the battle, not how many have died. With perfect MANA_BONUS and DAMAGE_BONUS, you know exactly how much SURVIVAL_BONUS is for each troop if you ended with a three troop team, since you already know how many points you lose for not having a troop of that color and how many you lose for each action you take and what your max possible points for that battle would have been.
Once you have removed SURVIVAL_BONUS as a variable, the last two remaining variables are MANA_BONUS and DAMAGE_BONUS. You’ll know how much score both of them combined can contribute, but not their ratios to each other. If we are talking alts will probably be gathering this data either way, you are likely going to have to run into a team with non-threatening spells that you can barrier-tank while allowing them to take a lot of mana matches. Of course this, again, requires an assumption that the damage nullified by a barrier does not count as damage. Alternative strategies like Web and/or Entangled could be employed, but your goal here is to land with at least 4 times as much damage given as the opponent while recording every point of mana taken for both sides (as well as how many actions were taken). With your DAMAGE_BONUS maxed out for said battles and a few trials with a variable MANA_BONUS, you should be able to zero in on how much MANA_BONUS is contributing which by process of elimination would also give you DAMAGE_BONUS as the final remaining variable. The alternative here would be to minimize your DAMAGE_BONUS by purposely initiating a war of attrition where you are taking more damage than your opponent but healing way more in kind, but that would require so much more data to be collected to ensure that you are recording a correct MANA_BONUS (which would then be very very difficult to keep maxed out or consistent between battles).
All this assumes the posted methodology for how the formula works is accurate and there aren’t any major bugs impacting single score calcs. Repeated anomalous results could be an indication that one or more of the criteria does not work as stated or there are additional criteria that are not stated.