Sunday, 13 April 2025

v.0.8. is Released!

 New version 0.8 available here - add a comment if it cannot be downloaded.

See this article to know how to install it. Practically, just unzip and type in a command prompt: java -jar bloodbowl-0.8.jar. Should be easy ðŸ˜€ !Java 20 is needed! Double-click on the JAr should also work.

If you want to use 'Bot Bowl' interface, see this blog article, but in Bot Bowl, this AI is slightly less good and some skills are not implemented or properly tested.

To summarize:

The main point of this release is fixing bugs. Do not hope to see a strong increase in the AI performance. Anyway, notice that now 'AI' can use the 'Bombardier' skill: it was the only skill from LRB6 rulebook that was not yet used by the AI.

Enjoy!

Final change log:

Version 0.8

===========


Requires Java 20.


Rules Implementation

--------------------

- It was not possible to use a re-roll on a 'kick back' when using the Chainsaw

skill;


Bug correction

--------------

- Were Team (Secret League): Werecat had armor of 8 instead of 7;

- The skill 'Strip Ball' should not work if the opponent has the skill 'Sure

Hand'.

It was not always the case;

- The skill 'Strip Ball' was not working when pushing the ball carrier out of the

pitch;

- When the user is failing an action (for example pick-up the ball), then

sometimes the turn ended immediately, without finishing totally the action -

like feeding for 'Blood Lust' skill for example. This creates also some bugs at

kick-off;

- It could happen that some status of players of the receiving team was not reset

at the last turn of a half, if the other team had just scored;

- Correct a bug where skill 'Leap' could be used although it was remaining only

0 move and one GFI available;

- Correct a rare bug when the ball is out of pitch at kick-off, then is given to

a player on which a rock is launched. The player was still holding the ball;

- Remove a memory leak that occurred after each AI game;

- If a player is prone and moved out of the pitch due to a Ball&Chain attack,

he was doing two Injury rolls;

- Correction with the Skill 'Disturbing Presence' that was wrongly taken into

account;

- The Interception ruler was not always correct;

- Armour modifier due to Chainsaw was not taken into account in a Foul action;

- When a ball carrier was moved out of the pitch, it was asked to the attacker

to follow or not after throwing back the ball into the game. It must be after;

- Skill Ball&Chain: the rule where the player knocked down or prone must roll

for injury was not applied;

- Skill Ball&Chain: the rule where "Stunned results for any Injury rolls for

the Ball&Chain player are always treated as KO’d" was not correctly applied;

- Players of the receiving team that were stunned during kickoff event

(pitch invasion, blitz, etc) were incorrectly put prone too early;

- Correct a bug that can occur after that a ball&chain player try to move a

Stand Firm player who selects to not move;

- Stunty skill was badly taken into account in the Injury Table;


AI improvements

---------------

- Improve setup at kicking where some strong players could previously remain

in the reserve area;

- Correction in the move selection of the ball carrier (due to this, AI games

could freeze during several seconds);

- AI vs AI game (without UI) takes in mean 20% less time;

- Chainsaw skill was not correctly taken into account when calculating

probabilities (to block/blitz/foul);

- Bombardier skill is now used by the AI;

- During Blitz kick-off event, reduce the risk taken just to go closer to

the ball;

- AI could use a bad path to blitz a player which requires to use all

the GFI - the probability was badly calculated;

- AI could (rarely) try to block with a Ball&Chain player - although only

a Move action is allowed. The action was then lost;


UI improvements

---------------

- It is not longer possible to move a KO's player on the pitch during setup;

- Correction in the display of the mouse icon which was not always correct;

- Some Animated Threads (for .gif) were not correctly terminated after a game;

- It is now possible to get result of activation Roll without moving (for

example Bone Head, Really Stupid or Blood Lust) even for PASS, FOUL and

HANDOFF action. Until now, it was only possible for MOVE or BLITZ action;

- If Pass button was activated, it was possible to right click on a unreachable

