Table of Contents

Custom Play By Play

Digital Diamond Baseball allows the customization of the play by play messages shown in the message window during game play.  Customizing play by play is as simple as editing a text file!  The default play by play calls used by the game are located in the systemPBP.properties file located in the Properties folder. 

The recommended way to customize the play by play is to edit the userPBP.properties file located in the Properties folder.  Each line in the userPBP.properties file represents a particular event that can take place during the game, as well as the play-by-play text that will be used to describe that event. The text for each event can contain zero or more tokens that will be replaced during the game with current values. For example, the ~FIELDER1~ token will be replaced by the last name of the player that the ball was hit to.

A complete list of available tokens is given below:

  •  ~AWAYSCORE~ - number of runs scored by the away team.
  •  ~AWAYTEAM~ - name of the away team.
  •  ~BATTER~ - last name of the current batter.
  •  ~CATCHER~ - last name of the current catcher.
  •  ~CHANCE~ - odds out of 1000 that the event will take place.
  •  ~CONTACT~ - type of contact made (e.g., ground ball, pop-up).
  •  ~FIELDER1~ - last name of the fielder that the ball was hit to.
  •  ~FIELDER2~ - last name of the first fielder the ball will be thrown to to make a play.
  •  ~FIELDER3~ - last name of the final fielder the ball will be thrown to to make a play.
  •  ~FIRSTBASE~ - last name of the first baseman.
  •  ~GAMESTATS~ - game stats for the current batter (empty unless they have at least 1 AB).
  •  ~HOMESCORE~ - number of runs scored by the home team.
  •  ~HOMETEAM~ - name of the home team.
  •  ~INNING~ - current inning.
  •  ~LOCATION~ - location of a hit ball (e.g., left field, third base).
  •  ~NUMBEROFOUTS~ - current number of outs.
  •  ~PITCHER~ - last name of the current pitcher.
  •  ~ROLL~ - roll of the dice used to determine an outcome.
  •  ~RUNNER~ - runner that is is the subject of the current event.
  •  ~RUNNERONFIRST~ - runner that is on first base.
  •  ~RUNNERONSECOND~ - runner that is on second base.
  •  ~RUNNERONTHIRD~ - runner that is on third base.
  •  ~SEASONSTATS~ - season stats for the current batter (empty if game is unscheduled).
  •  ~TAB~ - inserts two spaces into the play-by-play text.
  •  ~VELOCITY~ - the speed of the hit ball (hard, medium, or soft).

For each play-by-play event you can specify how likely it should be that the play-by-play text is selected during game play. There are four options:

  • often
  • likely
  • unlikely
  • rarely

There is a 60% chance that text in the often category will be displayed; a 30% chance that text in the likely category will be displayed; a 7% chance that text in the unlikely category will be displayed, and a 3% chance that rare text will be displayed. You may have more than one play-by-play text specified in each likelihood category.  If you do, each text item in the category will be given the same opportunity to be chosen within  that category.

Each text item listed for a play-by-play event must end with a unique number. If two play-by-play text items share the same number within an event, the most recent item will override the previous items. You can take advantage of this feature to override a play-by-play text item in the systemPBP.properties file. The standard is to use a number > 100 for your own custom play-by-play text items, and a number < 100 when you want to override a system play-by-play call.

To create a new play-by-play text item, add a new line to the userPBP.properties file with the event name, followed by the likelihood, and then a unique number. For example, to create a brand new unlikely play-by-play text item for when a player hits a single, you would add the following line to the userPBP.properties file:

aSingle.unlikely.100=~TAB~~VELOCITY~ ~CONTACT~ to ~LOCATION~ ...\n~TAB~a base knock for ~BATTER~!

The \n in the example above adds the text that follows to a new line in the message window.  As a result, the play-by-play text above will produce output that will resemble this:

    hard line drive to left field ...
    a base knock for Rollins!

The following is an example of how to override one of the play-by-play text items located in the systemPBP.properties file.  Suppose that you want to override text that is displayed when a batter comes to the plate.  Adding the following line to the userPBP.properties file will replace the default "often" batter-up play-by-play item specified in systemPBP.properties:

batterUp.often.1=\n~BATTER~ takes his time as he approaches the plate.

The best way to create new play-by-play text items is to copy existing play-by-play items from the systemPBP.properties file and paste them into the userPBP.properties.  Next, change the likelihood, the number, and the play-by-play text.  You must restart the game before any changes will take effect. 

Please refrain from changing the systemPBP.properties file directly.  Instead, all custom play-by-play changes should be made to the userPBP.properties file.  This ensures that your changes will not be overwritten when installing upgrades.  In addition, if you make a mistake you will not destroy the system play-by-play settings.

Adding custom play-by-play can be a lot of fun.  Feel free to experiment!  In addition, visit digitaldiamondbaesball.com for videos that go into detail about how to customize play-by-play.