Tag Archives: hurling

Hurling Simulation Update and Great Game

After running a plenty of simulation and tweaking numbers I am quite happy with the outputs that the engine generates now. I have moved from generic tests to making some actual teams based on the county teams. The way teams are read into the program has been altered. Now there are two files, one which holds the full roster/panel for a team and the other which names the team to actually play the game. The former holds the ratings for each player and eventually stats when they get stored. The latter simply states the number, position and name of the player with the tactic and free taker at the top.
Sample roster and teamsheet
Eoin Murphy,18,1,1,1
Paul Murphy,1,17,2,2
JJ Delaney,1,19,3,1
Jackie Tyrrell,1,18,3,2

L
12
1,GK,Eoin Murphy
2,FB,Paul Murphy
3,FB,JJ Delaney
4,FB,Jackie Tyrrell

Two changes to the calculations behind the scenes were the addition of Home Bonus and greater emphasis on passing. In most sports there is some home field advantage and this is no different. The first team is designated as the Home team and they get a bonus to their total probability of having an event. The passing is based on the midfield stat of players. It was always factored into the total but now the total takes in double the midfield rating. This is to factor in that a better midfield and passing team would have more possession of the ball. This change has improved numbers a lot I feel and makes sense logically too.

Below I have pasted in a game I simulated today for the Hurling League Final between Kilkenny and Tipperary. It turned into a great game and shows off what a full game simulated is like.

MIN 0) Michael Fennelly finds himself unmarked and slots the ball between the posts.
0-1 TO 0-0
MIN 1) Eoin Murphy misses the catch but Cillian Buckley helps him out and scores a point from the loose ball.
0-2 TO 0-0
MIN 2) Cillian Buckley finds himself unmarked and slots the ball between the posts.
0-3 TO 0-0
MIN 5) Cillian Buckley is dragged down and Eoin Larkin converts the free.
0-4 TO 0-0
MIN 6) Noel McGrath finds himself unmarked and slots the ball between the posts.
0-4 TO 0-1
MIN) 9 Shane McGrath is about to shoot but JJ Delaney gets in the way and makes the block.
MIN) 12 JJ Delaney makes a great block stopping a sure point.
MIN 14) The ball is sent over the bar by Lar Corbett.
0-4 TO 0-2
MIN) 17 Aidan Fogarty is about to shoot but Paul Curran gets in the way and makes the block.
MIN 18) Seamus Callanan finds himself unmarked and slots the ball between the posts.
0-4 TO 0-3
MIN 19) Cillian Buckley catches the pass from Jackie Tyrrell, gets past his man and adds another point.
0-5 TO 0-3
MIN 21) Richie Hogan catches the pass from Colin Fennelly, gets past his man and adds another point.
0-6 TO 0-3
MIN 22) A good passing move ends with Lar Corbett and he scores a point for the team.
0-6 TO 0-4
MIN 23) And its a point from Cillian Buckley.
0-7 TO 0-4
MIN 24) Richie Hogan takes his point.
0-8 TO 0-4
MIN 25) Eoin Kelly scores a free from a tough angle.
0-8 TO 0-5
MIN 26) The loose ball is picked up by Shane McGrath who picks out Lar Corbett and its stuck over the bar.
0-8 TO 0-6
MIN 27) Richie Hogan makes a great catch and scores a point on the turn.
0-9 TO 0-6
MIN 32) A good passing move ends with Patrick Maher and he scores a point for the team.
0-9 TO 0-7
MIN 34) Michael Fennelly took a nasty blow across his arm but Eoin Larkin scores the free.
0-10 TO 0-7
HALF TIME SCORE: 0-10 TO 0-7
MIN 37) The loose ball is picked up by Conor O'Mahony who picks out Noel McGrath and its stuck over the bar.
0-10 TO 0-8
MIN 38) A loose sliotar is picked up by Shane Bourke and he puts it over the bar.
0-10 TO 0-9
MIN 39) The loose ball is picked up by Seamus Callanan who picks out Shane Bourke and its stuck over the bar.
0-10 TO 0-10
MIN) 41 A close call but Brendan Maher clears the ball away.
MIN 43) A soft free is given by the ref and Eoin Kelly scores it.
0-10 TO 0-11
MIN 44) The ref blows his whistle and Eoin Kelly scores the free from the 65.
0-10 TO 0-12
MIN 45) Conor O'Brien won the ball from his man and set up Shane Bourke for the good score.
0-10 TO 0-13
MIN 46) Lester Ryan won the ball from his man and set up Michael Fennelly for the good score.
0-11 TO 0-13
MIN 48) A soft free is given by the ref and Eoin Larkin scores it.
0-12 TO 0-13
MIN 49) Eoin Larkin makes a great catch and scores a point on the turn.
0-13 TO 0-13
MIN 50) A good passing move ends with Colin Fennelly and he scores a point for the team.
0-14 TO 0-13
MIN) 52 A clearance is caught by JJ Delaney and he sends it right back.
MIN 54) Brendan Maher passes the ball to Lar Corbett and its hit between the posts.
0-14 TO 0-14
MIN 55) Michael Rice takes his point and the goals will come.
0-15 TO 0-14
MIN 56) A soft free is given by the ref and Eoin Kelly scores it.
0-15 TO 0-15
MIN 60) Somehow Lester Ryan comes out with the ball and scores a nice point.
0-16 TO 0-15
MIN 62) A good passing move ends with Brendan Maher and he scores a point for the team.
0-16 TO 0-16
MIN 63) Patrick Maher makes a great catch and scores a point on the turn.
0-16 TO 0-17
MIN 64) The loose ball is picked up by Padriac Maher who picks out Seamus Callanan and its stuck over the bar.
0-16 TO 0-18
MIN 65) Paul Murphy passes the ball to Cillian Buckley and its hit between the posts.
0-17 TO 0-18
MIN) 66 A clearance is caught by Cillian Buckley and he sends it right back.
MIN 67) Darren Gleeson hits the ball to the unmarked Noel McGrath on the sideline, who sends it over the bar.
0-17 TO 0-19
MIN 70) The ball is picked up by the sideline by Michael Rice he solos past two men and hits it past the goalie.
1-17 TO 0-19
FINAL SCORE: 1-17 TO 0-19
kilkenny
1 Eoin Murphy: 0-0
2 Paul Murphy: 0-0
3 JJ Delaney: 0-0
4 Jackie Tyrrell: 0-0
5 Tommy Walsh: 0-0
6 Brian Hogan: 0-0
7 Kieran Joyce: 0-0
8 Lester Ryan: 0-1
9 Michael Fennelly: 0-2
10 Cillian Buckley: 0-5
11 Michael Rice: 1-1
12 Eoin Larkin: 0-4
13 Colin Fennelly: 0-1
14 Richie Hogan: 0-3
15 Aidan Fogarty: 0-0
tipp
1 Darren Gleeson: 0-0
2 Michael Cahill: 0-0
3 Conor O'Mahony: 0-0
4 Paul Curran: 0-0
5 Kieran Bergin: 0-0
6 Padriac Maher: 0-0
7 Conor O'Brien: 0-0
8 Brendan Maher: 0-1
9 Shane McGrath: 0-0
10 Eoin Kelly: 0-4
11 Lar Corbett: 0-4
12 Patrick Maher: 0-2
13 Shane Bourke: 0-3
14 Seamus Callanan: 0-2
15 Noel McGrath: 0-3