teammate. The pass was not executed, but the ball carrier ended his turn.

Now a simple message indicates the pass is not possible. Furthermore the

'interception' squares were wrongly highlighted (in case of Blizzard

for example);

- When the user wanted to move a player on a neighbour square: the less

risky move was always suggested, but it was not always the shortest.

Now this is the shortest, which will allow the user to move the player as

he wants. For non neighbour squares, the behavior remains the same;

- If a bomb was thrown out of the pith, the icon of the bomb was still

visible;

- Path suggestion to blitz a player which requires to use all the GFI wa

not correct;

- Minor animation correction when skill 'Leap' is used;

- In the Team editor, the skills gained by a player appears now in green;

- Sometimes, the 'kick' notification when using the skill Kick was not

shown on the right player;

Wednesday, 7 February 2024

v.0.7 is Released!

New version 0.7 available here - add a comment if it cannot be downloaded.

See this article to know how to install it. Practically, just unzip and type in a command prompt: java -jar bloodbowl-0.7.jar. Should be easy ðŸ˜€ !Java 20 is needed! 

If you want to use 'Bot Bowl' interface, see this blog article, but in Bot Bowl, this AI is slightly less good and some skills are not implemented or properly tested.

To summarize:

The two main points of this release are:

- Focus on the AI;

