Streamlining turn control rules
Moderator: TFF Mods
- Loki
- Legend
- Posts: 2583
- Joined: Thu May 26, 2005 10:10 am
- Location: Bristol, UK
Re: Streamlining turn control rules
One context I don't see covered is when I don't want to take a push/defender stumbles/bothdown but crowdsurf with a frenzy player to ensure player advantage - could a auto-decision on "is block in column 2/14 + does Blocker have Frenzy" be implemented?
Reason: ''
- GalakStarscraper
- Godfather of Blood Bowl
- Posts: 15882
- Joined: Tue Jun 26, 2001 12:00 am
- Location: Indiana, USA
- Contact:
Re: Streamlining turn control rules
I wrote that automated Side Step for PBeM ... pretty sure I remember most of the order of operation. You step through the 5 steps in order and pick the first one that applies.Darkson wrote:I know the PBeM tool has Side Step automated, and (in my experience) most of the time it chooses a sensible square, but I don't recall the logic it used, or where it was discussed.
1) If you can sidestep next to the ball on the ground, then do so.
2) If you are holding the ball, and there is a square with no tackle zone in it that is closer to the end zone, go there.
3) If there is a square with no tackle zones on it, pick that. (in case of ties, pick the one closest to the end zone)
4) If there is a square with only tackle zones on it for players that have already used their action this turn, go there.
5) If not 1 through 4, pick the square with the fewest tackle zones on it. 1st sort is number of opposing players next to the square that have actions left (with the lowest number being most preferred).
For ties on any step, pick the available square that is the closest to the ball. Otherwise, random.
Reason: ''
- GJK
- Experienced
- Posts: 91
- Joined: Sun Jul 13, 2014 2:33 pm
- Location: Texas
Re: Streamlining turn control rules
Can that be overridden? What if the program has me side step to a spot other than the one that I wanted?
Reason: ''
"Fat, drunk, and stupid is no way to go through life, son."
-Dean Vernon Wormer
-Dean Vernon Wormer
- VoodooMike
- Emerging Star
- Posts: 434
- Joined: Thu Oct 07, 2010 8:03 am
Re: Streamlining turn control rules
If you mean as a defender you don't want to be pushed into the crowd, I can certainly see the logic being set to take defender/both down when the alternative is being pushed into the crowd. I can even see making the sidestep logic take into account being pushed into position where, on a subsequent block, it might be pushed into the crowd, too... and make it choose a square that will have other push options in that case, too.Loki wrote:One context I don't see covered is when I don't want to take a push/defender stumbles/bothdown but crowdsurf with a frenzy player to ensure player advantage - could a auto-decision on "is block in column 2/14 + does Blocker have Frenzy" be implemented?
So yes, that's a good point.
This seems pretty reasonable. Did you find that it worked out well enough, as Darkson did? The PBEM's methods have been played extensively, so if that has enjoyed success there I'll defer to that logic in my implementation.GalakStarscraper wrote:1) If you can sidestep next to the ball on the ground, then do so.
2) If you are holding the ball, and there is a square with no tackle zone in it that is closer to the end zone, go there.
3) If there is a square with no tackle zones on it, pick that. (in case of ties, pick the one closest to the end zone)
4) If there is a square with only tackle zones on it for players that have already used their action this turn, go there.
5) If not 1 through 4, pick the square with the fewest tackle zones on it. 1st sort is number of opposing players next to the square that have actions left (with the lowest number being most preferred).
For ties on any step, pick the available square that is the closest to the ball. Otherwise, random.
One clarification - when you say "closer to the endzone" do you mean the opponent's?
No. The goal is to have strict and exclusive control of the game belong to the player whose turn it is, so that there are no interruptions of control during any player's turn. If the game logic chooses a different square than you would have chosen in a perfect world then you deal with that.GJK wrote:Can that be overridden? What if the program has me side step to a spot other than the one that I wanted?
In the implementation's environment everyone will be playing by the same rules, so it will even itself out in the long run. People are typically very resistant to ideas that aren't implemented yet, but very good at adapting to things once they are in place.
Reason: ''
- GalakStarscraper
- Godfather of Blood Bowl
- Posts: 15882
- Joined: Tue Jun 26, 2001 12:00 am
- Location: Indiana, USA
- Contact:
Re: Streamlining turn control rules
Closer to the endzone means closer to the endzone that you would score in.VoodooMike wrote:This seems pretty reasonable. Did you find that it worked out well enough, as Darkson did? The PBEM's methods have been played extensively, so if that has enjoyed success there I'll defer to that logic in my implementation.GalakStarscraper wrote:1) If you can sidestep next to the ball on the ground, then do so.
2) If you are holding the ball, and there is a square with no tackle zone in it that is closer to the end zone, go there.
3) If there is a square with no tackle zones on it, pick that. (in case of ties, pick the one closest to the end zone)
4) If there is a square with only tackle zones on it for players that have already used their action this turn, go there.
5) If not 1 through 4, pick the square with the fewest tackle zones on it. 1st sort is number of opposing players next to the square that have actions left (with the lowest number being most preferred).
For ties on any step, pick the available square that is the closest to the ball. Otherwise, random.
One clarification - when you say "closer to the endzone" do you mean the opponent's?
I played several Side Step teams in PBeM leagues and very very rarely found that it picked a square that I would not have picked myself with that tiered logic. (just realized looking it back over that steps 2 and 3 are the same ... sorry). The one item I missed was that if the player was holding the ball and there was a tie in any step than if a square was closer to the scoring endzone it was picked.
I also automated the interception roll. If I remember correctly that one was pretty straightforward.
1) Pick the player with the best roll
2) In case of ties for #1, pick the player not in any opposing Tackle zones
3) In case of ties for #2, pick the player closest to the end zone he would score in
4) Random if ties still at #3
This system has worked just fine for PBeM as well and never had any compliants that I recall.
And I agree with you on this VM ... the players just need to consider it a house rule of the system. Because I wrote most of the rules code in the PBeM tool ... PLEASE feel free to pick my brain on anything that comes up. The PBeM tool is unfortunately dying. The SQL systems that keep track of the leagues are getting out of date for their coding the the tool itself cannot be updated as it was written in a version of Delphi that Windows no longer supports (and Delphi is just not a code language sitting on too many machines to being with). So I would be happy to pass the baton off to what comes next. In fact ... if it would help ... I will send you the source code for the PBeM program which was last updated in 2005. It is pretty well documented and you could then copy the logic over for things like Side Step and modify them.
Tom
Reason: ''
- GalakStarscraper
- Godfather of Blood Bowl
- Posts: 15882
- Joined: Tue Jun 26, 2001 12:00 am
- Location: Indiana, USA
- Contact:
Re: Streamlining turn control rules
Found the code for the program ... here was the code for automatic picking of Side Step.
Code: Select all
for g := 0 to 7 do begin
SquarePoints[g] := 0;
end;
counter := -1;
for q := -1 to 1 do begin
for r := -1 to 1 do begin
NewP2 := pplace + q;
NewQ2 := qplace + r;
PlayerHere := false;
for g := 0 to 1 do begin
for f := 1 to team[g].numplayers do begin
if (player[g,f].p = NewP2) and (player[g,f].q = NewQ2) then
PlayerHere := true;
end;
end;
if (NewP2<0) or (NewP2>14) or (NewQ2<0) or (NewQ2>25) then
PlayerHere := true;
if PlayerHere then begin
{skip testing}
end else begin
counter := counter + 1;
PDir[counter] := q;
QDir[counter] := r;
NotMovedBadTZ := 0;
FriendTZ := 0;
BadTZ := 0;
BallFlag := false;
SquarePoints[counter] := Rnd(99,6)+1;
for v := -1 to 1 do begin
for w := -1 to 1 do begin
NewP := pplace + q + v;
NewQ := qplace + r + w;
if (NewP=pplace) and (NewQ=qplace) then begin
{skip testing}
end else begin
for g := 0 to 1 do begin
for f := 1 to team[g].numplayers do begin
if (player[g,f].p=NewP) and (player[g,f].q=NewQ) then begin
if (ActionTeam <> g) and not((g=HitTeam) and (f=HitPlayer))
then BadTZ := BadTZ + 1;
if (ActionTeam <> g) and (player[g,f].font.size = 12)
and not((g=HitTeam) and (f=HitPlayer))
then NotMovedBadTZ := NotMovedBadTZ + 1;
if ActionTeam = g then FriendTZ := FriendTZ + 1;
end;
end;
end;
if (ballspotp=NewP) and (ballspotq=NewQ) and not(BallFlag)
and not((ballspotp=NewP2) and (ballspotq=NewQ2))
then begin
SquarePoints[counter] := SquarePoints[counter]+30000;
BallFlag := true;
end;
end;
end;
end;
if (NewP2=ballspotp) and (NewQ2=ballspotq) then
SquarePoints[counter] := SquarePoints[counter]+20000;
if ActionTeam=0 then DtoEndZone := 25-NewQ2 else DtoEndZone := NewQ2;
if abs(NewP2-ballspotp) >= abs(NewQ2-ballspotq) then
DtoBall := abs(NewP2-ballspotp) else DtoBall := abs(NewQ2-ballspotq);
DtoEndZone := 26 - DtoEndZone;
DtoBall := 26 - DtoBall;
if SStype = 1 then begin
SquarePoints[counter] := SquarePoints[counter] +
((8-NotMovedBadTZ)*10000);
SquarePoints[counter] := SquarePoints[counter] +
((DtoEndZone + FriendTZ + (8-BadTZ))*100);
if DtoEndZone = 26 then SquarePoints[counter] :=
SquarePoints[counter] + 80000;
end else begin
SquarePoints[counter] := SquarePoints[counter] +
((8-NotMovedBadTZ)*10000);
SquarePoints[counter] := SquarePoints[counter] +
((DtoBall + FriendTZ + (8-BadTZ))*100);
end;
end;
end;
end;
Winner := 0;
for g := 0 to 7 do begin
if SquarePoints[g] > SquarePoints[Winner] then Winner := g;
end;
if SquarePoints[Winner]=0 then begin
Bloodbowl.comment.text := 'Side Step Player is not moved';
Bloodbowl.EnterButtonClick(Bloodbowl.EnterButton);
Bloodbowl.Loglabel.caption :=
'All squares blocked, Side Step Player is not moved!';
end else begin
BallScat := false;
FinalP := pplace + PDir[Winner];
FinalQ := qplace + QDir[Winner];
if (FinalP=ballspotp) and (FinalQ=ballspotq) then BallScat := true;
SideStepStop := false;
PlacePlayer(ActionPlayer, ActionTeam, FinalP, FinalQ);
Bloodbowl.comment.text := 'Side Step skill used for pushback - '
+ 'PBeM Tool picked square';
Bloodbowl.EnterButtonClick(Bloodbowl.EnterButton);
if BallScat then ScatterBallFrom(FinalP, FinalQ, 1, 0);
end;
end;
Reason: ''
- Darkson
- Da Spammer
- Posts: 24047
- Joined: Mon Aug 12, 2002 9:04 pm
- Location: The frozen ruins of Felstad
- Contact:
Re: Streamlining turn control rules
Rolo did bring up pre-selection for PBeM. If I recall it correctly, you could, after your turn but before you sent it to your opponent, pre-select 1 or 2 squares where you'd prefer to be pushed which the tool would default to (assuming they weren't already being used by a player).
Not sure whether you implement something similar, at least for use with the PBeM game?
Not sure whether you implement something similar, at least for use with the PBeM game?
Reason: ''
Currently an ex-Blood Bowl coach, most likely to be found dying to Armoured Skeletons in the frozen ruins of Felstad, or bleeding into the arena sands of Rome or burning rubber for Mars' entertainment.
- GalakStarscraper
- Godfather of Blood Bowl
- Posts: 15882
- Joined: Tue Jun 26, 2001 12:00 am
- Location: Indiana, USA
- Contact:
Re: Streamlining turn control rules
I did see that in the code where it would check to see if any of the preselected squares were available first before it went into the testing for which square to go to.Darkson wrote:Rolo did bring up pre-selection for PBeM. If I recall it correctly, you could, after your turn but before you sent it to your opponent, pre-select 1 or 2 squares where you'd prefer to be pushed which the tool would default to (assuming they weren't already being used by a player).
Not sure whether you implement something similar, at least for use with the PBeM game?
Reason: ''
- VoodooMike
- Emerging Star
- Posts: 434
- Joined: Thu Oct 07, 2010 8:03 am
Re: Streamlining turn control rules
I've rarely used the skill, myself, and I just realized that my original default rules were based on the normal 3 square option while side step allows for the choice of any adjacent square. Given that you guys played many games using the algorithm you specified and no heads exploded I'd say the best idea is to stick with it rather than re-invent the wheel. I'm actually pretty stoked that this is a problem that someone already solved!GalakStarscraper wrote:I played several Side Step teams in PBeM leagues and very very rarely found that it picked a square that I would not have picked myself with that tiered logic. (just realized looking it back over that steps 2 and 3 are the same ... sorry). The one item I missed was that if the player was holding the ball and there was a tie in any step than if a square was closer to the scoring endzone it was picked.