Tagged , , ,

Hurling and Update

Hurling

I realised after my two posts so far about my match engine that a lot of people are unaware of what hurling is. Unless you are from Ireland you probably dont know what it is. Well its a sport that comes from Ireland and is probably one of the oldest sports in the world. Its a field sport of two teams each with 15 players. You win by outscoring your opponent. Scoring is done by putting the ball over the goals but between the two side posts which is one point or into the goals which is a goal but considered 3 points. The game is played with a wooden stick and small ball. You control the ball and hit the ball using the stick. You can also hold the ball in your hand but for a limited amount of time.

There is one goalie on each team and then every other player matches up to an opponent and you mark him for the match (or until some change happens). There are 6 defenders, two midfielders and 6 forwards. Tackling is done by shouldering your opponent or sticking your hurley in the way to knock the ball loose. Its a very physical sport and a very fast sport. A match is made up of two halves each 30 or 35 minutes long. A team can use three subs in a match to replace players on the field already. The field is quite long at 135-145m.

Thats a quick overview of the sport and I encourage you to find out more or watch videos if you are interested as it is one of the best sports in the world. I may be biased but the amount of speed, skill, strength and everything that goes into the game makes it one of the most enjoyable to watch and play.

A small update on the engine now. I am currently running a lot of simulations with varying teams to try and see how the results are turning out. The numbers seem good enough so far but Ill continue to tweak them to try improve accuracy. I have written a small program that will read in reports and then output stats such as average goals, points, wins per team to csv files. These are very handy for checking the numbers.

Tagged , , ,

Hurling Simulation Engine Update

I have continued work on my Hurling match engine over the last few days and have made some good progress. I have added more factors in to affect the overall simulation of events in a match. A teams attack and opponents defence now play a factor into scoring points and goals. Teams can also perform defensive plays which are affected by their defence. A goalie gets factored into the goal probability now.

