Section author: ACF (webmaster@acf-quizbowl.com)

Playtesting

Terminology

  • Internal “asynchronous” playtesting (question-by-question)

    • As questions are written and edited, they may be playtested internally by other members of the editing team. This occurs asynchronously, with each member playing the question individually.

    • In this workflow, editors play questions via DMs with the bot. Each question may be discussed in an associated thread.

    • The conversion statistics are published to a new thread in a “results” channel (e.g. #results).

  • External “bulk” playtesting (packet-by-packet or category-by-category)

    • Once a set reaches the stage at which packets are being assembled, packets or categories may be playtested as a whole with a troupe of playtesters who are not on the editing team. This occurs in “bulk,” with the troupe at once hearing all of the questions in a given packet being read over audio.

    • In this workflow, playtesters give answers in a bulk playtesting channel. Playtesters use reactions to indicate their results for each question (e.g. 10/-5 for tossups; E/M/H/0 for bonuses). Each question may be discussed in an associated thread.

    • The conversion statistics and links to each question thread are published to a new thread in an index channel (e.g. #questions).

ACF Playtesting Bot

Note

It is strongly recommended that you use the ACF Production Server Template [1] for your production/playtesting server. The bot has been extensively tested in that framework, and using it will save you the significant amount of time necessary to set up all the necessary roles, permissions, and channels. Generally, the instructions in this document assume your server has been generated based on this template.

Instructions for Developers

See the “Instructions for Developers” section of the Playtesting Bot README.

Instructions for Editors

Make sure you have properly configured the bot by following the directions in the “Configuration” section of the Playtesting Bot README.

Asynchronous / Internal Playtesting

Workflow

TBC

Bulk / External Playtesting

If the live reading is performed properly, the bot will perform the following tasks:

  • Create a thread for each playtested question, for contained discussion

  • Auto-generate reacts for tossups / bonuses that playtesters can use to indicate their conversion

  • Generate an index in a separate channel (e.g. #questions) that links to each playtested question and displays its conversion statistics

The live reading requires the following steps, preferably performed by two separate individuals from the production team:

  • Reading

    • The questions should be read orally one-by-one over a voice channel.

    • It’s strongly recommended that you add the QuizBowlScoreTracker bot to your server, for ease in buzzing.

  • Pasting

    • The spoilered questions should be pasted into the playtesting text channel.

      • For tossups, the question should be pasted once a playtester buzzes and answers correctly.

      • For bonuses, the question should be pasted once playtesters have heard and answered all three parts.

    • Run each question from the packet / category Google Docs through the Paster Dingus, so that it will be auto-spoilered and formatted upon pasting in the channel.

https://raw.githubusercontent.com/ani-per/playtesting-bot/refs/heads/main/examples/bulk.png

Fig. 1 An example live reading workflow.

https://raw.githubusercontent.com/ani-per/playtesting-bot/refs/heads/main/examples/echo.png

Fig. 2 An example index for a packet in the #questions channel.

Workflow
  • To start reading a packet (e.g. Packet A), type !start A or !read A or !begin A in the playtesting text channel.

    • If a previous packet was being read, starting a new packet will also end the old packet and tally its reacts.

  • Type !read to start the session for the QuizBowlScoreTracker bot.

  • The reader should read each question orally one-by-one over a voice channel.

  • The reader should communicate to playtesters which answer is right or wrong so that the paster can paste in a timely manner.

  • The paster should paste the spoilered question at the right time, according to the instructions above.

  • Type !stop or !quit to finish playtesting the packet. This will also:

    • Reset the packet name

    • Tally reacts for the packet that was just read

  • Type !end to end the session for the QuizBowlScoreTracker bot.

Other commands that can be run at any time:

  • !packet or !round will display the current packet name.

  • !packet X, !status X, !round X, and !info X will display the count of questions in packet X.

  • !delete X or !purge X will delete packet X from the database and delete its index thread.

  • !tally or !count will tally the reacts for the current packet and publish the counts to the corresponding index channel.

  • !tally X or !count X will tally the reacts for packet X.

Note

The reader and/or paster should frequently remind players to react and spoiler answers, as they can often forget both in the flow of things.

Note

When playtesting packet-by-packet, make sure each pasted question includes its number (e.g. 1. This thing ...). This way, the bot’s question indexing will then also include the number.

Instructions for Playtesters

Asynchronous / Internal Playtesting

TBD

Bulk / External Playtesting

With the playtesting bot workflow, you can participate in bulk / external playtesting even if you are unable to attend the live reading of a given session.

During the live reading, you will be read the questions one-by-one by a member of the production team using a voice channel. You will use text to buzz and will click reacts on the question to indicate your conversion.

Important

You should always use spoiler tags when providing an answer, like so: ||answer||. This goes for both buzzing on tossups and answering bonuses.

This is important because other playtesters will continue to “play” the question via text regardless of your answer.

https://raw.githubusercontent.com/ani-per/playtesting-bot/refs/heads/main/examples/bulk.png

Fig. 3 An example live reading workflow.

Tossups
  • Type buzz to buzz.

  • When recognized, type your answer in spoiler tags (||answer||) or say your answer orally.

  • The reader will indicate orally or via text if you are right or wrong.

    • If you are right, an editor from the team will paste a spoilered version of the tossup.

    • If you are wrong, the reader will continue so that other players can buzz.

  • The reader will continue until either:

    • A playtester gets it right; or

    • Time is called

  • The spoilered tossup will be pasted in the text channel by a member of the editing team.

  • If another playtester got the tossup right, continue to play the pasted tossup via text in your head by clicking the spoilered phrases.

  • The bot will automatically generate these reacts on the pasted tossup:

    • 15 10 DNC -5

    • React based on your conversion, whether you answered live or not.

    • React 15 or 10 accordingly if you were right.

    • React -5 if you negged.

    • React DNC if you did not convert the tossup at the end. Don’t react DNC if you negged.

  • Go into the auto-generated tossup thread and indicate your answer, again using spoiler tags.

  • Use the thread to provide feedback.

Bonuses
  • Provide your answers during the reading for each bonus part.

  • The reader will indicate orally or via text which playtesters’ answer(s) are right, if any.

  • The bot will automatically generate these reacts on the pasted bonus:

    • E M H 0

    • The order of E M H will automatically match the order of difficulties.

    • React based on your conversion.

    • React 0 if you didn’t convert any of the parts.

  • Go into the auto-generated bonus thread and indicate your answer, again using spoiler tags.

  • Use the thread to provide feedback.

Playthrough
  • If you weren’t able to attend the live reading for a particular session, you can play through all the questions one at a time by going to the #questions channel in the server.

  • That channel will contain a list of index threads, one for each playtested packet and/or category.

  • Each thread indexes all the questions in that packet/category, along with the links to each question and their conversion stats.

  • For each question:

    • Click the link and play them by revealing the spoiler tags.

    • React based on your conversion as per the above directions.

    • Use the thread to provide feedback.

    • Click the Go to Index button in the following message to return to the index thread.

https://raw.githubusercontent.com/ani-per/playtesting-bot/refs/heads/main/examples/echo.png

Fig. 4 An example index for a packet in the #questions channel.