That seems to support what Vanguard was suggesting. I like this method as it's not only a tested method, but has less player-facing complexity than a per-player toggle.GalakStarscraper wrote:I also automated the interception roll. If I remember correctly that one was pretty straightforward.
1) Pick the player with the best roll
2) In case of ties for #1, pick the player not in any opposing Tackle zones
3) In case of ties for #2, pick the player closest to the end zone he would score in
4) Random if ties still at #3
I will absolutely do so. I'm relieved that the existing PBEM tool took this approach as it's much easier to follow a pre-blazed path, and these automated rules were the one thing I was most ambivalent about.GalakStarscraper wrote:Because I wrote most of the rules code in the PBeM tool ... PLEASE feel free to pick my brain on anything that comes up.
Delphi 7 still works under Windows 10 even if the OS warns you otherwise - I have D7 and DXE7 on this machine (10 versions apart though their names don't show it) - but it's true, very few people (especially in the english-speaking world) use delphi. Pretty popular in russia and the former yugoslavian countries, though, for all the good that does anyone.GalakStarscraper wrote:The PBeM tool is unfortunately dying. The SQL systems that keep track of the leagues are getting out of date for their coding the the tool itself cannot be updated as it was written in a version of Delphi that Windows no longer supports (and Delphi is just not a code language sitting on too many machines to being with).
If you guys automated all the skills then that'd be great. I'm also quite experienced with Delphi, so understanding the code shouldn't be an issue.GalakStarscraper wrote:In fact ... if it would help ... I will send you the source code for the PBeM program which was last updated in 2005. It is pretty well documented and you could then copy the logic over for things like Side Step and modify them.
Did that function get used much? I mean, almost anything CAN be implemented, it's just a question of value vs. complexity. I know people always feel more options are better, but in terms of user experience... for anything but expert users you want to limit the options to prevent people from being overwhelmed. If its a function that got used by PBEM players enough that they'd miss it then optionally setting a preferred sidestep square to use during your own turn wouldn't be too bad to add.Darkson wrote:If I recall it correctly, you could, after your turn but before you sent it to your opponent, pre-select 1 or 2 squares where you'd prefer to be pushed which the tool would default to (assuming they weren't already being used by a player).
Not sure whether you implement something similar, at least for use with the PBeM game?
I'm hoping to have things be consistent regardless of whether the game is being played realtime or otherwise. Optimally it will allow for both types of play in the same league, or even to go between the types of play during the same match (eg, if someone has to stop playing realtime, but wants to finish the match, you can both switch to staggered turn play... or return to realtime play if you're both available for it at a later time).
Reason: ''
-
- Legend
- Posts: 5334
- Joined: Sun May 05, 2002 8:55 am
- Location: Copenhagen
- Contact:
Re: Streamlining turn control rules
Hi all,
I play a small'ish pbem league (36 teams) and have played pbem for years.
A few comments:
Galaks pbem client still works, even though the site died. The league lives on
Interceptions - in the vast majority of cases, interceptions should be done with the player with the best chance. Only worthwhile exception might be to use someone who could reach the EZ on next turn.... Or maybe not.
Sidestep: Galaks client has on option to pre-choose the square and it does get used.
AFAIK the client doesn't discern between a sidestepper who was knocked down and one that is still standing. That can make a huge difference to the step.
Personally, for many skills I wouldn't mind if there were no toggle option. It would be slightly different tactics, but not really worse. Like a Dodge player getting pushed closer and closer to the edge. Or a sidestepper/stand firmer who can gain an advantage by not using the skill. Would be simpler if skills were just on - except for a few notable exceptions (like PiOn, Shadowing and Dump Off)
Good luck with it
Martin
I play a small'ish pbem league (36 teams) and have played pbem for years.
A few comments:
Galaks pbem client still works, even though the site died. The league lives on

Interceptions - in the vast majority of cases, interceptions should be done with the player with the best chance. Only worthwhile exception might be to use someone who could reach the EZ on next turn.... Or maybe not.
Sidestep: Galaks client has on option to pre-choose the square and it does get used.
AFAIK the client doesn't discern between a sidestepper who was knocked down and one that is still standing. That can make a huge difference to the step.
Personally, for many skills I wouldn't mind if there were no toggle option. It would be slightly different tactics, but not really worse. Like a Dodge player getting pushed closer and closer to the edge. Or a sidestepper/stand firmer who can gain an advantage by not using the skill. Would be simpler if skills were just on - except for a few notable exceptions (like PiOn, Shadowing and Dump Off)
Good luck with it
Martin
Reason: ''
Narrow Tier BB? http://www.plasmoids.dk/bbowl/NTBB.htm
Or just visit http://www.plasmoids.dk instead
Or just visit http://www.plasmoids.dk instead
- Darkson
- Da Spammer
- Posts: 24047
- Joined: Mon Aug 12, 2002 9:04 pm
- Location: The frozen ruins of Felstad
- Contact:
Re: Streamlining turn control rules
I can only comment on my matches, and the ones I checked for league admin, but I mainly did set a preference #1 - sometimes the tool would have picked that one, sometimes it wouldn't.VoodooMike wrote:Did that function get used much? I mean, almost anything CAN be implemented, it's just a question of value vs. complexity. I know people always feel more options are better, but in terms of user experience... for anything but expert users you want to limit the options to prevent people from being overwhelmed. If its a function that got used by PBEM players enough that they'd miss it then optionally setting a preferred sidestep square to use during your own turn wouldn't be too bad to add.
Reason: ''
Currently an ex-Blood Bowl coach, most likely to be found dying to Armoured Skeletons in the frozen ruins of Felstad, or bleeding into the arena sands of Rome or burning rubber for Mars' entertainment.
- rolo
- Super Star
- Posts: 1188
- Joined: Wed May 27, 2015 9:38 am
- Location: Paradise Stadium, where the pitch is green and the cheerleaders are pretty.
Re: Streamlining turn control rules
I do use Sidestep a lot (Play Pro Elves and Dark Elves in a league, and generally speaking it's my second favorite Agility skill).GalakStarscraper wrote:1) If you can sidestep next to the ball on the ground, then do so.
2) If you are holding the ball, and there is a square with no tackle zone in it that is closer to the end zone, go there.
3) If there is a square with no tackle zones on it, pick that. (in case of ties, pick the one closest to the end zone)
4) If there is a square with only tackle zones on it for players that have already used their action this turn, go there.
5) If not 1 through 4, pick the square with the fewest tackle zones on it. 1st sort is number of opposing players next to the square that have actions left (with the lowest number being most preferred).
For ties on any step, pick the available square that is the closest to the ball. Otherwise, random.
I'd add two steps between your steps 2 and 3:
2.1) If you are next to an opposing ball carrier, and can sidestep to another square next to the ball carrier, do so. Ties to go whichever square has the fewest still-active opposing players.
2.2) If you are on offense and screening your ball carrier (meaning that there are no paths from opposing players to your ball carrier without making dodge rolls), and there exists a destination square which maintains the screen, move to that square.
The second step might be more trouble to implement than it's worth, but it's one of my favorite uses of Sidestep and incredibly irritating for a defense to deal with.
Reason: ''
"It's 2+ and I have a reroll. Chill out. I've got this!"

- GalakStarscraper
- Godfather of Blood Bowl
- Posts: 15882
- Joined: Tue Jun 26, 2001 12:00 am
- Location: Indiana, USA
- Contact:
Re: Streamlining turn control rules
Rolo ... you are right ... step 1 should not say ball on the ground ... it should just say ball. My error from typing it from memory.
VM ... email me at impactminiatures@gmail.com. I have the PBeM code fully zipped up and will get it sent to you. It cannot hurt for you to have it to look up things.
VM ... email me at impactminiatures@gmail.com. I have the PBeM code fully zipped up and will get it sent to you. It cannot hurt for you to have it to look up things.
Reason: ''