| Title: | An R Shiny App for Scouting Volleyball Match Files |
|---|---|
| Description: | Functions for scouting volleyball match files. |
| Authors: | Ben Raymond [aut, cre], Adrien Ickowicz [aut], Krystian Kowalski [ctb], Hugh Nguyen [ctb], Brady Williams [ctb], openvolley.org [org] |
| Maintainer: | Ben Raymond <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 1.1.4 |
| Built: | 2026-05-30 08:58:08 UTC |
| Source: | https://github.com/openvolley/ovscout2 |
Create a new datavolley match object
dv_create( match, more, teams, players_h, players_v, video_file, attacks = ov_simplified_attack_table(), setter_calls = ov_default_setter_calls_table(), winning_symbols = ov_default_winning_symbols(), zones_or_cones = "Z", regulation = "indoor rally point", comments )dv_create( match, more, teams, players_h, players_v, video_file, attacks = ov_simplified_attack_table(), setter_calls = ov_default_setter_calls_table(), winning_symbols = ov_default_winning_symbols(), zones_or_cones = "Z", regulation = "indoor rally point", comments )
match |
list or single-row data.frame: (optional) with components |
more |
list or single-row data.frame: (optional) with components |
teams |
data.frame: a 2-row data frame describing the home and visiting teams, with required columns |
players_h, players_v
|
data.frame: with required columns |
video_file |
string: (optional) path to video file |
attacks |
data.frame: as returned by |
setter_calls |
data.frame: as returned by |
winning_symbols |
data.frame: as returned by |
zones_or_cones |
string: "Z" or "C". Will be ignored if |
regulation |
string: "indoor rally point", "beach rally point", or "indoor sideout". Will be ignored if |
comments |
character: optional vector of length up to 5, of comments |
A datavolley object
x <- dv_create(teams = data.frame(team_id = c("TM1", "TM2"), team = c("Team 1", "Team 2")), comments = "Test file", players_h = data.frame(firstname = toupper(letters[1:7]), lastname = "Player", number = 1:7), players_v = data.frame(firstname = letters[10:15], lastname = "VisPlayer", number = 10:15)) ## enter the team lineups for set 1 x <- dv_set_lineups(x, set_number = 1, lineups = list(6:1, 15:10), setter_positions = c(2, 1))x <- dv_create(teams = data.frame(team_id = c("TM1", "TM2"), team = c("Team 1", "Team 2")), comments = "Test file", players_h = data.frame(firstname = toupper(letters[1:7]), lastname = "Player", number = 1:7), players_v = data.frame(firstname = letters[10:15], lastname = "VisPlayer", number = 10:15)) ## enter the team lineups for set 1 x <- dv_set_lineups(x, set_number = 1, lineups = list(6:1, 15:10), setter_positions = c(2, 1))
Enter the team lineups at the start of a set
dv_set_lineups(x, set_number, lineups, setter_positions, setters)dv_set_lineups(x, set_number, lineups, setter_positions, setters)
x |
datavolley: a datavolley object |
set_number |
integer: set number, 1–3 for beach or 1–5 for indoor |
lineups |
list: two-element list with numeric vectors of player numbers. Each lineup is
|
setter_positions |
integer: two-element integer vector giving the position on court of the two setters. At least one of |
setters |
integer: two-element integer vector giving the jersey numbers of the two setters. At least one of |
A modified version of x
Colours can be either hex strings or names, but if using names they must be recognized both by R and as CSS colour names.
ov_app_styling()ov_app_styling()
review_pane_width is expressed as a percentage of the browser window width
A named list of styling parameters
Default attack combination code table
ov_default_attack_table() ov_simplified_attack_table()ov_default_attack_table() ov_simplified_attack_table()
A tibble
ov_default_click_shortcuts apply when using scout_mode = "click", and ov_default_type_shortcuts apply when using scout_mode = "type"
ov_default_click_shortcuts() ov_default_type_shortcuts() ov_default_playstable_shortcuts()ov_default_click_shortcuts() ov_default_type_shortcuts() ov_default_playstable_shortcuts()
Shortcuts should be defined in terms of the printable representation of the key (e.g. "a", "$", "H", "Escape", "Enter"). See https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values for guidance. Shortcuts can optionally use modifier keys: "Ctrl-x" means pressing the control key and x simultaneously; similarly Alt-x, Meta-x, Shift-x. Be aware that some keys are hard-coded for specific functionality and might cause problems if you use them as shortcuts (e.g. "Enter", "Tab"), and some keys have browser-level or operating-system-level handling that cannot be overridden.
A named list
Default compound skills table
ov_default_compound_table()ov_default_compound_table()
A tibble
These key remappings only apply to input into the scouting bar (when the scouter has been started with scout_mode = "type").
ov_default_key_remapping(scout_mode = "click")ov_default_key_remapping(scout_mode = "click")
scout_mode |
string: either "click" for the guided point-and-click scouting interface, or "type" for the typing-based interface. Currently remapping has no effect with "click" |
A named list
Default scouting (type and evaluation for each skill) table
ov_default_scouting_table()ov_default_scouting_table()
A tibble
Default setter calls table (where the setter has instructed the middle hitter to run)
ov_default_setter_calls_table(data_type = "indoor")ov_default_setter_calls_table(data_type = "indoor")
data_type |
string: "indoor", "beach". The returned table will be empty for "beach" |
A tibble
Default winning symbols table
ov_default_winning_symbols()ov_default_winning_symbols()
A tibble
This is a helper function to install lighttpd. Currently it only works on Windows platforms. The lighttpd bundle will be downloaded from http://lighttpd.dtech.hu/ and saved to your user appdata directory.
ov_install_lighttpd(force = FALSE)ov_install_lighttpd(force = FALSE)
force |
logical: force reinstallation if lighttpd already exists |
the path to the installed executable
## Not run: ov_install_lighttpd() ## End(Not run)## Not run: ov_install_lighttpd() ## End(Not run)
Launch a Shiny app for scouting
ov_scouter( dvw, video_file, court_ref, season_dir, auto_save_dir, scout_mode = "click", pause_on_type = 500, scoreboard = TRUE, ball_path = FALSE, playlist_display_option = "dv_codes", review_pane = TRUE, playback_rate = 1, scouting_options = ov_scouting_options(), app_styling = ov_app_styling(), click_shortcuts = ov_default_click_shortcuts(), type_shortcuts = ov_default_type_shortcuts(), playstable_shortcuts = ov_default_playstable_shortcuts(), key_remapping, scout_name = "", show_courtref = FALSE, dash = FALSE, host, launch_browser = TRUE, prompt_for_files = interactive(), ... )ov_scouter( dvw, video_file, court_ref, season_dir, auto_save_dir, scout_mode = "click", pause_on_type = 500, scoreboard = TRUE, ball_path = FALSE, playlist_display_option = "dv_codes", review_pane = TRUE, playback_rate = 1, scouting_options = ov_scouting_options(), app_styling = ov_app_styling(), click_shortcuts = ov_default_click_shortcuts(), type_shortcuts = ov_default_type_shortcuts(), playstable_shortcuts = ov_default_playstable_shortcuts(), key_remapping, scout_name = "", show_courtref = FALSE, dash = FALSE, host, launch_browser = TRUE, prompt_for_files = interactive(), ... )
dvw |
string or datavolley: either the path to a dvw or ovs file or a datavolley object (e.g. as returned by |
video_file |
string or |
court_ref |
data.frame or string: data.frame with the court reference (as returned by |
season_dir |
string: optional path to a directory with other dvw/ovs files from this season |
auto_save_dir |
string: optional path to a directory where the dvw will be saved automatically after each rally |
scout_mode |
string: either "click" for the guided point-and-click scouting interface, or "type" for the typing-based interface |
pause_on_type |
numeric: if greater than 0 and using |
scoreboard |
logical: if |
ball_path |
logical: if |
playlist_display_option |
string: what to show in the plays table? Either "dv_codes" (scouted codes) or "commentary" (a plain-language interpretation of the touches) |
review_pane |
logical: if |
playback_rate |
numeric: starting playback rate of the video (1.0 is normal speed, higher is faster) |
scouting_options |
list: a named list with entries as per |
app_styling |
list: named list of styling options, as returned by |
click_shortcuts |
list: named list of keyboard shortcuts, as returned by |
type_shortcuts |
list: named list of keyboard shortcuts, as returned by |
playstable_shortcuts |
list: named list of keyboard shortcuts that apply when in the plays table, as returned by |
key_remapping |
list: a named list of key remappings, with entries as per |
scout_name |
string: the name of the scout (your name) |
show_courtref |
logical: if |
dash |
logical: support live MPEG DASH streams? If not specified, will default to |
host |
string: the IP address of this machine. Only required if you intend to run the app on this machine but connect to it from a different machine (in which case use |
launch_browser |
logical: if |
prompt_for_files |
logical: if |
... |
: extra parameters passed to |
A note on scouting_options
If a *.ovs file (i.e. a partially-scouted file, that was previously scouted using this app) has been provided in the dvw argument, then it will contain the scouting options used during the previous scouting session. Those options will be re-used EXCEPT if scouting_options are also provided here. Any scouting options provided here via the scouting_options argument will override options saved in the .ovs file. Thus, it is recommended that scouting_options not be provided here along with a .ovs file unless absolutely necessary. If necessary, only the specific, relevant elements of the scouting_options list should be provided. Note that *.dvw files do not contain saved options, only .ovs files that were scouted with this app.
## Not run: ov_scouter("demo") ## End(Not run)## Not run: ov_scouter("demo") ## End(Not run)
Scouting options
ov_scouting_options( end_convention = "actual", nblockers = TRUE, default_nblockers = NA, transition_sets = FALSE, set_quality = FALSE, attacks_by = "codes", zones_cones = "Z", team_system = "SHM3", setter_dump_code = "PP", second_ball_attack_code = "P2", overpass_attack_code = "PR", default_scouting_table = ov_default_scouting_table(), compound_table = ov_default_compound_table(), attack_table = ov_simplified_attack_table(), setter_calls = "none", setter_calls_table = ov_default_setter_calls_table() )ov_scouting_options( end_convention = "actual", nblockers = TRUE, default_nblockers = NA, transition_sets = FALSE, set_quality = FALSE, attacks_by = "codes", zones_cones = "Z", team_system = "SHM3", setter_dump_code = "PP", second_ball_attack_code = "P2", overpass_attack_code = "PR", default_scouting_table = ov_default_scouting_table(), compound_table = ov_default_compound_table(), attack_table = ov_simplified_attack_table(), setter_calls = "none", setter_calls_table = ov_default_setter_calls_table() )
end_convention |
string: either "actual" or "intended". Is the end coordinate of an attack or serve the actual end location (where the ball contacted the floor or out of bounds area), or the intended one. The actual might differ from the intended if there is a block touch or the ball hit the net. If "actual", and a block touch is recorded, then the end location of the attack will not be used for the dig location (the dig location will be missing) |
nblockers |
logical: scout the number of blockers on each attack? |
default_nblockers |
integer: if |
transition_sets |
logical: scout sets in transition? If |
set_quality |
logical: are we assessing set quality? If |
attacks_by |
string: "codes" (X5, V5, etc) or "tempo" (high, medium, quick) |
zones_cones |
string: record attack directions as "Z"ones or "C"ones (ignored when scouting in 'click' mode, which always uses zones. But after click-scouting you can export your dvw with attack directions as cones, if you wish) |
team_system |
string: the assumed system that teams are using to assign e.g. passing and hitting responsibilities
|
setter_dump_code |
string: the attack combination code for a setter dump |
second_ball_attack_code |
string: the attack combination code for a second-ball attack |
overpass_attack_code |
string: the attack combination code for an attack on an overpass |
default_scouting_table |
tibble: the table of scouting defaults (skill type and evaluation) |
compound_table |
tibble: the table of compound codes |
attack_table |
tibble: table of attack codes (X5, V5, etc) as returned by |
setter_calls |
string: either "none", "reception" (setter calls in reception phase only), or "both" (setter calls in reception and transition) |
setter_calls_table |
tibble: table of setter calls (where the setter instructs the middle to run) as returned by |
A named list
Functions for scouting volleyball match files.
Maintainer: Ben Raymond [email protected]
Authors:
Adrien Ickowicz
Other contributors:
Krystian Kowalski [contributor]
Hugh Nguyen [contributor]
Brady Williams [contributor]
openvolley.org [originator]
Useful links: