-
Notifications
You must be signed in to change notification settings - Fork 17
Beta testing
Beta-testing is getting other people to play your game with the purpose of finding bugs and other issues. It is vital that your game gets beta-tested, as there will be things you miss. Other people play in different ways, so will try different things. They will use different nouns, different verbs, different routes, have different ideas about how to solve a puzzle, different ideas about what is a puzzle.
That said, before beta-testing, be sure the game is as good as possible. Sending a game for beta-testing when you know there are errors wastes your time and your testers.
When you are ready for beta-testing, set settings.playMode
to "beta" and also set settings.version
in settings.js - it is important to track what version of your game is being tested.
There is a great article on beta-testing here, which goes into more detail, including what to do it you are the tester. You might also want to look at this thread on IntFiction.
Using a transcript is a great way to beta-test as the author can see exactly how the user got into that situation, and can see all the things the user did that failed. If the user tried fifteen verbs before hitting on the right one to solve the puzzle, you probably need to implement those fifteen verbs, even if they only say it does not work. Not all testers will want to use a transcript, and ultimately it is up to them, but it is great when they do because you can see everything they tried.
In my experience, testers can start to chat to the transcript, and it becomes almost a conversation. This is great; you receive much more feedback this way. I think the testers who do this enjoy the process more too.
In "beta" mode, a transcript is started automatically when the game starts, and a message will be displayed saying this is a beta-version, with the version number. You can change the default message by adding a function to code.js, for example:
lang.betaTestIntro = function() {
metamsg("This beta version " + settings.version + )
io.scriptStart()
}
When you upload a new version, make sure you have changed the version (hopefully your testers will tell you which version they were looking at, if they are not using the transcript).
If your tester chooses to use the transcript facility, she can add a comment at any point by typing a *
or a ;
at the start of the line, and then typing whatever she wants. At the end of the session SCRIPT SHOW or Crtl-Enter will display the transcript in a new tab (a link will allow the player to do this if the game has finished, and the text input is no longer there). This can be copy-and-pasted to the author, who can then quickly search through for errors and comments.
Obviously when you release your game, you should set settings.playMode
to "play".
These instructions are for beta-testers who are testing a game with no text input. We are going to use the "developer console", as that does allow input to be typed.
Press F12 (or Crtl-Shft-I or Crtl-Shft-J or via a menu) whilst in your browser and viewing the game tab to open the "Developer Tools" - as far as I can tell, this is the same for all browsers; they look a little different, but the same things are there.
The console will appear as a split screen with the web page. It may be at the right, the left or the bottom; there will be an option somewhere allowing you to move it where you want. I prefer to have it to the right. There will be various tabs; "Elements", "Console", and others. If you do not see the tabs, try dragging the divider between the web page and developer tools to make the latter larger.
The "Console" tab is the one you want. There may be text there already - just ignore it.
I want to start a transcript: This should happen automatically if the author set the play mode to "beta", but if it does not, paste this into the developer console:
saveLoad.transcriptStart()
I want to see the transcript: If you get to the end you should see a link to do this, but not or if you stop before reaching the end, paste this into the developer console:
saveLoad.transcriptShow()
This will open up a new tab with a button to click to save the transcript.
I want to add a comment: Any time you want to add a comment, make sure the cursor is in the developer console, then type c('
followed by your comment, followed by ')
, then press return. Your comment must not include single quotes, and line breaks are not allowed.
c('spelled hat wrong')
If all goes well, you will see a comment in the game text.
NOTE: When beta-testing, the transcript is reset each time you start the game. You MUST save the transcript as soon as you finish play, before closing the tab or browser or navigating elsewhere.
My personal approach is to get a couple of people on the TextAdventures forum to help, as they tend to be more forgiving, then family members to get an outsider's perspective, then ask for testers on IntFiction.
Be aware that beta-testers can get hard to find as the deadline for IFComp approaches at the end of September.
It is worth telling people the game is essentially just a web page, so there is nothing to install to get it to run, and no communication back to the server whilst playing.
I suggest breaking beta-testing up into rounds, and introducing new testers at each round. This avoids having six testers finds the same bugs, which is a waste of their time, but also of yours, as you have to go though lists of bugs trying to decide if that one has been resolved or not.
If you have thorough testers, use one per round. Of course, you will probably not know who is thorough until they report back so two at a time may be more realistic...
Remember to update the version each time you realise for testing. The transcript will automatically add the version, so you can then determine whether a tester was playing an older version of your game.
How many testers you use may depend on how many you can find as well as how complex your game is. Arguably you should keep throwing more testers at it until they can find nothing wrong, but that may not be practical. I used fifteen for The House on Highfield Lane.
Remember to credit your testers; you might want them to do it again for another game. If this is for a competition, you may get a lower score if you do not, as people will assume the game is untested.
Tutorial
- First steps
- Rooms and Exits
- Items
- Templates
- Items and rooms again
- More items
- Locks
- Commands
- Complex mechanisms
- Uploading
QuestJS Basics
- General
- Settings
- Attributes for items
- Attributes for rooms
- Attributes for exits
- Naming Items and Rooms
- Restrictions, Messages and Reactions
- Creating objects on the fly
- String Functions
- Random Functions
- Array/List Functions
- The
respond
function - Other Functions
The Text Processor
Commands
- Introduction
- Basic commands (from the tutorial)
- Complex commands
- Example of creating a command (implementing SHOOT GUN AT HENRY)
- More on commands
- Shortcut for commands
- Modifying existing commands
- Custom parser types
- Note on command results
- Meta-Commands
- Neutral language (including alternatives to "you")
- The parser
- Command matching
- Vari-verbs (for verbs that are almost synonyms)
Templates for Items
- Introduction
- Takeable
- Openable
- Container and surface
- Locks and keys
- Wearable
- Furniture
- Button and Switch
- Readable
- Edible
- Vessel (handling liquids)
- Components
- Countable
- Consultable
- Rope
- Construction
- Backscene (walls, etc.)
- Merchandise (including how to create a shop)
- Shiftable (can be pushed from one room to another)
See also:
- Custom templates (and alternatives)
Handing NPCs
- Introduction
- Attributes
- Allowing the player to give commands
- Conversations
- Simple TALK TO
- SAY
- ASK and TELL
- Dynamic conversations with TALK TO
- TALK and DISCUSS
- Following an agenda
- Reactions
- Giving
- Followers
- Visibility
- Changing the player point-of-view
The User Experience (UI)
The main screen
- Basics
- Printing Text Functions
- Special Text Effects
- Output effects (including pausing)
- Hyperlinks
- User Input
The Side Panes
Multi-media (sounds, images, maps, etc.)
- Images
- Sounds
- Youtube Video (Contribution by KV)
- Adding a map
- Node-based maps
- Image-based maps
- Hex maps
- Adding a playing board
- Roulette!... in a grid
Dialogue boxes
- Character Creation
- Other example dialogs [See also "User Input"]
Other Elements
- Toolbar (status bar across the top)
- Custom UI Elements
Role-playing Games
- Introduction
- Getting started
- Items
- Characters (and Monsters!)
- Spawning Monsters and Items)
- Systema Naturae
- Who, When and How NPCs Attack
- Attributes for characters
- Attacking and guarding
- Communicating monsters
- Skills and Spells
- Limiting Magic
- Effects
- The Attack Object
- [Extra utility functions](https://github.com/ThePix/QuestJS/wiki/RPG-Library-%E2%80%90-Extra Functions)
- Randomly Generated Dungeon
- Quests for Quest
- User Interface
Web Basics
- HTML (the basic elements of a web page)
- CSS (how to style web pages)
- SVG (scalable vector graphics)
- Colours
- JavaScript
- Regular Expressions
How-to
Time
- Events (and Turnscripts)
- Date and Time (including custom calendars)
- Timed Events (i.e., real time, not game time)
Items
- Phone a Friend
- Using the USE verb
- Display Verbs
- Change Listeners
- Ensembles (grouping items)
- How to spit
Locations
- Large, open areas
- Region,s with sky, walls, etc.
- Dynamic Room Descriptions
- Transit system (lifts/elevators, buses, trains, simple vehicles)
- Rooms split into multiple locations
- Create rooms on the fly
- Handling weather
Exits
- Alternative Directions (eg, port and starboard)
- Destinations, Not Directions
Meta
- Customise Help
- Provide hints
- Include Achievements
- Add comments to your code
-
End The Game (
io.finish
)
Meta: About The Whole Game
- Translate from Quest 5
- Authoring Several Games at Once
- Chaining Several Games Together
- Competition Entry
- Walk-throughs
- Unit testing
- Debugging (trouble-shooting)
Releasing Your Game
Reference
- The Language File
- List of settings
- Scope
- The Output Queue
- Security
- Implementation notes (initialisation order, data structures)
- Files
- Code guidelines
- Save/load
- UNDO
- The editor
- The Cloak of Darkness
- Versions
- Quest 6 or QuestJS
- The other Folders
- Choose your own adventure