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;