Streamlining turn control rules

Got some ideas for rules? Maybe a skill change or something completely different!!! Tell us here.

Moderator: TFF Mods

User avatar
Loki
Legend
Legend
Posts: 2553
Joined: Thu May 26, 2005 10:10 am
Location: Bristol, UK

Re: Streamlining turn control rules

Post by Loki »

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: ''
Time flies like an arrow, Fruit flies like a banana.
Image
User avatar
GalakStarscraper
Godfather of Blood Bowl
Posts: 15882
Joined: Tue Jun 26, 2001 12:00 am
Location: Indiana, USA
Contact:

Re: Streamlining turn control rules

Post by GalakStarscraper »

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.
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.

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: ''
Impact! - Fantasy Football miniatures and supplies designed by gamers for gamers
Image
User avatar
GJK
Experienced
Experienced
Posts: 91
Joined: Sun Jul 13, 2014 2:33 pm
Location: Texas

Re: Streamlining turn control rules

Post by GJK »

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
User avatar
VoodooMike
Emerging Star
Emerging Star
Posts: 434
Joined: Thu Oct 07, 2010 8:03 am

Re: Streamlining turn control rules

Post by VoodooMike »

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?
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.

So yes, that's a good point.
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.
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.

One clarification - when you say "closer to the endzone" do you mean the opponent's?
GJK wrote:Can that be overridden? What if the program has me side step to a spot other than the one that I wanted?
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.

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: ''
Image
User avatar
GalakStarscraper
Godfather of Blood Bowl
Posts: 15882
Joined: Tue Jun 26, 2001 12:00 am
Location: Indiana, USA
Contact:

Re: Streamlining turn control rules

Post by GalakStarscraper »

VoodooMike wrote:
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.
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.

One clarification - when you say "closer to the endzone" do you mean the opponent's?
Closer to the endzone means closer to the endzone that you would score in.

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: ''
Impact! - Fantasy Football miniatures and supplies designed by gamers for gamers
Image
User avatar
GalakStarscraper
Godfather of Blood Bowl
Posts: 15882
Joined: Tue Jun 26, 2001 12:00 am
Location: Indiana, USA
Contact:

Re: Streamlining turn control rules

Post by GalakStarscraper »

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: ''
Impact! - Fantasy Football miniatures and supplies designed by gamers for gamers
Image
User avatar
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

Post by Darkson »

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: ''
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.
User avatar
GalakStarscraper
Godfather of Blood Bowl
Posts: 15882
Joined: Tue Jun 26, 2001 12:00 am
Location: Indiana, USA
Contact:

Re: Streamlining turn control rules

Post by GalakStarscraper »

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?
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.

Reason: ''
Impact! - Fantasy Football miniatures and supplies designed by gamers for gamers
Image
User avatar
VoodooMike
Emerging Star
Emerging Star
Posts: 434
Joined: Thu Oct 07, 2010 8:03 am

Re: Streamlining turn control rules

Post by VoodooMike »

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.
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 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
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:Because I wrote most of the rules code in the PBeM tool ... PLEASE feel free to pick my brain on anything that comes up.
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: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).
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: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.
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.
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?
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.

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: ''
Image
plasmoid
Legend
Legend
Posts: 5334
Joined: Sun May 05, 2002 8:55 am
Location: Copenhagen
Contact:

Re: Streamlining turn control rules

Post by plasmoid »

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

Reason: ''
Narrow Tier BB? http://www.plasmoids.dk/bbowl/NTBB.htm
Or just visit http://www.plasmoids.dk instead
User avatar
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

Post by Darkson »

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.
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.

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.
User avatar
rolo
Super Star
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

Post by rolo »

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 do use Sidestep a lot (Play Pro Elves and Dark Elves in a league, and generally speaking it's my second favorite Agility skill).

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!"
Image
User avatar
GalakStarscraper
Godfather of Blood Bowl
Posts: 15882
Joined: Tue Jun 26, 2001 12:00 am
Location: Indiana, USA
Contact:

Re: Streamlining turn control rules

Post by GalakStarscraper »

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.

Reason: ''
Impact! - Fantasy Football miniatures and supplies designed by gamers for gamers
Image
Post Reply