- Add new teams (14) from the Secret League (https://fumbbl.com/help:SecretLeague)

Although the AI has been improved, it remains a lots of possible improvements and you will still see some stupid moves. However I have added a lots of tests and developed some debug tools that allow me to easily introduce new tests. Practically, this means we should get less regressions in the AI in the future. I mean, when adding a new AI behavior, you do not always realized that this new behavior introduces a weakness in a different position. With all the tests added in this release, we should have less regression in the future!

The UI for the tournament creation is still ugly - maybe one day it will be improved 💪

Last remark: the AI is a bit slower - an AI vs AI match takes now about 11 seconds without UI activated. This is far too long, but this is not really a problem.

Enjoy!

Final change log:

Version 0.7
===========

Requires now Java 20.

Rules Implementation
--------------------------
- It is now possible to re-roll a 'Ball and Chain' move;

Bug correction
------------------
- Game could freeze with skill 'Ball and Chain';
- Correct regression with skill 'Ball and Chain' where player stopped to move after one block;
- Correction where it was possible for player with 'Leap' to use the skill during 'Quick Snap';
- In some cases, it was possible to use 'Leap' with only one remaining 'Going For It';
- Correct an issue in UI if you use Ctrl + right click to move a player (it was a hidden functionality not working correctly). This has been disabled;
- It was not possible to start a drive if the remaining number of players was lower than 3;

AI improvements
---------------------
- Correction in blocking probability when attacker has skill 'Wrestle' or 'Pro';
- Minor improvements related to dice selection (or reroll choice) when blocking a player that can be pushed out of the pitch;
- When the bank is full (200 000 Gold), now AI uses remaining gold in treasury to buy inducements before each match;
- AI will block/blitz more frequently;
- Small change where blitz was never used if the player was already next the opposite player (this has an impact for 'Horns' for example);
- Blitz is now more often used by 'prone' player;
- Minor change of behavior when the ball is in the air;
- Improvements in the choice of the AI to select the player to assist, and the square to go;
- Improvements when moving the catcher;
- Correct regression where AI was not anymore trying to bother catcher that could potentially score a Touchdown;
- Better take into account skills 'Side Step' and 'Stand Firm' to be less 'afraid' of squares next border;
- Minor changes in selection of square when pushing an opposite player;
- Better move done by prone players;
- Better move to defend ball carrier;
- Correct regression related to skill 'Throw TeamMate' - it was almost never used;
- Do not try to improve assist of an attacker who has 'Chainsaw' skill - because it will not change the probability;
- AI wanted to always move the ball carrier of at least one square before to hand-off the ball. Now it can directly hand-off without moving it is the best action;
- Better move chosen by the ball carrier;
- Hypnotize first players that have a tackling zone;
- Improve choice to follow or not after a push;

UI improvements
---------------------
- It is not possible anymore to click on 'Cancel' when upgrading a player (previously we could re-roll dices until we like the result);
- Some text could be badly displayed depending on the Java version used - like the Team's name on the pitch;
- Do not show inducements dialog before match if not enough money to buy the cheapest one;
- Team Ranking: column 'Points' moved to the last column;
- When the user click on a square, if he doesn't release the button on the same square -> no action is executed. This avoids some potential bugs;

Miscellaneous
-----------------
- Add some 'Secret League Team' from https://fumbbl.com/help:SecretLeague:
    * Araby Team
    * Bretonnian Team
    * Estalia Team
    * Ethereal Team
    * Forest Halflings
    * Giant Team
    * Gnome Team
    * Kingdom of Ind
    * Kislev Team
    * Nippon Team
    * Northern Nippon Team
    * Pirates of Sartosa
    * Treemen Team
    * Were Team


Thursday, 13 July 2023

v.0.6 is Released!

New version 0.6 available here - add comment if cannot be downloaded.

See this article to know how to install it. Practically, just unzip and type in a command prompt: java -jar bloodbowl-0.6.jar. Should be easy ðŸ˜€

If you want to use 'Bot Bowl' interface, see this blog article, but in Bot Bowl, this AI is slightly less good and some skills are not implemented or properly tested.

To summarize:

Very very few changes compared to 0.5. This release is done mainly for BotBowl competition. It was mandatory to correct a crash in version 0.5.

In 0.5 there was also a very annoying rare crash that freezes the game - hard to reproduce. Maybe the bug is corrected. If not, new debug information should help to find the issue.

Final change log:

Version 0.6

This version is very similar to 0.5 but is released to participate to BotBowl V.

Bug correction

- In previous version, there is a very blocking bug where UI can freeze. This version contains small modifications to try to solve it and to add debug information if the bug still occurs;

- A re-roll done during a block always counted for 2 re-roll;

- Sometimes after a match, clicking on 'End Turn' to exit the game was not working. This was blocking the game;

AI improvements - specific to 'Bot Bowl'

- There was a regression in the previous version (0.5) that leads to a crash when AI has to select a square to push;

Sunday, 27 November 2022

v.0.5 is Released!

New version 0.5 available here - add comment if cannot be downloaded.

See this article to know how to install it. Practically, just unzip and type in a command prompt: java -jar bloodbowl-0.5.jar. Should be easy ðŸ˜€

If you want to use 'Bot Bowl' interface, see this blog article, but in Bot Bowl, this AI is slightly less good and some skills are not implemented or properly tested.

To summarize:

Some cool stuffs like implementation of latest skill of LRB6 (all skills are implemented now!), blood on the pitch, different pitches, inducements before match can be used also for user team (Wizard and so on), small animations (when gaining XP, etc)... But main task was bug fixing for this release - like turn marker that was moved at the end of the turn and not at the beginning.

This version should be more stable than v.0.4, although I know it contains some bugs I still do not have resolved. But to my knowledge, no big issue... UI to create/manage tournament is still poor, but my time is limited! 😛

Final change log:

Version 0.5

Still requires Java 11.

Rules Implementation

- 'Juggernaut' skill: during blitz action when 'both down' is selected, we can now use the skill to select 'pushed' instead;

- Add skill 'Leap';

Bug correction

- Player that should miss one game was missing 2 games (and in second game, it was counted as a member of the team -> we could start with less than 11 players)

- It was not possible to reroll a failed 'Wild Animal' roll;

- During pushing sequence (after block), ball sometimes bounces before the end of the sequence. Now this is done only after all pushing moves;

- It is no longer possible to use team reroll when catching ball at kick-off;

- Player with skill 'Decay' could keep status 'Badly Hurt' during several matches, leading to some issues;

- Injured Star Player was not always removed from SI area after a game;

- If ball was caught by a player in Touchdown area, touchdown was not counted;

- A player was able to use skill 'Sure Feet' more than once per turn;

- Rare crash when a player with 'DumpOff' has the ball and is blocked by a player with 'Multiple Block';

- During 'Touchback' at kick-off, AI was able to select only player not in tackle area to get the ball. If none available, ball was not anymore on the pitch;

- Turn marker move is now done at the beginning of the turn after kick-off (and not at the end);

- Skill 'Tackle' for stand up player was effective even if the player had lost his tackle zone (being hypnotized for example);

- 'Dauntless' skill was used also for defender although it should be only for the player who blocks (attacker);

- When AI was buying a Wandering Apothecary (inducement), an Igor was bought instead;

- Frenzy skill was not used for 'Pushed' result on a defender who is using 'Stand Firm' skill;

- It was possible to move (during block action) a player with 'taken root' activated;

The attacker player was earning Star Player point if the defender was stunned and also if the defender was thrown out of pitch;

AI improvements

- Better use of 'Juggernaut' skill;

- Miscellaneous improvements of Vampire team - mainly when 'Blood Lust' failed;

- Corrections in path finding algorithm - in some cases some squares were not correctly evaluated;

- Skill 'Leap' is taken into account in each move probability;

- Minor Skill selection changes when upgrading a player;

- Minor changes in Team management after game;

- Minor changes in behavior during a game;

AI improvements - specific to 'Bot Bowl'

- Now AI never uses 'Apothecary' when player is simply KNOCKED_OUT (apothecary is kept for later);

UI improvements

- Ensure we cannot move player in bad area during set-up;

- When creating new tournament and loading existing teams, now 'Human' coach is correctly retrieved (previously it was always AI selected);

- Now we can load teams coming from 2 different saved tournament if they have the same name - when creating the team, we generate a unique id. This will not work for tournament saved before v.0.5. We can also rename a loaded team (useful when 2 teams of different saved tournament have same name);

- Add possibility to change pitch background;

- In Team editor, Team Value was not directly updated when a player was upgraded;

- In Team editor, some values (like Reroll, treasury, etc) were sometimes incorrect, mainly after switching from one team to another one;

- Information dialog is now displayed to give more information about kick off event;

- Indicate Team Name on each side of the pitch;

- Add blood on the pitch when a player is KO, Badly Hurt, Seriously Injured or Dead;

- Add simple animation when a player gains experience or/and score touchdown;

- Reduce CPU used by UI when a player is selected;

- Correct display of dice roll for 'Shadowing' in the Information window (one modifier due to Movement value was not correct);

- Inducements can now be bought by user in the pre-match sequence (consequently Wizard can be now used by the user);

- It is no longer possible to create, load save a tournament when a game is running;

- Small improvement of UI when creating new tournament - now you can easily delete some teams loaded from previous tournament;

- Background picture added when creating new tournament;

Miscellaneous

- A game win brings now 3 points (instead of 2);

Wednesday, 7 September 2022

v.0.5-dev - Skill 'Leap' is implemented

Yeahhhhh!  Last skill that was not yet implemented, 'Leap' has been developed! In the list of actions available, there is now the 'Leap' button:


This is not an 'action' like Pass or Blitz, but it was convenient to put the button there.

The button is available only if a player with skill 'Leap' is selected, if he has not yet used it this turn and if it remains at least 2 moves. Then you see the possible leap location (in magenta):

A right click on the square and the leap is done (at the cost of 2 moves)!

Another way to use the skill (the simplest one!) is just to let the path finding algorithm find when leap is needed. Example:

If your mouse is on the square '67' (67 is in reality the probability to reach this square, and yes print screen is removing the mouse icon 👎), you see as usual the yellow path and in magenta the leap destination. So the 'Slann' player will move two squares, then leap then move again if leap was successful! Notice algorithm doesn't suggest to do 2 dodges instead of the leap, because the probability of success is lower. If probability of dodge is equal to the probability of leap, then dodge is selected - because it's interesting to keep the leap for later!

Examples:

If selected player wants to go one square right, leap is suggested (to avoid to dodge in a square where 2 opposites players have a tackle area)

However, on the upper square, it is better to dodge (square is yellow = classical move and here with dodge)!

In this last example, dodge is done although leap has the same probability (because player has skill 'Very Long Legs'). But if user really wants to leap, he still can do it - by pressing the 'Leap' button.

And what about the AI? This is cool: as the path finding algorithm is already used by the AI for each move, nothing has to be done! For every action AI will take 'Leap' possibility into account: for moving, for moving then pass, for moving then foul, for blitz and so on!

This implementation and many other fixes will be available in v0.5. - coming soo... euh no, not any idea of when it will be available, I still have some tasks to finish 💀!

Current last version is still this one.














Thursday, 25 August 2022

Drefsante_AI_v.0.4 won 'BotBowl IV' Competition!

Let's celebrate the title! 💪

Bot Bowl IV is the fourth AI competition in Blood Bowl and happened (virtually) at the IEEE Conference of Games 2022 - see this link for more information.

Here is the final ranking:

And a video about the result: here!

Don't have yet time to look in details at the results. And let's be honest, number of playing games during the competition is wayyyyy to low to be significant enough to see which AI/Bot is the better, but anyway the win for this year is for Drefsante_AI!

Only 'Human' team versus 'Human' team games. A competition with all teams would be better for my AI as it's taking all skills into account which is probably not the case of other bots. Except 'Leap'  which has been implemented only in v.0.5 - article about this will come soon.

Thanks to Niels Justesen for the tournament and to all those that have implemented the 'Bot Bowl' interface which is quite nice.

Last available version of Dresante_AI is still the v.0.4 - see this article

Sunday, 3 July 2022

v.0.4 is Released!

New version 0.4 available here - add comment if cannot be downloaded.

See this article to know how to install it. Practically, just unzip and type in a command prompt: java -jar bloodbowl-0.4.jar. Should be easy 😀

! Only bloodbowl-0.4.jar file is needed, all other files are used only for 'Bot Bowl' interface - see below.

To summarize: to be honest, I didn't work a lot on this project this year, and most of differences with 0.3 have been implemented end of last year and are mainly bug corrections. Notice that Skill 'Throw Team-Mate' (and all related skills) has been implemented (see details). Skill 'Bombardier' is also implemented - but AI will not yet used it. But if you throw bomb on an AI he will perfectly deal it. See this video:


Rules are still LRB6 rules, and only missing skill is 'Leap'!

Version contains also some fine UI improvements - like lots of tool tips about rules have been added.

And last minute dev (which means with lots of bugs and badly tested 😋), when creating a new tournament you can now load some (or all) teams of a previous tournament:

- Select old tournament you have saved;

- Click on Load Teams. This will add new teams and you can remove some of them, and eventually change coach (from AI to Human for example):

To those teams, you can still add new random team(s) or team of your choice. This will allow you to create different leagues, divisions, promoting teams to higher division, etc! Just save each tournament with meaningful name.

'Bot Bowl' AI is also available

A python interface has been developed to be able to use Drefsante_AI in Bot Bowl: see this project to know more about 'Bot Bowl'.

You simply need bloodbowl-0.4.jar and the python files drefsante_bot.py and drefsante_bot.cfg.

JAVA jdk-11 must be installed on the machine and system PATH must contain full path to:

- [...]/jdk/bin

- [...]/jdk/bin/server

Configuration file 'drefsante_bot.cfg' must be edited with parameters:

temporaryFolder = path to an existing folder where files can be created/deleted

jarPathName = path to the .jar file

See njustesen project to know how to use a bot. Practically you will have to import drefsante_bot, and name of the bot is 'Drefsante_AI_v.0.4'.

This version will participate to the Bot Bowl IV competition! Notice this version is much slower and all skills are not yet working.

Print screen of 'drefsante_ai' about to score against 'scripted' version of Bot Bowl - although team has been seriously injured!

Final change log:

Version 0.4

Still requires Java 11.

Rules Implementation

- Add skill 'Throw Team-Mate';

- Add skill 'Right Stuff';

- Add skill 'Always Hungry';

- Add skill 'Bombardier';

Bug correction

- Correct bug at kick-off where it was possible to give ball to a player with No-Hands skill if ball went out of pitch;

- Correct bad implementation of 'Really Stupid' skill;

- Correct bug for 'PassBlock' when used by AI;

- Bug where AI can have more than 16 players and didn't fire any player;

- Can happen that after failed blood lust, it is not asked to select a victim to bite - for example after block against player with 'Foul Appearance' skill;

- Was not possible to use 'Bribe' coming from 'Get the Ref' kick-off table;

- Bug when more than 16 players in one team (due to Necromancer who uses 'Raise the Dead');

- One bounce was missing when launching ball on an empty square (if pass was accurate);

- If a player was 'stunned' and suffered a 'knock-down' result (foul action for example), 'stunned' status was lost;

- Correct a bad error message if a collapsed player was set on pitch at kick-off;

- We can now use several bribes (if we have several) successively if first attempt(s) is (are) failing;

- 'Follow' Move is now done before setting defender knock down;

- When an injury was removed (apothecary or regeneration), player was still missing next match;

- Correct rare crash when ball&chain player on the pitch;

- Was not possible to rise up player with root activated;

- Take root roll could be done although player had root activated;

- Injured player with 'Secret Weapon' was not missing next game and injury was never removed;

- For Injury roll > 51, there were some errors in the injury obtained;

- Regeneration after Decay was not always healing both injuries;

- It was possible to use Igor on 'Star player';

- Players of the receiving team that were stunned during kickoff event (pitch invasion, blitz, etc) were not switched to prone with move done

 (so these players were missing 2 turns instead of one);

- Now if a player wants to stand up with MA lower than 3, a roll of 4 is needed;

- During Blizzard it was possible to do pass longer than SHORT;

AI improvements

- AI can use all new skills implemented in the version, except 'Bombardier' he will not yet used. But if he receives a bomb, he will throw it;

- Minor changes in skill selection;

- Improvements in move of player that will assist a block/blitz;

- Add new possible starting roster for 'Chaos', 'Chaos Dwarf', 'Elf', 'Goblin', 'Halfling', 'High Elf', 'Human', 'Khemri', 'Lizardman', 'Necromantic', 'Norse', 'Nurgle', 'Ogre', 'Orc', 'Skaven', 'Undead', 'Vampire', 'Wood Elf';

- Ball carrier was sometimes going back too fast if he cannot score before end of game (not good because it makes pass/hand-off in order to score more difficult);

- AI was still sometimes moving on a ball when not explicitly wished;

- Correct big error in probability to move where number of tackles at destination was not taken into account;

UI improvements

- Some checks are done before to create new tournament (like no team with same name, etc);

- Nothing was visible in the interface if a player uses 'DivingTackle';

- Apothecary icon is now not visible if he has been used during game;

- New information is available for each team (Team Value, FAME, inducements, etc.);

- Team logo is visible only if team can re-roll this turn;

- Add lots of tool tips (notably for skills);

- In player information window, skill is strikethrough if skill cannot be used anymore for the player;

- Status 'Collapsed From Heat' is now visible in the player information panel;

- Ball&chain: after first move, blue block dices were not visible;

- Icon visible when a player is victim of 'Foul Action';

- 'Move' value of a player with 'root' activated is now equal to 0 (so we see ;

- When creating new tournament, it is now possible to load teams from previous saved tournaments;

- Correct some problems when renaming a team;

- Pass issue: problem of display of players that can intercept;