teamOneTotalProb = 1.8 + ((teamOneAtk - teamTwoDef)/100) + ((teamOneAtk - teamTwoDef - teamTwo.getGoalKeeper())/100) + (teamOneDef/1000)
+ teamOnePointMod + teamOneGoalMod + teamOneDefMod - (2 * teamTwoDefMod);
teamOnePoint = 0.8 + ((teamOneAtk - teamTwoDef)/100) + teamOnePointMod - teamTwoDefMod;
teamOneGoal = teamOnePoint + 0.04 + ((teamOneAtk - teamTwoDef - teamTwo.getGoalKeeper())/100) + teamOneGoalMod - teamTwoDefMod;
teamOneDefence = teamOneGoal + 0.2 + (teamOneDef/1000) + teamOneDefMod;

Another large addition is the use of tactics for a team. There are 5 tactics to choose from: Attacking, Defensive, Long Ball, Short passing or Take points. They are designated as a single character at the start of a teamsheet and read in with the players. Each tactic counters two and is countered by two so it creates a nice rock paper scissors strategy. The bonus for countering your opponent is an increase to the teams probability of having an “event”. Each tactic also has an effect on the team depending on the strategy. They are laid out below.

Tactic Counters Countered By Bonus Minus
Attacking Defensive, Take Points Short Pass, Long Ball points, goals defence
Defensive Long Ball, Short Pass Take Points, Attacking Defence Points, goals
Long Ball Attacking, Short Pass Defensive, Take Point Goals Points
Short Pass Attacking, Take Points Defensive, Long Ball Possession None
Take Points Defensive, Long Ball Attacking, Short Pass Points Goals

Frees have also been added in as a subset of scoring. Now after its calculate that it was a score it then checks whether that score was a free or not. A free is always scored by the designated free taker who is written on the teamsheet aswell under the tactic.

if(event < teamOnePoint)
					{
						int free = (int)(Math.random() * 4);

						if(free > 0)
						{
							p = teamOne.getPlayers().get(playerEvent(teamOne, 37, 71, 91, 99)).getName();
							comment = commentary.getPointCom(p, teamOne);
						}
						else
						{
							p = teamOne.getFreeTaker().getName();
							comment = commentary.getFreeCom(p, teamTwo);
						}

						pointsOne++;
						score = true;
					}

Commentary lines look like this before being read in. <name> is replace by the player performing the action and <other> is a relevant other player involved in the play.

 

<name> hits it past the goalie and into the back of the net.
<name> catches the ball, turns and scores a goal.
The ball is picked up by the sideline by <name> he solos past two men and hits it past the goalie.
The sliotar is rifled past the goalie by <name>.
The ball is fumbled by the goalie and <name> pulls on it.
A good ball into the corner to <name> leads to a good shot past the goalie.
The ball is caught by <other> and he lays it off to <name> who scores a goal.
A fast pull by <name> and its a goal.
<other> breaks the high ball for <name> who hits it past the keeper.
A lucky break falls to <name> and he finishes the goal.

Tagged , , ,

Hurling Simulation Engine

I have started on a new project to do in my spare time. Its based around two things I really enjoy, Hurling and sports simulation games. I have started writing an engine to simulate hurling matches and give out scores, stats and match reports. I started by looking at results over the last two years for matches to try get various stats such as goals per game and points per game. I then broke it into steps, first getting the right number of scores, then scores per team, then goals and points per team. Right now I am simulating results quite similar to real results.

The program takes in teamsheets from textfiles with the players listed in position. Each player has 4 ratings, goalie, defence, pass and attack, on a 1 to 20 scale. These determine how good each is in each position. Player abilities affect the overall team performance and the likelihood of each scoring. I am currently trying to alter the probabilities further so that the overall attacking skill affects the scores of a team as does the defence.

I also can read commentary in from textfiles and with some manipulation can output the action just performed. All these are put together and outputted to another file.

Sample Teamsheet
GK,GKA1,7,2,1,1
FB,FBA1,1,8,3,2
FB,FBA2,1,9,1,2
FB,FBA3,1,7,1,2
HB,HBA1,1,8,3,2
HB,HBA2,1,8,4,2
HB,HBA3,1,7,5,2
MF,MFA1,1,5,8,3
MF,MFA2,1,4,9,5
HF,HFA1,1,2,7,7
HF,HFA2,1,3,5,8
HF,HFA3,1,2,6,8
FF,FFA1,1,1,1,9
FF,FFA2,1,1,3,7
FF,FFA3,1,2,3,9

Sample Match Report

MIN) 0 The ball is sent over the bar by HFA1.
0-1 TO 0-0
MIN) 2 MFA1 picks up the sliotar and hits it over the bar.
0-2 TO 0-0
MIN) 7 WIDE
MIN) 9 The ball is sent over the bar by FFB2.
0-2 TO 0-1
MIN) 12 The ball is sent over the bar by MFB1.
0-2 TO 0-2
MIN) 13 FFB2 picks up the sliotar and hits it over the bar.
0-2 TO 0-3
MIN) 14 FFB3 catches the ball, turns and scores a goal.
0-2 TO 1-3
MIN) 17 MFA2 picks up the sliotar and hits it over the bar.
0-3 TO 1-3

 

Tagged , , ,